Windows下使用N2N组建虚拟局域网(点对网)
之前分别写过CentOS、OpenWRT下通过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 条评论
如果设置好后只能访问到B的物理网IP,B局域网内的访问不到,可以在n2n把网卡共享关闭,到控制面板手动开启共享网卡,就能访问B局域网内了