n2n结构图(图自互联网)
N2N是一款十分简单且强大的p2p组网软件。它可以实现组网和p2p直连。只需要拥有一台服务端,任何主机都可以接入进来做为客户端。在本篇文章,将使用OpenWrt做为服务端来搭建组网。事不宜迟,开干~
- 首先,选择一台具有公网ip的vps。这里的VPS不能使用基于OpenVZ架构的vps
- 在vps上安装带有N2N的OpenWrt固件
- 安装完成后,打开Luci后台,并进入N2N设置界面
- 在界面中同时开启Edge节点和Supernode节点
- 在edge设置中,无需修改隧道设备名称,接口模式选择static(DHCP也可以,但是还未测试),设置一个自定义的内网IP,子关掩码。MTU请修改为1500以下,Supernode节点和端口请保持和下方supernode设置一致。N2N网络组名称和密码也可以自定义,但是其他客户端需和此处保持一致。勾选允许数据包转发
到这里,服务端就搭建完成了。您可以通过N2N Linux客户端或Windows客户端配置相应的设置以连入网络。在Linux下,若您想通过N2N客户端访问NAT内网下其他主机,您只需对iptables做出以下改变:
iptables -t nat -I POSTROUTING -j MASQUERADE && service iptables save
之后,在命令中执行:
ip route add 192.168.0.0/24 via 10.0.0.2
PS:这里的192.168.0.0/24指的是NAT子网,10.0.0.2指的是Linux通过N2N获得的IP地址。
同时,开启ip_forward,命令如下:
echo 1 > /proc/sys/net/ipv4/ip_forward ** 临时开启
编辑/etc/sysctl.conf,修改net.ipv4.ip_forward = 1 ** 永久开启
上面的编辑保存后,执行:sysctl -p
到这里,就算完全完成了,可以通过内网间的设备互ping来进行测试。但是以上的ip route命令仅限于重启之前有效。若希望它永久有效,可以把该命令加入/etc/rc.local,并给予/etc/rc.local读写执行权限。
Enjoy~
[10.4更新] 若出现无法ping通其他N2N内网下Linux主机,请参阅本文章:ZeroTier内网主机互ping时出现destination host unreachable的解决方案
Ref: https://4fk.me/post/n2n-interconnection
📮Comments