Connecter le FreeRunner au web via USB

De openmoko-fr.
(tester la connexion)
(Mise en garde)
Ligne 3 : Ligne 3 :
  
 
Procédures testées avec les distributions ci-dessous. Pour d'autres distributions, n'hésitez pas à contribuer ;)
 
Procédures testées avec les distributions ci-dessous. Pour d'autres distributions, n'hésitez pas à contribuer ;)
 +
 +
== Un peu de théorie ==
 +
Vous venez de connecter votre Freerunner à votre PC par un câble USB, félicitation; par ce geste anodin , vous venez de créer un nouveau réseau! Ce qui fait de vous un administrateur réseau; rassurez vous ce n'est pas douloureux.
 +
 +
Voyons de quoi se compose votre réseau (en fait vos réseaux)
 +
 +
=== Le LAN ===
 +
Vous avez un ordinateur, que nous appellerons le host, qui est connecté à internet via un modem (ou une "box") à l'aide d'une liaison ethernet ou wifi. Vous avez donc créé un réseau appelle LAN. Sur ce réseau peuvent être connectés plusieurs ordinateurs. Ce réseau possède son propre espace d'adressage (généralement en 102.168.0.0 ou 102.168.1.0).
 +
 +
=== Le FR ===
 +
Sur le PC host, vous venez de créer un réseau compsé de votre host et de votre FR. Ce réseau est distinct du précédent; votre PC host appartient aux 2 réseaux, mais comme il est relié à chacun des réseaux par 2 interfaces différentes, il a 2 adresses (une coté LAN, et une coté FR).
 +
Si vous voulez que le FR communique avec internet, il va falloir configurer votre PC host pour qu'il fasse la passerelle entre les 2 réseaux.
 +
 +
== les espaces d'adressage ==
 +
Votre installation ressemble donc à ceci
 +
 +
FR------HOST------box------internet
 +
  FR        LAN
 +
 +
Le FR étant relié par câble USB, le réseau ainsi créee ne comportera jamais plus que ces 2 éléments
 +
 +
'''Il est impératif que les espaces d'adressage de ces 2 réseaux soient parfaitement distincts'''
 +
 +
Pour cela, vous avez 2 options
 +
- option 1: utiliser un espace d'adressage de base commun (par ex 192.168.0.0), et le scinder en 2 en utilisant des masques de sous réseau
 +
- option 2: utiliser 2 espaces d'adressage de base distinct (par ex 192.168.0.0 d'un coté, et 192.168.9.0 de l'autre)
 +
 +
== configuration ==
 +
=== option 1: 2 sous réseaux ===
 +
Partons de l'hypothése que votre box vous impose un réseau de type 192.168.0.0, et que l'adresse du routeur/modem est 192.168.0.1 (à vous d'adapter)
 +
Par défaut le FR est configuré avec l'adresse 192.160.0.202. Il y a donc un conflit car cette adresse est déjà contenue dans le réseau LAN. Si nous voulons conserver l'adresse du FR, il faut créer un sous réseau coté FR en ne conservant que quelques adresse hautes dans la tranche 192.168.0.0 à l'aide d'un masque, et exclure toute les autres (que nous réserverons pour le LAN).
 +
 +
Ce qui donne coté FR (fichier /etc/network/interfaces):
 +
 +
# Ethernet/RNDIS gadget (g_ether)
 +
# ... or on host side, usbnet and random hwaddr
 +
auto usb0
 +
iface usb0 inet static
 +
address 192.168.0.202
 +
netmask 255.255.255.192
 +
up route add default gw 192.168.0.200 metric 8
 +
up echo nameserver 192.168.0.200 > /etc/resolv.conf
 +
down route del default gw 192.168.0.200 metric 8
 +
 +
explications:
 +
nous affectons au FR l'adresse 192.168.0.202
 +
nous limitons ensuite l'espace d'adressage de ce réseau à l'aide d'un masque. Ce sous réseau ne comportera donc que les adresses 192.168.0.192 à 192.168.0.254 (c'est plus que suffisant puisque de tout façon nous n'en avons besoin que de 2).
 +
Nous définissons ensuite l'adresse de la passerelle pour accéder à toute adresse qui ne serait pas comprise dans la plage ci dessus (internet, ou un autre ordinateur du LAN). La passerelle est à l'adresse 192.168.0.200, qui est en fait l'adresse du port USB de votre PC host (c'est le seul accès vers le monde extérieur pour votre FR, voir croquis) Vous noterez que cette route n'est configurée qu'a la connexion du câble USB de façon à ne pas mette la pagaille lorsque vous travaillez en wifi!
 +
 +
