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

N2N 2022/03/30

之前分别写过CentOS、OpenWRT下通过N2N实现网对网互通的文章

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

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

有朋友问,没有Linux或者软路由环境,N2N组网的双方都是Windows,该如何实现这个功能?

环境

两台物理机(Win10&11,Win7未测试,且均已关闭防火墙),分属不同的物理局域网下,记为A和B,其中

A的虚拟IP为 192.168.123.9 ,B的虚拟IP为 192.168.123.101

B的物理网IP为 192.168.3.101 ,B的物理网IP段为 192.168.3.0/24,B物理网段内有一台NAS记作C 192.168.3.200

现在,想通过N2N在A端访问到B端物理网下的这台NAS,实现 A → 虚拟网 →  B → 物理网 →  C ,如下图

那么在上述数据流向中,B充当连接A—C间的网关角色,转发A—C间的数据。

1.B端开启IP路由转发

这里的 IP路由 其实就是Linux下的 ip forward,系统默认关闭,需手动开启

方法1

重启电脑生效

方法2

开启IP转发功能,使用PowerShell(非CMD)执行命令

Set-NetIPInterface -Forwarding Enabled

检查开启状态,同样使用PowerShell(非CMD)执行命令

Get-NetIPInterface | Select-Object ifIndex,InterfaceAlias,AddressFamily,ConnectionState,Forwarding | Sort-Object -Property IfIndex | Format-Table

截图可以看到IP转发已开启(Enable),否则是关闭状态(Disable)

方法3

注册表定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

修改 IPEnableRouter 的值为 1

然后重启电脑,命令行输入 ipconfig /all 查看是否开启

2.B端开启网络共享

这里的网络共享,可以理解为桥接、或者NAT,目的是打通两张网卡(物理网卡、虚拟网卡)

另外我这边环境是Win10和Win11,在Win7下未测试,请自测

方法1

在EasyN2N里分别选择要共享的物理网卡和N2N所使用的虚拟网卡,点击共享

注:根据机器情况,这里可能会出现很多网卡,通过本机局域网IP地址找到物理网卡;虚拟网卡若未连接,没有IP显示,则会显示网卡名,TAP-Windows Adapter V9

再次下拉菜单,可以看到已设置为共享状态(公有共享为物理网卡,私有共享为虚拟网卡)

方法2

找到B端本机的物理网网卡(非TAP虚拟网卡)

jie

右键 — 属性 — 共享,勾选共享,确认

注:部分系统下,此界面可能会出现选择网卡的选项,选择本机虚拟网卡即可

此时物理网卡状态改变

为了防止重启后共享状态失效,可以修改ICS(Internet Connection Sharing)服务为自启动

重启一下NAN

3.A端写路由表

举个例子,A要经过B到C去,但是怎么走?A端系统默认是不知道的,需要指路。

所以需要在A端通过添加路由表的方式来告知数据应该怎么分发。

概括一下:在A端任何目的地为 192.168.3.x(B端物理网下设备) 的数据包,都会经过 192.168.123.101(B的虚拟IP) 网关来转发

目标IP:192.168.3.0  掩码:255.255.255.0  网关:192.168.123.101

方法1

在 EasyN2N 里添加

方法2

管理员权限执行CMD

#参数 -p 可以将添加的路由设置为永久有效,重启电脑不会丢失路由
route add 192.168.3.0 mask 255.255.255.0 192.168.123.101 -p

4.A\B两端分别添加参数

-r

5.测试

A端 ping C的物理IP

说明

上述操作仅实现了点对网(客户端A访问到B的物理网的任意设备),并且B端物理网的设备无法通过B反向访问到A。

若要实现客户端B访问到A物理网的任意设备,则需要再按本文分别在A\B操作一遍,但也仅仅只是实现了反向的点对网。

若要实现网对网(比如A物理网到B的物理网互通),还需要对A\B的主路由进行操作,通过指定静态路由等方式实现。

这里就略了,以后再写吧。



