[résolu] ssh et interfaces réseau

Salut,

J’ai configuré deux interfaces réseau sur une machine, eth0 pour l’ethernet et ath0 qui correspond au wifi. Sans rien toucher apres un reboot, certaines applications qui utilisent le réseau (par exemple apt-get) passent automatiquement par l’interface wifi quand le cable ethernet est débranché, mais avec ssh j’ai cette erreur:

$ ssh eric@192.168.0.1 ssh: connect to host 192.168.0.1 port 22 : No route to host
Pour pouvoir lancer ssh je fais d’abord:

et ça fonctionne.
Quelqu’un sait corriger le probleme pour de bon? Voici mon /etc/network/interfaces au cas ou:

[code]# The loopback network interface
auto lo
iface lo inet loopback

The primary network interface

#allow-hotplug eth0
auto eth0
iface eth0 inet static
address 192.168.0.2
gateway 192.168.0.42
netmask 255.255.255.0

The wireless network interface

wpasupplicant roaming mode

#allow-hotplug ath0
auto ath0
iface ath0 inet manual
wpa-driver wext
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

logical interfaces for wpasupplicant (see wpa_supplicant.conf)

iface default inet dhcp
iface home inet dhcp
[/code]
Et plus généralement lorsqu’une machine comporte plusieurs interfaces réseau et qu’une appli a besoin de se connecter, quelle interface est choisie en priorité?
Merci :slightly_smiling:

salut

Pour info j’ai le même problème parfois sous … Windows. Il faut parfois sur certains PC (dans un cadre professionnel) que je désactive le réseau WIFI pour être sur qu’il utilisera la carte Ethernet.

Pour contourner le problème, je ferais un script qui désactive eth0, lance SSH puis relance eth0.

Sinon y’a ça http://www.sawadka.org/article.php3?id_article=147

Ce sont les règles et tables de routage du noyau qui déterminent l’interface de sortie, principalement en fonction de l’adresse de destination, et quelle que soit l’application.

Quand tu obtiens l’erreur, qu’affichent

ip addr show ip route show ip rule show
(installer le paquet iproute si la commande ‘ip’ n’est pas disponible)

Salut,

Concernant linux je ne sais pas mais j’aimerai aussi savoir comment définir la carte utilisé par défaut.

Didebian > sous windows, pas besoin de désactiver ta carte wifi, tu vas dans panneau de configuration > connexions réseau > (dans le menu du haut) Avancé > Paramètres avancé et dans l’onglet “carte et liaisons” tu défini l’ordre dans lequel utilisé tes connections.

didebian> Quand les deux interfaces sont actives le traffic a l’air de passer par le wifi en effet, par contre si le cable ethernet est débranché seul ssh échoue au lieu d’essayer de se connecter en wifi (a moins de déconfigurer eth0 on dirait).

Pascal>

[code]$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.0.2/24 brd 192.168.0.255 scope global eth0
3: wifi0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 195
link/ieee802.11 00:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
4: ath0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.0.46/24 brd 192.168.0.255 scope global ath0

$ ip route show
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.2
192.168.0.0/24 dev ath0 proto kernel scope link src 192.168.0.46
default via 192.168.0.42 dev ath0
default via 192.168.0.42 dev eth0

$ ip rule show
RTNETLINK answers: Operation not supported
Dump terminated[/code]
Et sinon:

$ /sbin/route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 192.168.0.0 * 255.255.255.0 U 0 0 0 ath0 default 192.168.0.42 0.0.0.0 UG 0 0 0 ath0 default 192.168.0.42 0.0.0.0 UG 0 0 0 eth0
Par contre je ne sais pas interpréter les résultats.

Bonjour,

n regardant les réseultats de tes commandes, on s’appercoit qu’il y a deux sorties réseaux vers la meme adresse réseau qui est: 192.168.0.0/24 ce qui est une erreur. Il te faut deux adresses de réseaux différentes, sinon ton PC ne saura pas laquelle choisir ex:

eth0:192.168.0.5
ath0:192.168.1.6

Voila ou se trouve ton soucis… et voila pourquoi un tel comportement de ton réseau.

Bonne journée.

[quote=“grigric”]
on s’appercoit qu’il y a deux sorties réseaux vers la meme adresse réseau qui est: 192.168.0.0/24 ce qui est une erreur.
Bonne journée.[/quote]

Tiens c’est étrange le système ne lui dise pas: Attention gars ! chaques interfaces réseau doit avoir une adresse IP unique…
Et si c’est le cas seulement 1 des deux ne peut rester active…

grigric & didebian> ben chaque interface a sa propre ip:
192.168.0.2 pour eth0 (définie statiquement)
192.168.0.46 pour ath0 (attribuée par DHCP)

[quote=“SeeSharp”]grigric & didebian> ben chaque interface a sa propre ip:
192.168.0.2 pour eth0 (définie statiquement)
192.168.0.46 pour ath0 (attribuée par DHCP)[/quote]
Mais ces deux adresses sont dans le même sous-réseau IP, donc ce sous-réseau est joignable par l’une ou l’autre interface. C’est ce qu’indique la table de routage. Pour chaque destination ayant plusieurs routes ambiguës, le noyau choisit une des routes, et il n’est pas évident de déterminer laquelle a priori.

Il y a une différence entre apt-get et ta commande ssh : apt-get communique avec des serveurs situés à l’extérieur du LAN, via la passerelle, alors que ta commande ssh tente de communiquer avec une adresse de destination située sur le LAN, joignable directement. Mon idée est que la route par défaut utilisée est celle passant par l’interface wifi, alors que la route directe vers le LAN utilisée est celle passant par l’interface ethernet. Je parie qu’un ssh vers une machine située au delà de la passelle marcherait. Tu peux vérifier avec ces commandes :

ip route get 192.168.0.1 ip route get <adresse_exterieure>

Ok vu, merci pour tes explications :slightly_smiling:
D’apres la table de routage les paquets a destination du LAN son envoyés via eth0 et ceux vers l’extérieur sur ath0, d’ou l’erreur du client ssh lorsque le cable réseau est débranché si j’ai bien compris.
Donc j’aimerais pouvoir modifier les routes dynamiquement en fonction de l’état du cable ethernet:
si cable branché => eth0 pour le LAN et l’extérieur
sinon => wifi pour les deux
C’est possible de faire ça?

Tu peux regarder du côté de ifplugd, laptop-net ou network-manager.