我有以下情况:
计算机 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。但我忽略了提及这一点。
我会留下灰熊的原始答案,因为它对我最初的问题是正确的。但是,如果您使用的是比 XP/2003 更新的 Windows 版本,请尝试其他答案之一。
0.0.0.0
在 Windows 中,您可以通过作为网关传递,在不知道网关的情况下添加基于接口的路由这给出了这样的东西:
Windows 可能无法做到这一点
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/route.mspx
Quote: 对于本地连接的子网路由,网关地址是分配给连接到子网的接口的 IP 地址。
我在 Windows 7 Enterprise 中使用 Juniper Junos Pulse VPN 客户端也得到了相同的结果。
我遇到了这个问题,因为它捕获了所有可能的 IPv4 地址并将它们路由到拨号连接:
我不希望我的所有流量都通过 VPN,所以如果有人需要它,我写了一个小 cmd 文件来删除这些路由,然后安装我唯一需要的一个(10.0.0.0)而无法指定网关,通过指定正确的接口。
您可以使用它来动态检索接口的编号。
十进制的接口编号用 显示
route print
。查看下方输出的顶部Interface List
。另一种方法是使用
arp -a
并记下十六进制数,例如:两者都在 中的
if
参数之后被接受route.exe
,例如:我更喜欢
arp -a
,因为它更容易识别 NIC。其他方法很多,但这是最简单的。
您不能在永久表中省略网关。有些人提供在那里放置一个接口卡IP(用户端),这在Windows XP中是可以接受的。但它不再有效。在这种情况下,操作系统将继续敲击每个网络接口,至少在填充缓存之前;这不是一个好的行为,与空路由表没有区别。
我发现将目标 IP 作为网关至少在 Windows 10 上解决了这个问题。但我目前几乎没有统计数据来确认它是 100.1% 的事实。