lier le logiciel à différentes interfaces réseau

37

J'ai deux interfaces réseau différentes, connectées à 2 réseaux. L'un est un eth0 et l'autre un wlan0. Comment puis-je dire à un logiciel de n'utiliser qu'une interface spécifique?

Fondamentalement, je souhaite que Firefox utilise eth0 car il s’agit du réseau des universités et je dois me rendre sur des sites intranet, l’autre étant un réseau wifi ouvert à Internet que je souhaite associer à Chrome.

Je travaille et je dois utiliser l'intranet. Donc, eth0 est mon choix mais eth0 est un intranet sans accès à Internet (évidemment). Depuis que je veux un accès Internet, je suis connecté à wlan0 (wifi universitaire pour les étudiants).

Le problème est que si je suis connecté à la fois, le navigateur recherche www.stackoverflow.com à l’aide de eth0. Je voulais donc assigner un navigateur à utiliser uniquement une interface spécifique.

dierre
la source
Le routage n'est-il pas une meilleure solution à vos problèmes?. Je veux dire, que les connexions à ubuntu.stackexchange.com doivent utiliser la même interface depuis n'importe quel programme.
Javier Rivera

Réponses:

23

Vous ne pouvez pas lier le logiciel client à des interfaces réseau spécifiques, mais vous pouvez indiquer au noyau que vous souhaitez uniquement utiliser une interface réseau pour certaines adresses IP et une autre pour tout le reste. Ceci s'appelle "routage" et peut être configuré en utilisant les commandes /sbin/routeet /sbin/ip.

Si je lis correctement votre question, vous souhaitez vous connecter à des adresses IP intranet via une interface eth0et à Internet via une interface wlan0.

Si vous exécutez la commande ip route list, vous devriez voir une sortie comme celle-ci (les nombres seront différents et vous pourrez également avoir plus de lignes):

$ 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 

Les deux premières lignes vous dire sur les réseaux connectés à des interfaces eth0et wlan0: un trafic réseau aux ordinateurs sur ces réseaux seront directement à eux envoyés par l'interface correspondante.

La dernière ligne vous indique quelle est la "route par défaut": si votre ordinateur veut communiquer avec un ordinateur sur un réseau eth0auquel il n'est pas connecté (par exemple, le serveur stackoverflow.com), il acheminera le trafic via , en passant par l'hôte 10.60.44.1( appelée "passerelle par défaut").

Ainsi, pour acheminer le trafic Internet, wlan0vous devez vous assurer que la dernière ligne de la ip route listsortie indique quelque chose comme:

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

A.B.C.Dest l'adresse IP de la passerelle sur le réseau local sans fil. Si le résultat ne contient pas "dev wlan0", vous pouvez le changer avec la commande suivante:

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

Vous pouvez trouver le correct A.B.C.Dpour wlan0de deux manières:

  1. Regardez dans le répertoire /var/lib/dhcp3/: vous devriez trouver des dhclient-...-wlan0.leasefichiers. Ouvrez la plus récente et recherchez une ligne contenant la chaîne option router: le reste de la ligne vous indique l'adresse IP A.B.C.D.

  2. Demandez à vos administrateurs de réseau local. (Probablement la meilleure chose à faire, de toute façon.)

Avec cette configuration, vous devriez pouvoir:

  • naviguer sur Internet à travers wlan0
  • parcourez votre Intranet eth0, à condition qu’il soit sur un seul réseau .

Si votre intranet couvre plusieurs réseaux, vous devrez leur ajouter des itinéraires. C’est certainement quelque chose qui vous oblige à interagir avec les administrateurs du réseau local. :-)

Riccardo Murri
la source
Juste par curiosité: si je veux lier DNS (inclure les sous-domaines) plutôt que les adresses IP?
dierre
1
@dierre En bref: vous ne pouvez pas, le routage est basé sur les adresses IP. La longue histoire commence en disant que le routage est une chose de la couche réseau 3, de sorte qu'il ne saura même pas les noms DNS, dont la résolution se situe plus haut dans la pile de protocoles réseau ...
Riccardo Murri
ouais ouais, je ne parlais pas de routage. Je veux dire en général. Cela peut-il être fait? Liaison DNS aux interfaces réseau?
dierre
@dierre Que veux-tu faire exactement? Faire répondre un serveur DNS uniquement sur une interface réseau spécifique? Ou avoir un client DNS (c'est-à-dire une résolution DNS) utiliser uniquement une interface sélectionnée?
Riccardo Murri le
1
@Riccardo Murri: ubuntu.stackexchange.com/questions/4988/… et voilà
dierre
2

"ip netns" crée des espaces de noms réseau. Vous pouvez ensuite créer des interfaces virtuelles (ip link add ... veth) et les associer aux espaces de noms.

Les espaces de noms peuvent être configurés pour utiliser différentes routes par exemple (utilisant ainsi différentes interfaces)

Ensuite, vous pouvez exécuter des commandes dans cet espace de noms, qui utiliseront l’espace de noms créé. "Ip netns exec NAME cmd ..."

Source: http://manpages.ubuntu.com/manpages/saucy/fr/man8/ip-netns.8.html

olivervbk
la source