Relier sa Raspberry Pi à son PC directement en Ethernet

Posted on 2014-01-12 in Arduino - RPi - Robotique

Dans cet article, nous allons étudier comment connecter son Raspberry Pi directement à son PC pour

  • pouvoir s'y connecter en SSH
  • qu'il ait une connection internet (via le wifi de notre PC)

Configurer le réseau

Le Raspberry Pi et le PC doivent être sur la même plage d'adresse IP pour pouvoir communiquer mais pas sur la même plage d'adresse que l'interface wifi (sinon il y a conflit). Dans la suite, je vais configurer les interfaces éthernet sur 192.168.1.* le wifi étant géré automatiquement par votre gestionnaire habituel (NetworkManager chez moi). Je ne détaillerai que la connexion en IP fixe qui fonctionne très bien mais qui peux être lourde si vous avez beaucoup de machine à configurer. Il vous faudra alors regarder comment installer un serveur DHCP par exemple en suivant les instructions données ici.

Méthode graphique avec NetworkManager

NetworkManager permet de gérer les réseaux plutôt facilement. Ouvrez la fenêtre de configuration et cliquez sur réseaux filaires. Choisissez Ajoutez un profil. Dans la section Identité, donnez un nom au profil et cochez Connecter automatiquement. Dans la section IPV4, changez Automatic (DHCP) en Manuel. Entrez l'adresse IP que vous désirez associer à cette interface. Dans mon cas : 192.168.1.1, le masque de sous réseau : 255.255.255 et la route par défaut : 192.168.1.1.

Cochez Use this connection only for resources on its network.

Enregistrez et activez cette interface.

En ligne de commande

sudo ip addr add 192.168.1.1/24 dev eth0

Configurer le pare feu

Il faut maintenant autoriser la connexion et rediriger le traffic de la raspberry pi vers l'interface wifi. Pour cela, on entre les commandes suivantes :

sudo iptables -A FORWARD -o wlan0 -i eth0 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE

Ou sous Fedora (ou tout autre système utilisant firewalld)

firewall-cmd --zone=public --add-masquerade

À titre d'information : sous Fedora, les trois commandes précédentes permettent de se connecter en SSH à la Raspberry Pi, de pinger une IP depuis la Raspberry Pi mais pas un nom de domaine. Après un certain temps à chercher du côté du resolv.conf, c'est grâce à la commande dig centrale-marseille.fr @8.8.8.8 que j'ai pu voir que le problème était d'un autre ordre. Étrangement cette commande ne vient pas par défaut sous Raspbian. Elle est en revanche présente sous Pidora.

Si vous rencontrez des problèmes, sachez que la commande iptables -F enlève toutes les règles du parefeu.

Pensez également à vérifier que votre système autorise le transfert d'IP

sysctl -a | grep ip_forward

Si la réponse est :

net.ipv4.ip_forward = 0

faîtes, pour autoriser ce paramétrage :

sysctl net.ipv4.ip_forward = 1

Configurons la Raspberry Pi pour le réseau

Il y a deux méthodes pour avoir du réseau : l'IP fixe qui implique de configurer la Raspberry Pi et l'IP attribuée par un serveur DHCP qui tourne sur votre machine (ce qui implique de le configurer mais permet d'installer sa rapsberry pi sans écran).

Avec un serveur DHCP

Installez le paquet dhcp qui devrait être présent dans les dépôts de votre distribution. Éditez ensuite le fichier /etc/dhcp/dhcpd.conf. Il doit ressembler à :

#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
subnet 192.168.1.0 netmask 255.255.255.0 {
         option routers 192.168.1.1;            # passerelle par défaut
        option domain-name-servers 8.8.8.8;# serveurs DNS
        range 192.168.1.2 192.168.1.100;        # plage d’adresse
}

Pour donner une adresse fixe à un hôte (l'adresse mac est requise) :

subnet 192.168.1.0 netmask 255.255.255.0 {
         option routers 192.168.1.1;            # passerelle par défaut
        option domain-name-servers 8.8.8.8;# serveurs DNS
        host daneel.egab {
            hardware ethernet b8:27:eb:44:ca:ee;
            fixed-address 192.168.1.3;
        }
        range 192.168.1.2 192.168.1.100;        # plage d’adresse
}

Le bloc host qui donne l'ip fixe doit être avant la directive range

Il n'y a plus qu'à lancer le serveur dhcp avec la commande systemctl start dhcpd. Pour savoir quelle est l'adresse atribuée à la Raspberry, consultez les log : journalctl -f /usr/sbin/dhcpd ou tail -f /var/log/messages si vous n'utilisez pas journald.

Pour une IP fixe

Mainteant, au tour de la Raspberry Pi de recevoir sa conf.

Pidora

Ouvrez /etc/sysconfig/network-scripts/ifcfg-eth0 et entrez (remplacez les instructions déjà présentes au besoin) :

DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.1.255
ONBOOT=yes
USERCTL=no
DNS=8.8.8.8
PEERDNS=yes
IPV6INIT=no
NM_CONTROLLED=no
NETMASK=255.255.255.0
IPADDR=192.168.1.2
GATEWAY=192.168.1.1
TYPE=Ethernet

Raspbian

Ouvrez /etc/network/interfaces et entrez (en ne modifiant que les lignes concernant l'interface eth0) :

auto eth0
iface eth0 inet static
        address 192.0.2.7
        netmask 255.255.255.0
        gateway 192.0.2.254
        dns-nameservers 8.8.8.8

Et voilà

Normalement tout fonctionne. J'espère que cet article vous a été utile. Si vous avez des questions ou des remarques, n'hésitez pas ;-).

Si vous avez des problèmes avec la résolutions des noms de domaine, entrez dans /etc/resolv.conf

nameserver 8.8.8.8