Pour avoir une résolution d'adresse cohérente avec votre politique réseau, il faut mettre dans le fichier /etc/resolv.conf la ligne
 +
nameserver 192.168.0.200; c'est ce qui est fait automatiquement à la connexion du câble usb par la ligne up echo nameserver ....
 +
 +
 +
Les requêtes DNS sont envoyées aux PC HOST, qui transmettra à la box (généralement 192.168.0.1), qui elle même renverra vers les serveurs DNS de votre FAI
 +
 +
Vous pouvez aussi mettre directement l'adresse de votre routeur sur le LAN, la box (192.168.0.1)
 +
 +
Evitez de mettre l'adresse de serveur DNS externe comme on le voit parfois (par ex openDNS). Vous pouvez à la rigueur mettre l'adresse du DNS de votre FAI.
 +
 +
 +
Coté PC host:
 +
Il faut commencer par identifier comment s'appelle la connexion coté USB, ça dépend de la distribution qui tourne sur votre FR. C'est soit usb0, soit eth1 ou eth2 (faire un ifconfig pour le savoir). Prenons le cas eth2, à vous d'adapter.
 +
 +
fichier /etc/network/interfaces
 +
 +
# freerunner SHR
 +
allow-hotplug eth2
 +
auto eth2
 +
iface eth2 inet static
 +
address 192.168.0.200
 +
netmask 255.255.255.192
 +
up iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE
 +
up echo 1 > /proc/sys/net/ipv4/ip_forward
 +
down iptables -D POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE
 +
 +
Pour la première partie, se rapporter à la config du FR.
 +
La deuxième partie permet à votre PC host de faire le lien entre le réseau FR coté USB, et le réseau LAN qui donne accès à internet.
 +
Vous constaterez que cette configuration s'active à la connexion du câble USB, et se désactive à sa connexion.
 +
 +
Reste encore un détail à régler: si vous souhaitez contacter votre FR depuis un autre PC du LAN. Ce PC ne va pas savoir qu'il doit passer par le PC host pour joindre le sous réseau du FR (et en particulier l'adresse 192.168.0.202).
 +
Qu'a cela ne tienne, il suffit d'indiquer dans le fichier interface du PC concerné:
 +
up route add -net 192.168.0.192/25 gw 192.168.0.200
 +
 +
Ce qui signifie: pour toute adresse au delà de 192.168.0.125, il faut passer par le PC host.
 +
Vous pourrez ainsi établir un connexion avec votre FR.
 +
 +
=== option 2: 2 réseaux ===
 +
Dans ce cas nous partons toujours du principe que vous êtes en 192.168.0.0 en réseau interne (entre votre pc et le routeur qui vous fournit internet).
 +
Dans cette option, nous allons créer coté FR un espace d'adressage complètement différent de celui du LAN
 +
Prenons par exemple le 192.168.9.0 qui est rarement utilisé par les modem/routeur, vous pouvez changer à votre convenance.
 +
 +
Voici un schéma sommaire pour comprendre:
 +
 +
__________ 192.168.9.0 ___ 192.168.0.0 ________ Ip FAI
 +
 +
Freerunner------------------ Pc ---------------- routeur-----------Internet
 +
 +
 +
'''Configuration du pc host'''
 +
Le PC host sert de passerelle, donc il doit avoir une interface en 192.168.0.x (votre interface normale, si vous êtes déjà connecté au net)
 +
Il nous reste maintenant à configurer l'interface côté réseau du pc qui est frontale au freerunner. Commençons par identifier son nom: faire un ifconfig avant d'avoir branché le freerunner puis après, l'interface qui apparait est celle coté freerunner.
 +
 +
