enlazar software a diferentes interfaces de red

37

Tengo dos interfaces de red diferentes, conectadas a 2 redes. Uno es eth0 y el otro wlan0. ¿Cómo puedo decirle a un software que use solo una interfaz específica?

Básicamente quiero que Firefox use eth0 porque es la red LAN de la universidad y tengo que ir a sitios de intranet, la otra es una red wifi abierta a Internet y quiero vincularla a Chrome.

Estoy trabajando y necesito usar intranet. Entonces eth0 es mi elección, pero eth0 es una intranet sin acceso a internet (obviamente). Como quiero acceso a internet, estoy conectado a wlan0 (wifi universitario para estudiantes).

El problema es que si tengo ambos conectados a veces el navegador busca www.stackoverflow.com usando eth0. Así que quería asignar un navegador para usar solo una interfaz específica.

dierre
fuente
¿No es el enrutamiento una mejor solución para sus problemas? Quiero decir, que las conexiones a ubuntu.stackexchange.com deberían usar la misma interfaz de cualquier programa.
Javier Rivera

Respuestas:

23

No puede vincular el software del cliente a interfaces de red específicas, pero puede decirle al kernel que solo desea usar una interfaz de red para algunas direcciones IP y la otra para todo lo demás. Esto se denomina "enrutamiento" y se puede configurar con los comandos /sbin/routey /sbin/ip.

Si leo su pregunta correctamente, desea conectarse a las direcciones IP de la intranet mediante la interfaz eth0y a Internet mediante la interfaz wlan0 .

Si ejecuta el comando ip route list, debería ver una salida como la siguiente (los números serán diferentes y también puede tener más líneas):

$ ip route list
10.60.44.0/25 dev eth0  proto kernel  scope link  src 10.60.44.39  metric 1 
192.168.80.0/21 dev wlan0  proto kernel  scope link  src 192.168.84.122  metric 2 
[...]
default via 10.60.44.1 dev eth0  proto static 

Las primeras dos líneas le informan sobre las redes conectadas a las interfaces eth0y wlan0: el tráfico de red dirigido a las computadoras en esas redes se les enviará directamente a través de la interfaz correspondiente.

La última línea le dice cuál es la "ruta predeterminada": si su computadora quiere hablar con una computadora en una red a la que no está conectada (por ejemplo, el servidor stackoverflow.com) eth0, enrutará el tráfico a través del host, realizándolo a través del host10.60.44.1 ( llamado la "puerta de enlace predeterminada").

Entonces, para enrutar el tráfico de Internet por completo wlan0, debe asegurarse de que la última línea en la ip route listsalida lea algo como:

default via A.B.C.D dev wlan0 proto static

donde A.B.C.Destá la dirección IP de la puerta de enlace en la LAN inalámbrica. Si el resultado no contiene "dev wlan0", puede cambiarlo con el comando:

sudo ip route change to default dev wlan0 via A.B.C.D

Puede encontrar la correcta A.B.C.Dde wlan0dos maneras:

  1. Busque en el directorio /var/lib/dhcp3/: debería encontrar algunos dhclient-...-wlan0.leasearchivos. Abra el más reciente y busque una línea con la cadena option router: el resto de la línea le indica la dirección IP A.B.C.D.

  2. Consulte a los administradores de su red local. (Probablemente lo mejor que se puede hacer, de todos modos).

Con esta configuración, debería poder:

  • navegar por Internet a través de wlan0
  • navegue por su Intranet eth0, siempre que esté en una sola red .

Si su intranet abarca varias redes, necesitará agregar rutas para ellas, y esto es definitivamente algo que requiere que interactúe con los administradores de la red local. :-)

Riccardo Murri
fuente
Solo por curiosidad: ¿qué pasa si quiero enlazar dns (para incluir subdominios) en lugar de direcciones IP?
dierre
1
@dierre En resumen: no puede, el enrutamiento se basa en direcciones IP. La larga historia comienza diciendo que el enrutamiento es una cosa capa de red 3, por lo que ni siquiera saber de nombres DNS, cuya resolución pasa más arriba en la pila de protocolos de red ...
Riccardo Murri
Sí, sí, no quise decir con enrutamiento. Quiero decir en general. Se puede hacer? ¿Enlace de DNS a las interfaces de red?
dierre
@dierre ¿Qué quieres hacer exactamente? ¿Hacer que un servidor DNS responda solo en una interfaz de red específica? ¿O tener un cliente DNS (es decir, resolución DNS) utiliza solo una interfaz seleccionada?
Riccardo Murri
1
@Riccardo Murri: ubuntu.stackexchange.com/questions/4988/… et voilà
dierre
2

"ip netns" crea espacios de nombres de red. Luego puede crear interfaces virtuales (ip link add ... veth) y asociarlas a los espacios de nombres.

Los espacios de nombres se pueden configurar para usar diferentes rutas, por ejemplo (por lo tanto, usando diferentes interfaces)

Luego puede ejecutar comandos en ese espacio de nombres, que utilizarán el espacio de nombres creado ... "ip netns exec NAME cmd ..."

Fuente: http://manpages.ubuntu.com/manpages/saucy/en/man8/ip-netns.8.html

olivervbk
fuente