Nota: Este é o meu laboratório de informática em casa e não um ambiente de negócios / produção. Fico feliz em quebrá-lo e corrigi-lo novamente, para que todas as sugestões sejam bem-vindas!
RESUMO
Adicionei este resumo rápido porque esta pergunta está ficando bastante longa. Se você quiser obter mais detalhes sobre tabelas de roteamento, configurações de IP etc., veja abaixo.
Eu tenho algumas placas de rede em um computador. Uma NIC é 172.16.200.1 / 24. Quando tento executar o ping 172.16.200.2 (um host existente na rede), recebo uma resposta. Por enquanto, tudo bem.
Quando tento conectar-me ao 172.16.200.5 (ou a qualquer outro host que não exista), o computador volta à minha rota padrão (0.0.0.0 através do meu gateway padrão 192.168.0.1) - isso será enviado por meu roteador doméstico, onde se perde em um loop de roteamento na minha rede ISPs. Muito mais detalhes são dados abaixo, se necessário, mas suponho que exista um guru por aí que possa responder isso já ...
Minha pergunta é:
Como faço para impedir que meu computador volte ao gateway padrão de uma rede privada quando não há resposta de um host nessa rede. Essas redes privadas já possuem rotas explícitas com métricas mais baixas.
Eu testei isso em algumas máquinas (Server 2008 R2, Windows 7, Hyper-V Server 2012 R2, Windows Server 2012) e todas elas se comportam da mesma maneira. Estou começando a aceitar que esse é 'comportamento normal' para máquinas Windows, mas estou curioso para saber se pode ser interrompido.
Criei uma VM do Ubuntu com a mesma configuração das minhas VMs do Windows - a VM do Ubuntu não volta à rota padrão como as VMs do Windows. Adicionei as tabelas de roteamento e os resultados para a VM do Ubuntu e a Windows 8.1 VM na parte inferior desta postagem.
DETALHES ADICIONAIS
Eu fiz uma pesquisa extensiva sobre esse assunto e a pergunta mais próxima que eu já vi está aqui: Loop de roteamento: TTL expirou em trânsito , mas infelizmente não responde como parar o problema ou alterar o comportamento no computador. A resposta sugere corrigir o roteamento. Posso mudar meu roteador para largar tudo destinado a endereços IP privados (ou encaminhá-lo para os IPs dos meus colegas de casa, hehehe), mas isso não muda o comportamento do meu computador. (Também li o ótimo guia de sub-rede que foi referência na resposta original, que pode ser encontrada em https://serverfault.com/questions/49765/how-does-ipv4-subnetting-work )
Estou tendo problemas para entender por que meus computadores tentam se conectar a endereços IP privados pela Internet depois que tentam usar seus adaptadores internos (por um curto período) e depois falham - por exemplo, ao tentar executar ping em um host que eu conheço não existe na minha rede…
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),
Mas executar ping em um host que existe funciona ...
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
OK, então a resposta do 172.16.200.1 é meu computador dizendo nenhuma resposta foi recebida ... mas então, por que ele ainda tenta se conectar a minha conexão com a internet? Eu tenho 4 placas de rede e estou na rede 172.16.200.0 / 24 em uma delas…
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 . . . . . . . . . :
Então, neste momento, faria sentido olhar para a tabela de roteamento ...
===========================================================================
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
Primeiro pensei que a métrica da rota 0.0.0.0 fosse a culpada - ela era originalmente 6, então tentei alterá-la para 410, o que não mudou o comportamento. (A propósito, eu nunca mexi com a tabela de roteamento nesta máquina antes). Comparei-o com uma máquina Hyper-V 2012 R2 que tenho em 3 das mesmas redes (172.16.1.0, 172.16.100.0 e 172.16.200.0) e notei que a máquina Hyper-V também possui uma métrica de 6 para o valor 0.0 .0.0, então acho que isso é normal e correto…
Tentei alterar o 172.16.200.0 para ser uma rota persistente, como abaixo, mas ainda não funcionou.
===========================================================================
Persistent Routes:
Network Address Netmask Gateway Address Metric
172.16.200.0 255.255.255.0 172.16.1.1 1
===========================================================================
Eu também tentei aumentar a métrica (eu sei que quanto mais baixo é mais preferido, mas apenas no caso, não é?)… É claro, sem sorte.
Nas "Configurações avançadas" na janela Conexões de rede, confirmei que o adaptador 192.168.0.117 é o mais baixo na ordem de adaptadores e ligações…
Então, depois de bater um pouco na cabeça, estou perplexo. Obviamente, excluir a rota 0.0.0.0 a interrompe, mas é claro que também interromperá minha internet…
Como diabos posso parar minha máquina de tentar acessar meu gateway padrão 192.168.0.1 quando tenta acessar um host em 172.16.200.0…
http://technet.microsoft.com/en-us/library/cc779122%28v=ws.10%29.aspx ("A tabela de roteamento IP: TCP / IP") parece sugerir que "A rota padrão normalmente encaminha um Datagrama IP (para o qual não há rota local correspondente ou explícita) para um endereço de gateway padrão para um roteador na sub-rede local. " Quanto mais explícito posso ficar com essa rota!
A resposta aqui, gateway de rota persistente do Windows indisponível, portanto, a rota padrão usada sugere que este é um comportamento normal - quando uma rota persistente é adicionada, ele tenta usar essa rota, se possível, mas volta à rota padrão quando isso falhar. Certamente isso pode apresentar alguns problemas de tráfego bastante sérios, sem mencionar problemas de segurança (informações privadas vazando na Internet ou pelo menos as redes privadas de seus provedores ...)
Algumas informações adicionais: Este servidor executa o NPS / RRAS normalmente - desativá-lo e até removê-lo não fez nada. Além disso, criei uma nova VM 2008 R2, dei duas NICs, uma diretamente na rede 192.168.0.0 e a outra na rede 172.16.200.0 e fiz a mesma coisa ... Espero que você possa dizer que tenho passou um pouco de tempo nisso.
Eu configurei meu roteador doméstico para encaminhar todos os itens 172.16.XX de volta ao meu próprio computador, mas isso é uma solução alternativa…
Falta alguma coisa? Algo óbvio, talvez? Estou perguntando o impossível?
[ATUALIZAÇÃO # 1 E # 2]
Examinei todos os bits de configuração do meu roteador e ele não parece lidar com nenhuma solicitação de proxy ARP - nem sequer possui configurações que eu possa ver.
Usei o MS Network Monitor 3.4 para testar se as solicitações de ARP estão sendo respondidas pelo roteador e não. Posso ver a solicitação do ARP sendo enviada quando tento executar ping em um host inexistente e não recebo nenhuma resposta do ARP. O ping de um host que existe, naturalmente, me dá uma resposta ARP. É seguro supor, neste momento, que meu roteador não esteja manipulando solicitações de proxy ARP?
A tabela de roteamento no roteador foi da seguinte maneira:
> 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
Eu adicionei essas entradas abaixo como uma medida temporária de interrupção de intervalo - impede que meus pacotes "perdidos" pobres acessem meu 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
[ATUALIZAÇÃO # 3 - Adicionadas tabelas de roteamento de VMs Ubuntu e Win8.1]
OK, então criei uma nova VM do Ubuntu e uma nova VM do Windows 8.1. A VM do Ubuntu não tenta voltar à rota 0.0.0.0, mas o Windows 8.1 o faz. Tentei o antigo host ping-a-inexistente e observei o tráfego no roteador 172.16.1.1. Ele recebe as solicitações de ICMP da VM do Windows 8.1 e as transmite, mas nunca vê nenhum tráfego de ICMP da VM do Ubuntu.
A tabela da VM do Ubuntu está abaixo:
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
A tabela do Windows 8.1 está abaixo:
===========================================================================
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