réseau sur USB (freerunner)

Bonsoir,
il m’arrive un truc étrange sur ma lenny. Je l’utilise pour connecter un neo freerunner (USB) pour accéder au net.
Cet appareil possède comme adresse 192.168.0.202, et cherche un PC avec comme adresse 192.168.0.200.
Je réalise donc la config suivante:

#ifconfig usb0 192.168.0.200 netmask 255.255.255.0 #ip addr add 192.168.0.200/28 dev usb0 ssh root@192.168.0.202

Et j’ai mon accés ssh.
Mais le PC host n’a plus accès à internet ( via modem/routeur 192.168.0.1)!
Aprés recherche:

  • le fichier résolv.conf est vid
  • plus de route par défaut

Je remet une ligne

[quote]nameserver 192.168.0.1[/quote] dans resolv.conf, et je remet une route par défault

et ça repart, jusqu’a la prochaine connexion/déconexion du freerunner.

Je voudrait bien comprendre ce qui se passe.
J’ai trouvé une solution, mais elle semble bien compliquée:
http://wiki.openmoko.org/wiki/USB_Networking#Openmoko_Networking_Setup

Pourquoi utiliser à la fois ifconfig et ip addr qui attribuent la même adresse mais avec un masque différent ?

Je ne vois pas trop ce qui peut supprimer la route par défaut et vider resolv.conf. Le client DHCP qui part en vrille ? Ça se produit dès que le bidule USB est branché ou après la configuration de l’interface ? usb0 est défini dans /etc/network/interfaces ? Il n’y aurait pas quelque diablerie udev/hotmplug là-dessous ?

Mais apparemment les sous-réseaux IP du bidule USB et du routeur se recouvrent, ce qui n’est pas génial. Pour minimiser les risques de conflit, je suggèrerais de configurer l’interface USB comme un lien ethernet point à point sans définir de sous-réseau :

ca se produit lorsque je branche, ou débranche, le freerunner.
J’ai oublié de préciser que je configurai aussi iptables, mais cela n’a pas l’air de concerner directement mon problème

iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24 sysctl -w net.ipv4.ip_forward=1

Mon problème est que je ne comprends pas vraiment à quoi servent les commandes du tuto.
Si je ne tape que la 1ere, ça ne fonctionne pas (pas de ping) (c’est la seule que je maitrise: j’affecte une adresse ip au port USB)

J’ai oublié de préciser que le PC host est en IP fixe.

Si ça se produit dès que tu branches le bidule, alors c’est peut-être lié à une règle udev ou une action, un script qui se déclenche sur l’événement udev. Par contre tu dis que la route par défaut et le contenu de resolv.conf sont effacés aussi lors du débranchement ?

Comme toi je ne pense pas que la règle iptables y soit pour quelque chose. Par contre si le but est que le bidule puisse joindre le réseau local ou l’extérieur, il est AMA préférable d’utilise la foncion proxy-ARP du noyau comme indiqué dans le tutorial plutôt que du NAT. Quand on peut éviter le NAT, il ne faut pas se priver.

La commande ifconfig du tutorial configure l’adresse et le masque de l’interface usb0, mais dans le même sous-réseau 192.168.0.0/24. que l’interface connectée au réseau local. Il y a donc deux routes contradictoires pour la même plage d’adresses avec deux interfaces différentes. La machine va en utiliser une seule (peu importe laquelle, je ne veux pas savoir car c’est une situation anormale) aussi bien pour joindre le réseau local et le bidule. Donc il y a forcément quelque chose qui ne marchera pas : soit le bidule soit le réseau local sera injoignable. Dans ton cas il semble que c’est le bidule, la première route ayant la priorité.

La commande “ip addr add” fait presque la même chose : elle ajoute une adresse (au lieu de remplacer l’adresse existante) et son masque/longueur de préfixe à l’interface usb0. Mais avec une longueur de préfixe différente, /28 au lieu de /24, c’est-à-dire un masque 255.255.255.240 au lieu de 255.255.255.0. Le sous-réseau 192.168.0.192/28 ainsi défini est plus petit et par conséquent la route correspondante a priorité sur la route vers le sous-réseau 192.168.0.0/24. La plage d’adresses 192.168.0.192-192.168.0.207 est donc routée par usb0, le reste de la plage 192.168.0.0-192.168.0.255 continant d’être routé par l’interface du réseau local.

Pour faire court : la commande ifconfig avec le masque 255.255.255.0 ne sert à rien. Si tu ne te sens pas à l’aise avec ip, tu peux utiliser ifconfig avec le masque 255.255.255.240. Mais si des machines du réseau local ont une adresse dans l’intervalle 192.168.0.192-192.168.0.207, alors elles seront injoignable car la machine les recherchera sur l’interface usb0. C’est pourquoi j’ai suggéré une commande ip un peu différente qui ne définit pas de sous-réseau sur l’interface usb0.

OK merci,
je vais regarder ça de plus prêt maintenant que je comprends un peu mieux ce qui se passe.
La NAT, je connais, mais le proxy ARP, c’est nouveau pour moi.
De la lecture en perspective!