我有以下情况:
计算机 A:,198.51.100.8
网络掩码255.255.255.0
计算机 B:,203.0.113.9
网络掩码255.255.255.0
两台计算机位于同一 LAN 段上;两种情况下均未指定默认网关。
为了让这两台计算机相互通信,我添加了两个静态路由,如下所示:
route add 203.0.113.9 mask 255.255.255.255 198.51.100.8
不过,我更愿意通过指定网络接口,而不是通过指定网关 IP 地址。
在 Linux 中可以使用以下命令来实现:
ip route add 203.0.113.9 dev eth0
在 FreeBSD 中也类似:
route add 203.0.113.9/32 -iface fxp0 -cloning
但是,我不知道如何在 Windows 上执行此操作。理想情况下,我想执行如下操作:
route add 203.0.113.9 mask 255.255.255.255 if 2
但这只会打印出命令的用法route
,这告诉我我做错了。我也尝试过使用netsh
,它告诉我:
> netsh routing ip add persistentroute 203.0.113.9 255.255.255.255 "Local Area Connection"
Specify the next-hop for non point-to-point interfaces.
有什么想法或建议吗?
更新:当我最初发布这个问题时,我正在使用 Windows XP。但我忘了提到这一点。
我将保留 Grizly 的原始答案,因为它对我的原始问题是正确的。但如果您使用的 Windows 版本比 XP/2003 更新,请尝试其他答案之一。
答案1
在 Windows 上可能无法实现
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/route.mspx
引用:对于本地连接的子网路由,网关地址是分配给连接到子网的接口的 IP 地址。
答案2
在 Windows 中,您可以根据接口添加路由,而无需通过传递网关0.0.0.0
来了解网关
这给出了如下结果:
route add <IPtoRoute> mask <MaskOfTheIp> 0.0.0.0 IF <InterfaceNumber>
route add 203.0.113.9 mask 255.255.255.255 0.0.0.0 IF 2
答案3
我在 Windows 7 Enterprise 中使用 Juniper Junos Pulse VPN 客户端也遇到了同样的问题。
我遇到了一个问题,因为它捕获了所有可能的 IPv4 地址并将它们路由到拨号连接:
Active Routes:
Network Destination Netmask Gateway Interface Metric
1.0.0.0 255.0.0.0 On-link XX.XX.XX.XX 11
2.0.0.0 254.0.0.0 On-link XX.XX.XX.XX 11
4.0.0.0 252.0.0.0 On-link XX.XX.XX.XX 11
8.0.0.0 248.0.0.0 On-link XX.XX.XX.XX 11
16.0.0.0 240.0.0.0 On-link XX.XX.XX.XX 11
32.0.0.0 224.0.0.0 On-link XX.XX.XX.XX 11
64.0.0.0 192.0.0.0 On-link XX.XX.XX.XX 11
128.0.0.0 128.0.0.0 On-link XX.XX.XX.XX 11
我不想让所有流量都通过 VPN,因此,如果有人需要,我编写了一个小的 cmd 文件来删除这些路由,然后通过指定正确的接口来安装我唯一需要的路由 (10.0.0.0),而无需指定网关。
您可以使用它来动态检索接口号。
@rem Get the interface number
set IF=
for /f "tokens=1,8 delims=. " %%A in ('route print') do @if /i "%%B" equ "Juniper" set IF=%%A
@rem If interface is not found, terminate quietly
if not defined IF exit /b
for %%A in (1 2 4 8 16 32 64 128) do @route delete %%A.0.0.0
route add 10.0.0.0 mask 255.0.0.0 0.0.0.0 IF %IF%
答案4
您不能在永久表中省略网关。有些人建议将接口卡 IP(用户端)放在那里,这在 Windows XP 中是可以接受的。但它不再有效。在这种情况下,操作系统将继续敲击每个网络接口,至少直到缓存被填充;这不是一个好的行为,并且与空路由表没有区别。
我发现将目标 IP 作为网关至少在 Windows 10 上可以解决问题。但目前我没有足够的统计数据来确认其 100.1% 的真实性。