CentOS下使用N2N组建虚拟局域网(点对网)

N2N, 折腾 2021/01/02

一、准备

1.物理网

两台物理机,分属不同的物理局域网下,记为A和B,其中

A的物理内网IP段为 192.168.3.0/24,B的物理内网IP段为 172.21.0.0/24

2.组建N2N虚拟局域网

A端启动命令(虚拟网IP为 192.168.123.4

edge -a 192.168.123.4 -c bugxia -l 77.77.77.77:1234 -r -f

B端启动命令(虚拟网IP为 192.168.123.5

edge -a 192.168.123.5 -c bugxia -l 77.77.77.77:1234 -r -f

二、添加路由

此时在A\B两端通过虚拟网IP已经可以互相Ping到对方,但如果想要访问到对方物理网下的其他客户端,则必须得添加路由表

在这篇文章里已经有阐述,这里就不多啰嗦 OpenWRT下使用N2N组建虚拟局域网(网对网)

1.开启CentOS的路由转发功能

echo "1" > /proc/sys/net/ipv4/ip_forward
sysctl -p

2.添加路由表

A端:

route add -net 172.21.0.0/24 gw 192.168.123.4

B端:

route add -net 192.168.3.0/24 gw 192.168.123.5

检查一下路由表对不对

route -n

三、iptables

A\B端分别添加

iptables -t nat -A POSTROUTING -j MASQUERADE

四、测试

在A端 ping B端物理网下的其他设备

在B端 ping A端物理网下的其他设备



3条评论

  • 007 评论于 回复

    那作者你有没有试过让超级节点自动下发回边缘节点所在局域网路由?毕竟这个手动添加路由的方案在安卓和苹果手机上行不通。那么这个N2N就只能做到网对网,并不能做到动态多点隧道方案。

    • Bug侠 评论于 回复

      @007
      是的,相比zerotier这样的在路由方面已经很完善的工具,n2n还是有不足的地方。不过我做的还是以n2n为底的套壳工具,核心代码我也玩不转,只能在能力范围内想想办法(比如添加一个手动管理路由的UI等)

      • 007 评论于 回复

        @Bug侠
        对了,作者,这个光写路由好像还不够,还是无法做到网对网,报Destination Host Unreachable这个错误。

    评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)

    温馨提示

    1.请考虑提问别人前,是否需要使用「请问」「谢谢」等这样的词?

    2.请回想一下,是否仔细阅读过文章?提出的问题文章内是否已经释疑?