Rutas estáticas de Windows sin puerta de enlace específica (próximo salto)


15

Tengo el siguiente escenario:

Computadora A: 198.51.100.8máscara de red 255.255.255.0
Computadora B: 203.0.113.9máscara de red 255.255.255.0
Ambas computadoras están en el mismo segmento LAN; no se especifica una puerta de enlace predeterminada en ninguno de los casos.

Para que estas dos computadoras se comuniquen entre sí, agregué dos rutas estáticas, así:

route add 203.0.113.9 mask 255.255.255.255 198.51.100.8

Sin embargo, preferiría agregar las rutas estáticas especificando una interfaz de red , en lugar de especificar una dirección IP de puerta de enlace .

Esto es posible con Linux mediante el uso de un comando como:

ip route add 203.0.113.9 dev eth0

y de manera similar en FreeBSD:

route add 203.0.113.9/32 -iface fxp0 -cloning

Sin embargo, no sé cómo hacer esto con Windows. Idealmente quiero hacer algo como:

route add 203.0.113.9 mask 255.255.255.255 if 2

pero eso simplemente imprime el uso del routecomando, lo que me dice que lo estoy haciendo mal. También he intentado usar netsh, lo que me dice:

> 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.

¿Alguna idea o sugerencia?


Actualización : cuando originalmente publiqué esta pregunta, estaba usando Windows XP. Pero no mencioné eso.

Dejaré la respuesta original de Grizly, ya que es correcta para mi pregunta original. Pero si está utilizando una versión más nueva de Windows que XP / 2003, pruebe una de las otras respuestas.

Respuestas:


7

Esto puede no ser posible con Windows

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/route.mspx

Cita: Para las rutas de subred conectadas localmente, la dirección de la puerta de enlace es la dirección IP asignada a la interfaz que está conectada a la subred.


Hola Grizly, ¡gracias por la respuesta! Probé los dos comandos que sugirió, pero obtuve: "La adición de ruta falló: o el índice de la interfaz es incorrecto o la puerta de enlace no se encuentra en la misma red que la interfaz. Verifique la tabla de direcciones IP de la máquina". Solo tengo dos interfaces en la máquina, 0x1 (interfaz MS TCP Loopback) y 0x2 (conexión de red Intel (R) PRO / 1000 MT), así que estoy bastante seguro de que "si 2" es lo que quiero usar. ¿Alguna otra idea?
fisión

Simplemente ignore la parte "métrica 1 si 2" ... debería resolverlo. Lo mejor es probar sin -p también. (eso lo hace persistente)
Grizly

Obtengo el mismo resultado sin la parte "métrica 1 si 2".
fisión

Ohh, mi mal, parece que la puerta de enlace es la ip de la interfaz ... respuesta actualizada.
Grizly

Correcto, que es lo que ya estoy haciendo y que esperaba evitar. Gracias de todos modos
fisión

21

En Windows, puede agregar una ruta basada en la interfaz sin conocer la interfaz pasando 0.0.0.0como puerta de enlace

esto da algo como esto:

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

2
Intenté esto en Windows 7 x64. ¡Funciona! Mi comando: route ADD 176.31.111.111 0.0.0.0 IF 25regresó OK!y apareció una nueva entrada en la tabla de enrutamiento como se esperaba
Dmitry

6

Obtuve lo mismo en Windows 7 Enterprise con el cliente Juniper Junos Pulse VPN.
Tuve un problema con esto, ya que capturó todas las direcciones IPv4 posibles y las enrutó a la conexión de acceso telefónico:

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

No quería que todo mi tráfico pasara a través de la VPN, por lo que en caso de que alguien lo necesite, escribí un pequeño archivo cmd para eliminar estas rutas y luego instalar el único que necesito (10.0.0.0) sin poder especificar una puerta de enlace , especificando la interfaz correcta.
Puede usar esto para recuperar dinámicamente el número de una interfaz.

@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%

1
simplemente puede deshabilitar "forzar túnel" en la sección de propiedades de ip de su conexión vpn.
extraño caminante

5

El número de interfaz en decimal se muestra con route print. Mira la parte superior de la salida debajo Interface List.

Otra forma es usar arp -ay tomar nota del número hexadecimal, por ejemplo:

C:\>arp -a

Interface: 192.168.1.28 --- 0xc  
  Internet Address      Physical Address      Type
<snip>

Ambos son aceptados después del ifargumento en route.exe, por ejemplo:

route ADD <NET-ID> MASK <mask> <GW-address or 0.0.0.0 for on-link> IF 0xc -P

Prefiero arp -a, ya que es más fácil identificar la NIC.

Numerosas otras formas, pero esta es la más simple.


0

No puede omitir la puerta de enlace en la tabla permanente. Algunas personas ofrecen poner allí una tarjeta de interfaz IP (lado del usuario), que era aceptable en Windows XP. Pero ya no es válido. El sistema operativo seguirá golpeando todas las interfaces de red en este caso, al menos hasta que se llene el caché; no es un buen comportamiento y no hace ninguna diferencia con la tabla de enrutamiento vacía.

Descubrí que poner allí una IP de destino como puerta de enlace resuelve el problema al menos en Windows 10. Pero tengo pocas estadísticas en este momento para confirmarlo como 100.1% de verdad.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.