Isso pode não ser possível com o Windows
Quote: Para rotas de sub-rede conectadas localmente, o endereço do gateway é o endereço IP atribuído à interface que está conectada à sub-rede.
Eu tenho o seguinte cenário:
Computador A: 198.51.100.8
, netmask 255.255.255.0
Computador B: 203.0.113.9
, netmask 255.255.255.0
Ambos os computadores estão no mesmo segmento da LAN; nenhum gateway padrão é especificado nos dois casos.
Para que esses dois computadores se comuniquem, adicionamos duas rotas estáticas, como:
route add 203.0.113.9 mask 255.255.255.255 198.51.100.8
No entanto, eu preferiria adicionar as rotas estáticas especificando uma interface de rede , em vez de especificar um endereço IP do gateway .
Isso é possível com o Linux usando um comando como:
ip route add 203.0.113.9 dev eth0
e similarmente no FreeBSD:
route add 203.0.113.9/32 -iface fxp0 -cloning
No entanto, estou sem saber como fazer isso com o Windows. Idealmente eu quero fazer algo como:
route add 203.0.113.9 mask 255.255.255.255 if 2
mas isso apenas imprime o uso do comando route
, o que me diz que estou fazendo errado. Eu também tentei usar netsh
, o que me diz:
> 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.
Quaisquer pensamentos ou sugestões?
Atualizar : quando postei originalmente essa pergunta, estava usando o Windows XP. Mas deixei de mencionar isso.
Deixarei a resposta original de Grizly, pois ela está correta para a minha pergunta original. Mas se você estiver usando uma versão mais recente do Windows do que XP / 2003, tente uma das outras respostas.
Isso pode não ser possível com o Windows
Quote: Para rotas de sub-rede conectadas localmente, o endereço do gateway é o endereço IP atribuído à interface que está conectada à sub-rede.
No Windows, você pode adicionar uma rota baseada na interface sem conhecer a interface passando 0.0.0.0
como gateway
isto dá algo parecido com isto:
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
Eu obtive o mesmo no Windows 7 Enterprise com o cliente Juniper Junos Pulse VPN.
Eu tive um problema com isso, pois ele capturou todos os endereços IPv4 possíveis e os direcionou para a conexão dial-up:
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
Eu não queria que todo o meu tráfego passasse pela VPN, então, caso alguém precise, eu escrevi um pequeno arquivo cmd para remover essas rotas e depois instalei a única que eu preciso (10.0.0.0) sem poder especificar um gateway, especificando a interface correta.
Você pode usar isso para recuperar dinamicamente o número de uma interface.
@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%
O número da interface em decimal é exibido com route print
. Olhe para o topo da saída abaixo
Interface List
.
Outra maneira é usar arp -a
e anotar o número hexadecimal, por exemplo:
C:\>arp -a
Interface: 192.168.1.28 --- 0xc
Internet Address Physical Address Type
<snip>
Ambos são aceitos após o argumento if
em route.exe
, por exemplo:
route ADD <NET-ID> MASK <mask> <GW-address or 0.0.0.0 for on-link> IF 0xc -P
Eu prefiro arp -a
, pois é mais fácil identificar a NIC.
Numerosas outras maneiras, mas isso é o mais simples.
Tags windows-xp ip routing static-routes