了解Windows路由表和默认网关


11

注意:这是我的家用计算机实验室,而不是商业/生产环境。我很乐意打破它并再次修复它,因此欢迎提出任何建议!

摘要

我添加了此快速摘要,因为这个问题变得很长。如果您需要有关路由表,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

1.您的路由器/防火墙是否对您的内部地址空间执行代理ARP?2.路由器/防火墙上的路由表是什么样的?
joeqwerty

1
如果要阻止RFC 1918空间数据包出去,只需将10 / 8、172.16 / 12和192.168 / 16路由设为空(或将其路由回LAN)。缺少特殊安排,这些数据包无论如何都不应进入/退出您的网络。尽管我完全不确定这是最好的方法(它可能会破坏另一端的东西)。
CVn 2014年

考虑到您所讨论的Windows版本和本文的一般语调,我猜您是在公司环境中,在这种情况下,您可能需要考虑标记此文章以引起主持人注意并请求迁移到Server Fault
CVn 2014年

嗨,迈克尔,谢谢您的回答。我在路由器上添加了10 / 8、172.16 / 12和192.168 / 16路由,以返回到我的计算机(192.168.0.117),这样它们就不会通过Internet发送。我很好奇这是否是每个路由器都需要配置的东西吗?另外,我应该澄清这是我的家庭实验室,而不是公司或业务环境。我只是用它来学习。
冈德2014年

Answers:


2

自Vista以来,对默认路由进行故障回复是正常现象,您可以在以下文章中阅读有关此内容的信息: 在多宿主Windows计算机上选择源IP地址

路由器配置错误引起的循环问题,路由器使用不同的子网发回数据包,而不是丢弃它们。


如果链接断开,则仅链接答案变得无用。请在引用源代码的同时说明如何解决该问题。
Raystafarian 2014年

抱歉,添加了一些细节。
mtm

1
嗨,很抱歉收到您的回复,但非常感谢您提供的MTM链接!它描述了为什么我看到这种特定行为,并为研究改变它提供了一个很好的起点。
冈德2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.