Comportamiento deseado
Cuando una aplicación envía un paquete a la dirección IP de transmisión global 255.255.255.255
, me gustaría que el paquete se envíe a la dirección de transmisión global Ethernet ( ff:ff:ff:ff:ff:ff
), en todas las interfaces.
En Linux y probablemente también en otros sistemas operativos, esto parece funcionar. Windows XP y Windows 7 exhiben comportamientos diferentes al respecto, y ninguno de estos comportamientos es deseable para mi situación.
Comportamiento de Windows XP
El paquete se enviará correctamente a la primera interfaz de red (el orden de la interfaz se especifica en "Conexiones de red / Configuración avanzada / avanzada"). También se enviará a las otras interfaces.
Todo está bien hasta ahora. El problema es que, al enviar a las otras interfaces, la dirección de origen del paquete de difusión es la dirección IP de la primera interfaz. Por ejemplo, imagine esta configuración de red (el orden es importante):
- Adaptador 1: dirección IP
192.168.0.1
- Adaptador 2: dirección IP
10.0.0.1
- Adaptador 3: dirección IP
172.17.0.1
Ahora, si envío un paquete de difusión, se enviarán los siguientes paquetes (con las direcciones IP de origen y de destino):
- En el adaptador 1:
192.168.0.1
=>255.255.255.255
- En el adaptador 2:
192.168.0.1
=>255.255.255.255
En el adaptador 3:
192.168.0.1
=>255.255.255.255
En la práctica, las aplicaciones que usan paquetes de difusión no funcionarán en ninguna interfaz que no sea el adaptador 1. En mi opinión, este es un error evidente en la pila TCP / IP de Windows XP.
Comportamiento de Windows 7
La modificación del orden de la interfaz de red no parece tener ningún efecto en Windows 7. En cambio, la transmisión parece estar controlada por la tabla de rutas IP.
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 10.202.254.254 10.202.1.2 286
0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.3 10
10.202.0.0 255.255.0.0 On-link 10.202.1.2 286
10.202.1.2 255.255.255.255 On-link 10.202.1.2 286
10.202.255.255 255.255.255.255 On-link 10.202.1.2 286
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
192.168.0.0 255.255.255.0 On-link 192.168.0.3 266
192.168.0.3 255.255.255.255 On-link 192.168.0.3 266
192.168.0.255 255.255.255.255 On-link 192.168.0.3 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.3 266
224.0.0.0 240.0.0.0 On-link 10.202.1.2 286
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.3 266
255.255.255.255 255.255.255.255 On-link 10.202.1.2 286
===========================================================================
Ver las 255.255.255.255
rutas? Sí, controlan los paquetes de transmisión. En esta situación, los paquetes de difusión se enviarán a través de 192.168.0.3
porque tiene la métrica más baja ... pero no a las otras interfaces.
Puede cambiar la interfaz a través de la cual los paquetes de difusión global se enviarán muy fácilmente (simplemente agregue una 255.255.255.255
ruta persistente con una métrica baja). Pero no importa cuánto lo intentes, los paquetes de difusión solo se enviarán en una sola interfaz, no todos como me gustaría que lo haga.
Conclusión
- Windows 7 solo envía paquetes de difusión a una interfaz. Puedes elegir cuál, pero ese no es el punto aquí.
- Windows XP envía paquetes de difusión a todas las interfaces, pero solo los envía como se espera a una interfaz, lo que en la práctica es equivalente al comportamiento de Windows 7.
La meta
Quiero cambiar esta compatibilidad global de transmisión IP en Windows (preferiblemente Windows 7) de una vez por todas. Por supuesto, la mejor manera sería tener algún tipo de cambio de configuración compatible (pirateo del registro o similar), pero estoy abierto a todas las sugerencias.
¿Algunas ideas?