22 条评论

  • du 评论于 回复

    教材真棒,终于搞好了

  • 花落残剑 评论于 回复

    可以做到,A和B的链接,A到C还是不通。。。不知道哪里出了问题

  • marche 评论于 回复

    点赞 好评 PC和openwrt两边通了

  • 憨狗 评论于 回复

    对了我这变开启网络共享ip会自己虚拟网卡的IP会自己变成192.168.137.1所以我就直接用这个网段来转发了

  • 憨狗 评论于 回复

    我也是同样错误,做法和教程一模一样最后还是访问不了内网,不过最后我实在没招了试着换成免费的服务器,没想到,啪的一下好了,原来是我自建的服务器有问题导致的问题。改天我自己捣鼓一下服务器看看能不能整好,毕竟公开的服务器用着很慌。

    • wubozh 评论于 回复

      @憨狗
      共享后n2n风卡的IP会变成192.168.137.1,然后重新设置n2n网卡的IP为你的虚拟网段,再重启n2n就正常了。我在这里卡了半天。

  • 傻狍子 评论于 回复

    禁用“快速启动”功能!
    禁用“快速启动”功能!
    禁用“快速启动”功能!
    重要的事情说三遍!

  • km 评论于 回复

    大神您好,按照以上顺序A、B端已经多种方法检查无误,但只能点对点,点对网依旧未通,请问-r 参数只是A、B端填入-r 即可吗?已尝试参数-r 或-r 空格网段(-r 192.168.2.0)或 -r=网段(-r=192.168.2.0)

    已检查:
    一、B端开启IP路由转发
    1、 IPEnableRouter 的值为 1
    2、重启电脑后CMD的IP路由一起用 是

    二、B端开启网络共享
    1、按照方法1在 EasyN2N 设置后检查方法2无误,并修改ICS(Internet Connection Sharing)服务为自启动后重启电脑

    三、A端写路由表
    1、在 EasyN2N 里添加目标IP 192.168.2.0(B、C端网段) 掩码255.255.255.0 网关172.30.142.8(B端 EasyN2N 虚拟网IP)
    2、CMD 输入route print回车 192.168.2.0 255.255.255.0 172.30.142.8无误,跳跃点数1

    四、A\B两端分别添加参数
    1、A、B端附加参数加-r 保存→重启
    2、A、B端附加参数加-r 192.168.2.0 保存→重启
    3、A、B端附加参数加-r=192.168.2.0 保存→重启

    五、测试
    1、点对点通畅
    2、点对网不通

    六、望大神赐教,感谢

    • km 评论于 回复

      @km
      服务器是腾讯云,只开放了9527端口

    • Bug侠 评论于 回复

      @km
      不好意思,回复的晚了,解决了吗?我又审阅了本文操作,没有问题的。另外 -r 参数是单独使用的,只有一个【-r】,没有后面其他的参数

      • km 评论于 回复

        @Bug侠
        能正常使用了,感谢回复

        • 花落残剑 评论于 回复

          @km
          点对点成功了,点对网问题你怎么解决的呀

  • jzaiai 评论于 回复

    按以上方法,还是实现不了,A 为 阿里云服务器,访问不到 我的笔记本 物理网卡 下的设备;能留个微信嘛?

    • Bug侠 评论于 回复

      @jzaiai
      可能还是哪里有问题,本文的方法已经经过多位朋友试验了,没问题的。EasyN2N关于软件页面内有群号,群主即为我

  • 006 评论于 回复

    我这不行啊,只能访问到B的物理网IP,B局域网内的还是访问不到。

    • Bug侠 评论于 回复

      @006
      我这边,还有几个网友都是测试没问题的。可能还是哪里操作的有问题或者其他方面的原因,具体得逐一排查。

      • 008 评论于 回复

        @Bug侠
        遇到同样的问题

    • znjt 评论于 回复

      @006
      兄弟,后来怎么解决的啊?我也遇到同样的问题了

      • hzh 评论于 回复

        @znjt
        兄弟我也遇到相同的问题,如何解决的?

  • 007 评论于 回复

    提示一下作者,你这个还只是点对点或者点对网,真正网对网应该是两头的出口路由要有指向其双方边缘节点的路由表才可以。

    • Bug侠 评论于 回复

      @007
      Sorry,感谢指正

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