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

Linux, N2N, Windows, 折腾 2020/09/09

之前写了一篇 OpenWRT下使用N2N组建虚拟局域网,今天记录一下高级一点的玩法

一、能实现啥

比如前文所说,我在家里的路由器上、公司的台式机上分别跑的N2N,并且已成功组建虚拟局域网

也就是说,目前我已经可以在公司成功访问到家里的路由器

现在我想通过公司的台式机,不光能访问到路由器,还想访问到挂在路由器下的NAS,该怎么办?

方案1:NAS上也启动N2N,并指定一个IP

方案2:往下看

二、原理释义

其实N2N已经提供了解决方案

在edge(N2N客户端)启动参数中,有一项 -r 参数

-r Enable packet forwarding through n2n community.

极简略的一句参数描述 :doge:

强行解释一下:

比如客户端A、B,分属两个不通的物理局域网LAN1(家里)、LAN2(公司),当A和B均使用 -r 参数,组建虚拟局域网后,两个原本不相干的物理局域网,也可以互相打通

三、开始折腾

台式机

在EasyN2N的附加参数中,直接添加 -r 参数,保存重启N2N

路由器

edge的启动命令中加入 -r 参数

#参数 -a 为指定一个虚拟局域网IP
#参数 -c 为指定一个组名称
#参数 -l 为服务端IP:端口
#参数 -f 表示前台运行(方便调试,待一切正常后,可以去掉-f参数,使其后台运行)
#参数 -r 表示允许数据包在同虚拟小组间转发
edge -a 192.168.123.1 -c bugxia -l 77.77.77.77:9527 -f -r

此时,还不能正常访问到对方物理局域网下的设备,需要添加路由表

四、路由表

Windows

管理员权限执行CMD

先捋一下,我的物理局域网下设备(NAS等)分配的是 192.168.3.x 的IP,比如NAS 真实局域网IP为 192.168.3.202

现在,我想在公司的台式机上,通过N2N,访问到NAS,那么添加路由表的命令就可以这样写

route add 192.168.3.0 mask 255.255.255.0 192.168.123.3

中文意思:任何目的地为 192.168.3.x(我家里的真实局域网设备) 的数据包,都会经过 192.168.123.3(我路由器的虚拟局域网IP) 网关来转发

OpenWRT

回到家里的路由器这边,因为OpenWRT涉及一些防火墙的规则,会导致单边不通,所以需要在路由器这边的防火墙中添加放行规则

不啰嗦,直接上命令 :二哈:

#修改为自己的虚拟局域网IP段
iptables -t nat -A POSTROUTING -s 192.168.123.0/24 -j MASQUERADE
iptables -A forwarding_rule -s 192.168.123.0/24 -j ACCEPT

五、测试

在公司台式机上直接访问家里的NAS http://192.168.3.202:5000/

成功!

本文标签:


7条评论

  • Longtianmu 评论于

    您好,我用的Openwrt 61内核 N2N2.7R525,运行显示添加了supernode就退出了,咋回事?

    • Bug侠 评论于

      @Longtianmu “运行显示添加了supernode就退出了”,这句话不太理解……

      • Longtianmu 评论于

        @Bug侠 我的问题。。。。-c和-k没隔开他不能识别
        现在是新问题了,在组建网对网时路由器一侧已经可以ping通对应IP但是那个‘点’还没法ping回家庭内网

      • Longtianmu 评论于

        @Bug侠 没事了 我忘记添加路由表了

  • 评论于

    请问一下,服务端加了-r 客户端如果不加会不会影响基础功能 我现在是通过在一个内网edge上开启ccp代理 然后先连接n2n再连接代理服务器实现点对网,如果用-r参数再加一条静态路由 是不是就不需要代理服务器了

    • Bug侠 评论于

      @魂 服务端(supernode)没有 -r 参数,-r 参数只有客户端(edge)才有,加不加均不影响基础功能。目前我的方案就是本文所述,就是你说的-r参数+路由表,打通两个物理局域网

  • Svenmax 评论于

    站长,这是不是就是我之前一直想弄得,打通两个不同局域网的客户端?
    还是要按群友之前的思路?打通两个sn,这样延迟是不是增加了?

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