fichier /etc/network/interfaces
 +
 +
# freerunner SHR
 +
allow-hotplug eth2
 +
auto eth2
 +
iface eth2 inet static
 +
address 192.168.9.200
 +
netmask 255.255.255.192
 +
up iptables -A POSTROUTING -t nat -s 192.168.9.0/24 -j MASQUERADE
 +
up echo 1 > /proc/sys/net/ipv4/ip_forward
 +
down iptables -D POSTROUTING -t nat -s 192.168.9.0/24 -j MASQUERADE
 +
 +
 +
 +
 +
Bien sûr il faut remplacer eth2 par l'interface en question correspondant au freerunner. (
 +
 +
Notre pc est donc maintenant sur le réseau en 192.168.9.0 côté freerunner et eth2 (avec comme adresse 192.168.0.200), et de l'autre au réseau 192.168.0.0 (le LAN, qui donne accés à internet)
 +
 +
'''Configuration du freerunner'''
 +
 +
Ce qui donne coté FR (fichier /etc/network/interfaces):
 +
 +
# Ethernet/RNDIS gadget (g_ether)
 +
# ... or on host side, usbnet and random hwaddr
 +
auto usb0
 +
iface usb0 inet static
 +
address 192.168.9.202
 +
netmask 255.255.255.0
 +
up route add default gw 192.168.9.200 metric 8
 +
up echo nameserver 192.168.9.200 > /etc/resolv.conf
 +
down route del default gw 192.168.9.200 metric 8
 +
 +
 +
Dans ce fichier on voit que le freerunner a une adresse ip de 192.168.9.202 et qu'il a comme passerelle notre pc host via l'adresse 192.168.9.200. Il peut donc se connecter au LAN, et à internet. N'oubliez pas que vous avez changé l'adresse ip de votre FR (192.168.0.202 par défaut sur la quasi totalité des distributions). Il faut s'en souvenir si vous essayez d'appliquer un tuto qui donne cette adresse.
 +
 +
== tests ==
 +
Nous allons procéder par étape:
 +
 +
=== tester la connection entre le PC host et le FR ===
 +
coté FR:
 +
ping 192.168.9.200
 +
 +
coté PC:
 +
ping 192.168.9.202
 +
 +
=== test de l'accés à internet du FR ===
 +
 +
Depuis le FR (en direct ou via ssh)
 +
ping 74.125.19.147
 +
 +
Il s'agit d'une adresse de google qui est normalement toujours active.
 +
 +
Dernier test pour vérifier la résolution d'adresse:
 +
ping www.google.fr
 +
 +
Vous noterez que dans la configuration proposée, la résolution d'adresse est effectuée par le DNS configuré pour votre LAN. Nous n'utilisons pas de serveur DNS spécifique pour le FR comme on peut le voir quelquefois (en tant qu'administrateur réseau, vous devez maîtriser la résolution d'adresse et ne pas la confier à n'importe qui).
 +
 +
Si la résolution d'adresse ne fonctionne pas, vous pouvez ajouter la ligne
 +
nameserver 192.168.0.1
 +
dans le fichier /etc/resolv.conf du FR (en adaptant avec l'adresse de votre box sur le LAN, 192.168.0.1 étant un cas courant)
 +
Si ça ne fonctionne toujours pas, recopiez le contenu du fichier resolv.conf du PC HOST dans celui du FR.
 +
 +
== Mise en garde ==
 +
 +
Il y a un conflit avec le gestionnaire de réseau (k)networkmanager fait que, lorsque l'on branche notre FR avec son cable usb, la connection automatique mise en place, avec la procédure que vous venez de suivre, tombe au bout de 2 secondes. Une solution est faire
 +
sudo killall *networkmanger* avant de brancher le FR et
 +
sudo networkmanger &.
 +
Apres un redémarrage de l'ordinatuer , il n'y plus besoin de fermer (k)networkmanager, mais cela ne marche qu'un seul fois chez moi..
 +
 +
= LA SECTION QUI SUIT EST OBSOLETE =
 +
 +
  
 
== Sur le PC hôte ==
 
== Sur le PC hôte ==

Version du 26 septembre 2009 à 22:24

Outils personnels