如何强制Windows虚拟机访问192.168.100.1的SMB流量通过指定隔离网络接口B
如何强制Windows虚拟机访问192.168.100.1的SMB流量通过指定隔离网络接口B
看了你的问题和路由表,我发现核心问题出在你设置的192.168.100.1路由配置上——你给同一子网的目标IP指定了网关,这反而让Windows无法正确识别这条路由,导致它 fallback 到默认路由走接口A了。下面是一步步的解决方法:
第一步:删除错误的现有路由
首先把你之前添加的有问题的192.168.100.1路由删掉,打开管理员命令提示符运行:
route delete 192.168.100.1 mask 255.255.255.255
如果是持久路由,也一并清理:
route -p delete 192.168.100.1 mask 255.255.255.255
第二步:添加正确的On-Link路由
因为192.168.100.1和你的接口B(192.168.100.186)在同一个子网,不需要指定网关,直接设置On-Link路由,强制流量走接口B。
首先找到接口B的索引编号:
运行route print,找到192.168.100.186对应的Interface列数字(比如假设是12)。
然后添加临时路由:
route add 192.168.100.1 mask 255.255.255.255 0.0.0.0 if 12 metric 1
如果要添加持久路由(重启后依然生效),加上-p参数:
route -p add 192.168.100.1 mask 255.255.255.255 0.0.0.0 if 12 metric 1
第三步:清除ARP缓存避免旧缓存干扰
有时候Windows会缓存错误的MAC地址映射,导致流量走错误接口,运行命令清除ARP缓存:
arp -d *
第四步:验证配置是否生效
- 运行
route print,找到192.168.100.1的条目,确认:Network Destination是192.168.100.1,Netmask是255.255.255.255Gateway显示为On-linkInterface是192.168.100.186,Metric是1
- 用
tracert测试路径:
正常情况下,第一跳应该直接到达目标(没有中间网关),说明流量走接口B了。tracert 192.168.100.1
额外排查:如果还是不生效
如果以上步骤后流量依然走接口A,可以尝试强制绑定SMB端口的源IP:
打开管理员命令提示符运行:
netsh interface ipv4 add addressportrule name="你的接口B名称" destination=192.168.100.1/32 destinationport=445 protocol=tcp action=allow localip=192.168.100.186
(接口B名称可以通过netsh interface ipv4 show interfaces查看,比如“Ethernet 2”)
备注:内容来源于stack exchange,提问作者notepass
相关产品推荐
相关产品推荐

