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

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

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

一、能实现啥

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

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

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

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

方案2:往下看

二、开始折腾

台式机

在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/

本文标签:


20条评论

  • 老K 评论于 回复

    您好,能问下,老毛子固件里怎么架设N2N的服务器吗。经常跟朋友联机。想直接在路由器上建一个服务端,但是openwrt搞不太明白。如果您有空的话。方便出一个教程吗。

  • liekong1991 评论于 回复

    试了一下貌似不用添加防火墙规则也行的

  • mrjia 评论于 回复

    这已经N2N了,openwrt直接端口转发不行吗。转发nas的端口,然后置界用openwrt的ip。

    • Bug侠 评论于 回复

      @mrjia
      转发也是可以的,但是这么做肯定是有理由的
      1.比如路由器已经占用了80端口,转发NAS的80到8080多不方便,另外局域网内还有其他的设备
      2.收藏夹存的是原始地址,这样做可以使我在公司,地址不变的情况下访问到NAS等 :笑哭:

  • ADAake 评论于 回复

    window 下 写 route add 192.168.3.0 mask 255.255.255.0 192.168.123.3
    我想两个 路由器之间 的网络互通,按你这个方式两边路由器(openwrt)加上 这个可以吗?
    openwrt route 命令跟windows 是不是不一样
    route add –net 192.168.3.0 netmask 255.255.255.0 gw 192.168.123.3好像不对

    • wang 评论于 回复

      @ADAake
      openwrt可以建立静态路由规则实现两段局域网互访。也可以直接创建iptables规则实现。

  • August 评论于 回复

    不好意思,问一个比较简单的问题,刚接触这个东西,
    我想问问什么路由器可以直接运行n2n的edge,可以实现自动登录和分配地址?

  • xiaomengxin 评论于 回复

    站长,请问我如果想通过一个centos来连接这个centos所属的内网的其他机器应该怎么配置呢?

    • Bug侠 评论于 回复

      @xiaomengxin
      既然都同属一个内网下了,直接走内网不行吗? :惊讶:
      是我理解错了……吗

  • 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,这样延迟是不是增加了?

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