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端物理网下的其他设备



9条评论

  • ccc 评论于 回复

    虚拟网ip获取失败,请检查日志,这该怎么办

  • ww 评论于 回复

    公司的win访问家里的unraid所在局域网,win上加路由表,unraid上加iptables -t nat -A POSTROUTING -j MASQUERADE就好了,谢谢~

  • jacky 评论于 回复

    Centos这种路由重启就没有了,如何添加永久路由?试了几种方未能都无效

    • Bug侠 评论于 回复

      @jacky
      /etc/rc.local里添加路由启动项该可以吧

      • jacky 评论于 回复

        @Bug侠
        OK了,谢谢

  • jacky 评论于 回复

    用这种方式流量都走的超级节点中转吗?

  • 007 评论于 回复

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

    • Bug侠 评论于 回复

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

      • 007 评论于 回复

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

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