Comment une application (comme Firefox) peut-elle être forcée d'utiliser une certaine interface réseau?

20

J'ai deux interfaces: eth0 et wlan0 sur un ordinateur portable.

Cas d'utilisation possibles:

  • eth0 me donne accès à Internet et wlan0 est actuellement connecté à un routeur qui n'a pas de connexion Internet. À des fins de développement, je dois me connecter au wlan0 par défaut, mais utiliser eth0 pour surfer
  • eth0 et wlan0 sont tous deux connectés à Internet. Pour une application torrent, eth0 doit être utilisé pour la vitesse, mais pour la portabilité du portable, SSH doit avoir une connexion via wlan0
  • eth0 est une connexion filaire, wlan0 est une connexion sans fil. Les données sensibles doivent être transférées via eth0, mais le reste du trafic peut également passer par wlan0.

Existe-t-il un moyen de forcer les applications (comme nc.traditionalou firefox) à utiliser une certaine interface réseau? Un wrapper comme example-wrapper eth0 programest bien aussi si un tel programme existe. Ce serait bien s'il pouvait être configuré dans Firefox (en runtime). J'aimerais éviter les solutions IPTables si possible.

Lekensteyn
la source
4
cela est également utile pour une connexion Internet multiple avec un torrent tandis que l'autre est utilisé pour surfer.
iamgopal
Vous souhaitez utiliser différentes routes en fonction du protocole / de l'application, vous aurez besoin d'iptables pour cela.
João Pinto
1
Je ne sais pas comment vous pouvez le faire sans quelque chose qui mappe votre trafic layer7 (application) à un port spécifique ou filtre autrement en fonction de certaines informations d'application de niveau supérieur (qui nécessiteraient une inspection du trafic). Donc, bien que iptables ne soit pas spécifiquement nécessaire, toute solution impliquant un wrapper devrait interagir avec la politique tcp ou ip d'une manière ou d'une autre. Je ne sais pas comment faire cela sans un réseau couche 2 ou couche 3 qui dirige le trafic ailleurs.
belacqua

Réponses:

1

Ce que vous recherchez est une cale LS_PRELOAD, voir l'entrée de blog de Daniel Lange pour une explication détaillée et un exemple de code.

Bob Lebin
la source
3
Bienvenue sur Ask Ubuntu! Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence.
Stormvirux
1

Vous pouvez utiliser une approche plus complexe du marquage des connexions et de la politique de routage.
Cela fonctionnera bien si vous avez un utilisateur qui exécute un logiciel et une anthère.
De cette façon, vous pouvez marquer les connexions d'un utilisateur et utiliser une table de routage spécifique pour lui tandis que tous les autres utiliseront celle par défaut.
Le document de base pour tout comprendre est à l' adresse : http://www.lartc.org/lartc.html
Vous trouverez également un exemple pour deux connexions ici: /unix/58635/iptables- set-mark-route-diferent-ports-through-different-interfaces
Vous pouvez utiliser le module iptables "propriétaire" qui marquera les connexions pour permettre la politique de routage.

elico
la source
Le routage de stratégie fonctionne pour différents utilisateurs, mais pas pour une application exécutée sous un seul utilisateur (comme décrit dans OP). LD_PRELOADsemble le chemin à parcourir (pas pour des programmes malveillants / pour des raisons de sécurité), peut-être que quelqu'un pourrait élaborer le message de Bob Lebins?
Lekensteyn
0

Voici un exemple de solution. Il utilise le serveur SOCKS, configuré sur la machine actuelle pour acheminer les connexions. Chaque application doit être configurée pour utiliser chaque serveur.

Vadim Rutkovsky
la source
3
Cela ressemble à un proxy HTTP, cela fonctionne-t-il avec d'autres protocoles, comme une connexion entre deux instances netcat?
Lekensteyn
0

Vous pouvez également utiliser une machine de station de travail VMware pour partager différentes interfaces réseau que je fais beaucoup pour télécharger à partir d'une interface et laisser l'autre pour mon Netflix.

Vous devez configurer ethX et wlanX sur VMware mais une fois que vous l'avez configuré, vous êtes prêt à télécharger ou à parcourir.

C'est assez lisse. Vous pouvez également utiliser un pare-feu pour lier des interfaces qui fonctionnent également très bien.

nauséeux
la source
Bien qu'il fonctionne pour cette application particulière, il n'est malheureusement pas utilisable avec d'autres applications en dehors de la machine virtuelle telles que Firefox.
Lekensteyn du