L'objectif est de configurer une connexion réseau en utilisant les outils de configuration réseau "bas niveau", dans le cadre d'une machine disposant d'une connexionEthernet filaire reliée à un réseau local.Deux méthodes sont décrites : méthode "rapide" utilisant un serveur DHCP disponible sur le réseau local, méthode avec configuration manuelle de l'adresse et de la route.
Les différentes étapes sont décrites pas à pas, pour faciliter l'identification d'un problème éventuel. Dans la pratique, toutes ces étapes ne sont généralement pas nécessaires et la configuration se résume à quelques commandes.
Télécharger et installer les paquets manquants par rapport à la liste suivante :
# aptitude install iproute2 iw wpasupplicant isc-dhcp-client dnsutils bind9-host host
Vérifier la présence de la boucle locale lo et de l'interface Ethernet filaire eth0 :
$ ls /sys/class/net
eth0 lo wlan0
Noter le type d'interface (dans le cas présent pci) et l'adresse sur le bus (ici 00:03.0) de l'interfaceeth0 :
$ ls -la /sys/class/net/eth0
lrwxrwxrwx 1 root root 0 mars 16 11:34 /sys/class/net/eth0 -> ../../devices/pci0000:00/0000:00:03.0/net/eth0
$ lspci -k |grep -A2 net
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
Subsystem: Intel Corporation PRO/1000 MT Desktop Adapter
Kernel driver in use: e1000
Comme indiqué (Kernel driver in use), le module (e1000) est chargé, ce que l'on peut vérifier avec la commande lsmod :
$ lsmod |grep e1000
e1000 122545 0
$ ip link show lo |grep lo:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
Si la boucle lo est DOWN, l'activer
# ip link set dev lo up
Tester la boucle, ce qui permet de vérifier que la pile TCP/IP fonctionne :
$ ping -c2 127.0.0.1 |grep loss
2 packets transmitted, 2 received, 0% packet loss, time 999ms
Si l'objectif est d'établir une connexion "manuelle", il est préférable d'éliminer les interférences possibles avec d'éventuels autres services ou gestionnaires de réseau actifs, tels que wicd ou NetworkManager. Pour cela, vérifier le statut des services correspondants :
$ systemctl -a |grep -E 'wicd|networking|NetworkManager'
networking.service loaded active running LSB: Raise network interfaces.
wicd.service loaded active running LSB: Starts and stops Wicd
Le service réseau "networking" est chargé de la configuration du réseau à partir du fichier /network/interfaces et des commandes ifup/ifdown. Il est fourni par le paquet iproute2. Il n'est pas nécessaire de le désactiver, car il n'intervient pas spontanément en dehors du démarrage.
Le service réseau wicd est relancé régulièrement par le démon wicd-daemon. Il ne peut donc pas être désactivé simplement. Pour le désactiver, une solution consiste à le désinstaller ... avec ses dépendances.
# aptitude purge wicd-daemon
Le service NetworkManager est installé par le paquetnetwork-manager / network-manager. Il ne doit pas être présent en même temps que wicd.
# systemctl stop networking
De même, si l'objectif est d'établir une connexion "à partir de zéro", sans interférence avec une configuration préalable, désactiver l'interface eth0 et purger les adresses et routes réseaux :
# ip link set dev eth0 down
# ip -s -s address flush dev eth0
# ip -s -s route flush dev eth0
# ip -s -s neigh flush dev eth0
Activer l'interface réseau
# ip link set eth0 up
Vérifier que l'interface est activée "UP"
$ ip link show eth0 |grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
Obtenir une adresse locale, les routes et les DNS
# dhclient eth0
Vérifier l'obtention de l'adresse locale, dans le cas présent 10.0.2.15
# ip address show eth0 |grep inet
inet 10.0.2.15/32 scope global eth0
Vérifier l'obtention d'une passerelle (ici 10.0.2.2) pour l'accès internet (default) et la route vers le réseau local
$ ip route
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0 scope link src 10.0.2.15
Vérifier l'accès au réseau local en utilisant l'adresse dela passerelle (ici 10.0.2.2)
$ ping -c2 10.0.2.2
2 packets transmitted, 2 received, 0% packet loss, time 999ms
Vérifier l'accès internet, indépendamment d'un serveur DNS, en utilisant une adresse ip numérique (ici un serveur google)
$ ping -c2 8.8.8.8 |grep loss
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
Vérifier la disponibilité d'un serveur DNS, en utilisant l'URL d'un site (ici celle de google)
$ ping -c 2 www.google.fr |grep loss
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
Activer l'interface réseau
# ip link set eth0 up
Vérifier que l'interface est activée "UP"
$ ip link show eth0 |grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
Fournir une adresse locale à l'interface (elle doit-être unique sur le réseau local) :
# ip address add 10.0.2.15/16 dev eth0
Vérifier l'obtention de l'adresse locale
$ ip address show eth0 |grep inet
inet 10.0.2.15/32 scope global eth0
Fournir la route pour les adresses sur le réseau local
# ip route add 10.0.2.0/24 src 10.0.2.15 dev eth0 # spécifier proto static ??
Vérifier l'accès au réseau local en utilisant l'adresse dela passerelle (ici 10.0.2.2)
$ ping -c2 10.0.2.2
2 packets transmitted, 2 received, 0% packet loss, time 999ms
Fournir la route et la passerelle (ici 10.0.2.2) pour les adresses par défaut
# ip route add default via 10.0.2.2 dev eth0
Vérifier l'obtention des routes pour "default" et le réseau local
$ ip route
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0 scope link src 10.0.2.15
Vérifier l'accès internet, indépendamment d'un serveur DNS, en utilisant une adresse ip numérique (ici un serveur google)
$ ping -c2 8.8.8.8 |grep loss
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
Vérifier la présence de serveurs DNS dans resolv.conf
$ cat /etc/resolv.conf
Remplacer si nécessaire ou ajouter l'adresse d'un ou plusieurs serveurs DNS :
# echo nameserver 8.8.8.8 > /etc/resolv.conf
# echo nameserver 8.8.4.4 >> /etc/resolv.conf
Vérifier la disponibilité d'un serveur DNS, en utilisant l'URL d'un site (ici celle de google)
$ ping -c 2 www.google.fr |grep loss
2 packets transmitted, 2 received, 0% packet loss, time 1002ms