注意:这是我的家用计算机实验室,而不是商业/生产环境。我很乐意打破它并再次修复它,因此欢迎提出任何建议!
摘要
我添加了此快速摘要,因为这个问题变得很长。如果您需要有关路由表,IP配置等的更多详细信息,请查看以下内容。
我的计算机上有几个NIC。一个NIC是172.16.200.1 /24。当我尝试ping 172.16.200.2(网络上存在的主机)时,我得到了答复。到目前为止,一切都很好。
当我尝试连接到172.16.200.5(或任何其他不存在的主机)时,计算机将退回到我的默认路由(通过我的默认网关192.168.0.1的0.0.0.0)-然后,它将通过以下方式发送出去我的家庭路由器,然后在ISP网络中的路由环路中丢失。如果需要的话,下面还会提供更多详细信息,但是我想这里已经有一位大师可以回答这个问题了……
我的问题是:
当该网络上的主机没有响应时,如何阻止计算机退回到专用网络的默认网关。这些专用网络已经具有较低度量的显式路由。
我已经在几台机器(Server 2008 R2,Windows 7,Hyper-V Server 2012 R2,Windows Server 2012)上对此进行了测试,它们的行为均相同。我开始接受这对于Windows机器是“正常行为”,但是我很好奇它是否可以停止。
我创建的Ubuntu VM与Windows VM具有相同的配置-Ubuntu VM不会像Windows VM那样退回到默认路由。我在本文的底部添加了Ubuntu VM和Windows 8.1 VM的路由表和结果。
更多细节
我已经对该主题进行了广泛的搜索,而我所看到的最接近的问题在这里:路由循环:TTL在传输过程中过期,但不幸的是,它无法解决如何停止问题或更改计算机上的行为。答案建议修复路由。我可以更改路由器以丢弃发往专用IP地址的所有内容(或将其转发给我室友的IP,嘿嘿),但这不会改变我计算机的行为。(我还阅读了原始答案中引用的出色的子网划分指南,该指南可在/server/49765/how-does-ipv4-subnetting-work上找到)
我无法理解为什么我的计算机一旦尝试使用其内部适配器(短时间)然后尝试失败,然后为什么会尝试通过Internet连接到私有IP地址,例如尝试对我知道的主机执行ping操作我的网络上不存在…
Pinging 172.16.200.32 with 32 bytes of data:
Reply from 172.16.200.1: Destination host unreachable.
Reply from 203.29.XXX.YY: TTL expired in transit.
Reply from 203.29.XXX.YY: TTL expired in transit.
Reply from 203.29.XXX.YY: TTL expired in transit.
Ping statistics for 172.16.200.32:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
但是对确实存在的主机执行ping操作……
Pinging 172.16.200.2 with 32 bytes of data:
Reply from 172.16.200.2: bytes=32 time<1ms TTL=128
Reply from 172.16.200.2: bytes=32 time<1ms TTL=128
Reply from 172.16.200.2: bytes=32 time<1ms TTL=128
Reply from 172.16.200.2: bytes=32 time<1ms TTL=128
Ping statistics for 172.16.200.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
好的,所以来自172.16.200.1的答复是我的计算机说没有收到响应…但是,为什么它甚至尝试通过我的Internet连接进行连接?我有4个NIC,我在其中之一上处于172.16.200.0 / 24网络上…
Ethernet adapter HyperV External (built in):
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::582c:97
IPv4 Address. . . . . . . . . . . : 172.16.1.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter Expansion-2 (middle) HomeNetwork:
Connection-specific DNS Suffix . : Home
IPv4 Address. . . . . . . . . . . : 192.168.0.117
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.1
Ethernet adapter Expansion-3 (bottom) iSCSI-1 :
Connection-specific DNS Suffix . :
IPv4 Address. . . . . . . . . . . : 172.16.100.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter Expansion-1 (top) iSCSI-2:
Connection-specific DNS Suffix . :
IPv4 Address. . . . . . . . . . . : 172.16.200.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
因此,在这一点上,看一下路由表是有意义的……
===========================================================================
Interface List
16...64 70 02 00 1f 03 ......Gigabit PCI Express Network Adapter #2
15...64 70 02 00 40 48 ......Gigabit PCI Express Network Adapter
23...00 24 1d 1d f8 35 ......TST Onboard
17...64 70 02 00 32 c1 ......Gigabit PCI Express Network Adapter #3
1...........................Software Loopback Interface 1
28...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
26...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2
13...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface
27...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #3
29...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #4
===========================================================================
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.117 410
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
172.16.1.0 255.255.255.0 On-link 172.16.1.1 266
172.16.1.1 255.255.255.255 On-link 172.16.1.1 261
172.16.1.255 255.255.255.255 On-link 172.16.1.1 261
172.16.100.0 255.255.255.0 On-link 172.16.100.1 266
172.16.100.1 255.255.255.255 On-link 172.16.100.1 266
172.16.100.255 255.255.255.255 On-link 172.16.100.1 266
172.16.200.0 255.255.255.0 On-link 172.16.200.1 266
172.16.200.1 255.255.255.255 On-link 172.16.200.1 266
172.16.200.255 255.255.255.255 On-link 172.16.200.1 266
192.168.0.0 255.255.255.0 On-link 192.168.0.117 266
192.168.0.117 255.255.255.255 On-link 192.168.0.117 266
192.168.0.255 255.255.255.255 On-link 192.168.0.117 266
224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
224.0.0.0 240.0.0.0 On-link 192.168.0.117 266
224.0.0.0 240.0.0.0 On-link 172.16.100.1 266
224.0.0.0 240.0.0.0 On-link 172.16.200.1 266
224.0.0.0 240.0.0.0 On-link 172.16.1.1 261
255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
255.255.255.255 255.255.255.255 On-link 192.168.0.117 266
255.255.255.255 255.255.255.255 On-link 172.16.100.1 266
255.255.255.255 255.255.255.255 On-link 172.16.200.1 266
255.255.255.255 255.255.255.255 On-link 172.16.1.1 261
===========================================================================
Persistent Routes:
None
我首先认为0.0.0.0路由的度量标准是罪魁祸首-最初是6,所以我尝试将其更改为410,但并未更改其行为。(顺便说一句,我以前从来没有弄过这台机器上的路由表)。然后,我将其与我在3个相同网络(172.16.1.0、172.16.100.0和172.16.200.0)上拥有的Hyper-V 2012 R2机器进行了比较,我发现Hyper-V机器对于0.0也具有6的度量.0.0路线,所以我猜这是正常且正确的…
然后,我尝试将172.16.200.0更改为持久路线,如下所示,但仍然无法正常工作。
===========================================================================
Persistent Routes:
Network Address Netmask Gateway Address Metric
172.16.200.0 255.255.255.0 172.16.1.1 1
===========================================================================
我还尝试增加指标(我知道较低的值更可取,但以防万一,是吗?)……当然,没有运气。
在“网络连接”窗口的“高级设置”中,我已确认192.168.0.117适配器在“适配器和绑定”顺序中最低。
因此,在敲了一下头后,我很沮丧。显然,删除0.0.0.0路由会停止它,但是它当然也会停止我的互联网…
当它尝试到达172.16.200.0上的主机时,如何阻止我的计算机尝试通过我的默认网关192.168.0.1…
http://technet.microsoft.com/zh-cn/library/cc779122%28v=ws.10%29.aspx(“IP路由表:TCP / IP”)似乎建议“默认路由通常转发一个IP数据报(没有匹配或显式的本地路由)到本地子网上路由器的默认网关地址。” 那条路线能给我带来更多明确的信息!
Windows持久性路由网关不可用的答案,因此使用的默认路由表明这是正常现象-添加持久性路由后,如果可能,它将尝试使用该路由,但在失败时会回退到默认路由。当然,这可能会带来一些非常严重的流量问题,更不用说安全问题了(私人信息泄漏到Internet中,或者至少是您的ISP的私人网络……)
一些其他信息:该服务器通常运行NPS / RRAS-禁用它,甚至删除它也无济于事。此外,我创建了一个全新的2008 R2 VM,为其提供了两个NIC,一个直接在192.168.0.0网络上,另一个在172.16.200.0网络上,并且做的也一样……我希望您能告诉我在这个上花了一些时间。
我已经将家庭路由器设置为将所有172.16.XX的内容转发回自己的计算机,但这是一种解决方法……
有什么我想念的吗?明显的东西吧?我是在问不可能吗?
[更新#1和#2]
我已经仔细研究了路由器上的每个配置位,似乎没有处理任何代理ARP请求-我什至没有任何设置。
我使用MS Network Monitor 3.4测试了路由器是否回答了ARP请求,而没有。当我尝试ping不存在的主机时,我看到ARP请求被发送出去了,但是我没有收到任何ARP响应。ping存在的主机,自然会给我ARP响应。现在可以安全地假设我的路由器没有处理代理ARP请求吗?
路由器上的路由表如下:
> route show
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.20.21.36 * 255.255.255.255 UH 0 0 0 ppp0
192.168.0.0 * 255.255.255.0 U 0 0 0 br0
default * 0.0.0.0 U 0 0 0 ppp0
我在下面添加了这些条目,作为临时的权宜之计-它阻止了我不良的“丢失”数据包进入我的ISP:
172.16.1.0 192.168.0.117 255.255.255.0 UG 1 0 0 br0
172.16.100.0 192.168.0.117 255.255.255.0 UG 1 0 0 br0
172.16.200.0 192.168.0.117 255.255.255.0 UG 1 0 0 br0
[更新#3-添加了Ubuntu和Win8.1 VM路由表]
好的,所以我创建了一个全新的Ubuntu VM和一个全新的Windows 8.1 VM。Ubuntu VM不会尝试回退到其0.0.0.0路由,但是Windows 8.1可以。我尝试了旧的ping不存在的主机,并观察了172.16.1.1路由器上的流量。它从Windows 8.1 VM接收ICMP请求并将其继续传递,但是它从未从Ubuntu VM中看到任何ICMP通信。
Ubuntu VM表如下:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface MSS Window irtt
0.0.0.0 172.16.1.1 0.0.0.0 UG 0 0 0 eth0 0 0 0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth1 0 0 0
172.16.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0 0 0 0
172.16.200.0 0.0.0.0 255.255.255.0 U 1 0 0 eth1 0 0 0
Windows 8.1表如下:
===========================================================================
Interface List
9...00 15 5d 01 4c 1c ......Microsoft Hyper-V Network Adapter #2
3...00 15 5d 01 4c 08 ......Microsoft Hyper-V Network Adapter
1...........................Software Loopback Interface 1
4...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
13...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2
===========================================================================
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 172.16.1.1 172.16.1.101 5
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
172.16.1.0 255.255.255.0 On-link 172.16.1.101 261
172.16.1.101 255.255.255.255 On-link 172.16.1.101 261
172.16.1.255 255.255.255.255 On-link 172.16.1.101 261
172.16.200.0 255.255.255.0 On-link 172.16.200.1 261
172.16.200.1 255.255.255.255 On-link 172.16.200.1 261
172.16.200.255 255.255.255.255 On-link 172.16.200.1 261
224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
224.0.0.0 240.0.0.0 On-link 172.16.1.101 261
224.0.0.0 240.0.0.0 On-link 172.16.200.1 261
255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
255.255.255.255 255.255.255.255 On-link 172.16.1.101 261
255.255.255.255 255.255.255.255 On-link 172.16.200.1 261
===========================================================================
Persistent Routes:
None