¿Cómo se puede obligar a una aplicación (como Firefox) a usar una determinada interfaz de red?

20

Tengo dos interfaces: eth0 y wlan0 en una computadora portátil.

Posibles casos de uso:

  • eth0 me otorga acceso a Internet, y wlan0 está actualmente conectado a un enrutador que no tiene conectividad a Internet. Para fines de desarrollo, necesito conectarme al wlan0 por defecto, pero usar eth0 para navegar
  • eth0 y wlan0 están conectados a Internet. Para una aplicación de torrents, eth0 debe usarse para la velocidad, pero para la portabilidad del portátil, SSH debe tener una conexión sobre wlan0
  • eth0 es una conexión por cable, wlan0 es inalámbrica. Los datos sensibles deben transferirse a través de eth0, pero otro tráfico también puede pasar por wlan0.

¿Hay alguna forma de obligar a las aplicaciones (como nc.traditionalo firefox) a usar una determinada interfaz de red? Un contenedor como también example-wrapper eth0 programestá bien si existe dicho programa. Sería bueno si pudiera configurarse dentro de Firefox (en tiempo de ejecución). Me gustaría evitar las soluciones de IPTables si es posible.

Lekensteyn
fuente
44
Esto también es útil para la conexión a Internet múltiple con un torrent mientras otro se utiliza para navegar.
iamgopal
Desea usar diferentes rutas basadas en el protocolo / aplicación, necesitará iptables para eso.
João Pinto
1
No sé cómo puede hacer esto sin algo que asigne el tráfico de su capa7 (aplicación) a un puerto específico o de lo contrario los filtros basados ​​en alguna información de aplicación de nivel superior (que requeriría una inspección de tráfico). Entonces, aunque iptables específicamente no es necesario, cualquier solución que involucre un contenedor tendría que interactuar con la política tcp o ip de alguna manera. No sé cómo hacer esto sin una red de capa2 o capa3 que dirige el tráfico a otra parte.
belacqua

Respuestas:

1

Lo que está buscando es una cuña LS_PRELOAD, consulte la entrada del blog de Daniel Lange para obtener una explicación detallada y un código de ejemplo.

Bob Lebin
fuente
3
Bienvenido a Ask Ubuntu! Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
Stormvirux
1

Puede utilizar un enfoque más complejo de marcado de conexiones y política de ruta.
Funcionará bien si tiene un usuario que ejecuta un software y una antera.
De esta manera, puede marcar las conexiones de un usuario y usar una tabla de enrutamiento específica para él, mientras que todos los demás usarán la predeterminada.
El documento básico para entenderlo todo está en: http://www.lartc.org/lartc.html.
También puede ver un ejemplo de dos conexiones aquí: /unix/58635/iptables- set-mark-route-diferent-ports-through-different-interfaces
Puede usar el módulo iptables "propietario" que marcará las conexiones para permitir la política de enrutamiento.

elico
fuente
El enrutamiento de políticas funciona para diferentes usuarios, pero no para una aplicación que se ejecuta bajo un usuario (como se describe en OP). LD_PRELOADparece el camino a seguir (no para programas maliciosos / por razones de seguridad), ¿tal vez alguien podría elaborar la publicación de Bob Lebins?
Lekensteyn
0

Aquí hay una solución de muestra. Utiliza el servidor SOCKS, configurado en la máquina actual para enrutar las conexiones. Cada aplicación debe configurarse para usar cada servidor.

Vadim Rutkovsky
fuente
3
Esto parece un proxy HTTP, ¿funciona con otros protocolos, como una conexión entre dos instancias de netcat?
Lekensteyn
0

También puede usar una máquina de estación de trabajo VMware para compartir diferentes interfaces de red que hago mucho para descargar desde una interfaz y dejar la otra para mi Netflix.

Es necesario configurar ethX y wlanX en VMware, pero una vez que lo haya configurado, estará listo para descargar o navegar.

Es muy suave También puede usar un firewall para unir interfaces que también funciona muy bien.

nauseabundo
fuente
Si bien funciona para esta aplicación en particular, desafortunadamente no se puede usar con otras aplicaciones fuera de la VM, como Firefox.
Lekensteyn