Les commandes sont présentées en considérant successivement
la machine, non connectée à un réseau
la machine connectée à un réseau privé
Sommaire
Deux familles d'outils de configuration réseau "bas-niveau" coexistent à ce jour :
iproute2 et iw destinés à devenir les outils "canoniques", et qui fournissent les commandes ip, iw, ...
net-tools et wireless-tools dépréciés, mais toujours utilisés par certains gestionnaires de réseau comme wicd, et qui fournissent les commandes ifconfig, iwconfig, arp, route, ....
Ces deux outils peuvent être installés et utilisés simultanément, toutefois, dans ce qui suit, les commandes utilisées sont celles de iproute2 et iw.
Les commandes nslookup et dig sont fournies par le paquet dnsutils.
La commande host est fournie par le paquet bind9-host.
Dans ce document
périphérique réseau, ou tout simplement périphérique, désigne une interface matérielle (carte réseau, ..) et correspond au terme anglais "device"
interface réseau, ou tout simplement interface, est utilisé pour traduire le terme anglais "link"
$ ls -la /sys/class/net
total 0
drwxr-xr-x 2 root root 0 mars 3 14:29 .
drwxr-xr-x 40 root root 0 mars 3 14:29 ..
lrwxrwxrwx 1 root root 0 mars 3 14:29 eth0 -> ../../devices/pci0000:00/0000:00:03.0/net/eth0
lrwxrwxrwx 1 root root 0 mars 3 14:29 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx 1 root root 0 févr. 15 23:59 usb0 -> ../../devices/pci0000:00/0000:00:1d.7/usb0/1-3/1-3:1.0/net/usb0
Le noyau a reconnu :
Les informations obtenues ci-dessus permettent d'identifier les périphériques et les drivers associés :
$ lspci -s 00:03.0 -k
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
Le composant est un contrôleur ethernet Intel Pro/1000MT, son driver e1000 est chargé
$ lsusb -s 1:
Bus 001 Device 05: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II], GT-I9300
Le composant est un téléphone (modem) Samsung GT-I9300
$ lsusb -t |grep -A3 "Bus 1" |grep "Dev 5" |grep "If 1"
|__ Port 3: Dev 5, If 1, Class=CDC Data, Driver=rndis_host, 480M
Le driver est rndis_host
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:c6:f9:5b brd ff:ff:ff:ff:ff:ff
La machine dispose de :
une interface (eth0)
$ ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:c6:f9:5b brd ff:ff:ff:ff:ff:ff
# ip link set dev eth0 up
# ip link set dev eth0 down
$ cat /sys/class/net/eth0/address
00:24:8c:88:34:05
$ ip link show eth0|grep link |awk '{print $2;exit}'
00:24:8c:88:34:05
Utilisation de la commande macchanger du paquet homonyme
$ macchanger eth0
Current MAC: c8:60:00:b9:28:aa (ASUSTek COMPUTER INC.)
Permanent MAC: c8:60:00:b9:28:aa (ASUSTek COMPUTER INC.)
# macchanger -a eth0
Current MAC: c8:60:00:b9:28:aa (ASUSTek COMPUTER INC.)
Permanent MAC: c8:60:00:b9:28:aa (ASUSTek COMPUTER INC.)
New MAC: 00:c0:90:42:99:f7 (PRAIM S.R.L.)
$ cat /etc/networks
default 0.0.0.0
loopback 127.0.0.0
link-local 169.254.0.0
Quelques gestionnaires de réseau et nom des services associés
ifupdown - /etc/network/interfaces - fourni par iproute2 : networking
wicd-daemon - fourni par wicd / wicd-gtk : wicd
État d'un gestionnaire
$ systemctl status wicd ● wicd.service - LSB: Starts and stops Wicd Loaded: loaded (/etc/init.d/wicd) Active: active (running) since jeu. 2016-03-03 12:19:48 CET; 4h 24min ago CGroup: /system.slice/wicd.service ├─6358 /usr/bin/python -O /usr/share/wicd/daemon/wicd-daemon.py ├─6362 /usr/bin/python -O /usr/share/wicd/daemon/monitor.py └─6755 /sbin/dhclient -v eth0
Contrôle d'un gestionnaire
# systemctl [start|stop|restart] networking
$ hostname -I
192.168.0.11
$ ip address show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:c6:f9:5b brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fec6:f95b/64 scope link
valid_lft forever preferred_lft forever
L'interface eth0 a pour adresse 10.0.2.15.
$ ip -4 a show eth0 |grep inet |awk '{print $2;exit}'
10.0.2.15/24er
# ip address add 192.168.1.13/16 dev eth0
# ip address del 192.168.1.15/16 dev eth0
Suppression de toutes les adresses (y compris ip v6)
# ip -s -s address flush dev eth0
$ ip route
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15
169.254.0.0/16 dev eth0 scope link metric 1000
Dans cet exemple, trois routes sont indiquées, toutes pour la même interface (eth0) :
La route par défaut (pour toutes les destinations, sauf celles indiquées dans les lignes suivantes). Cette route utilise la passerelle 10.0.2.2
La route du réseau privé (10.0.2.0/24) auquel appartient l'interface eth0 d'adresse 10.0.2.15. Sur cette route, les connexions entre machines sont directes.
Addition d'une route pour les adresse "par défaut"
# ip route add default via 10.0.2.2 dev eth0
# ip route add 10.0.2.0/24 src 10.0.2.15 dev eth0
Suppression d'une route
# ip route flush 10.0.2.0/24 src 10.0.2.15 dev eth0
Suppression de toutes les routes associées à une interface
# ip -s -s route flush dev eth0
Affichage adresse passerelle
$ ip route get 1 |awk '{print $3;exit}'
10.0.2.2
Cache routes
Le noyau constitue avec le temps un cache pour déterminer plus rapidement les routes. Le contenu de ce cache peut-être visualisé :
$ ip route show cache
Suppression des routes dans le cache
# ip -s -s route flush cache
Alias adresses ip
$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 buster
192.168.0.1 box
192.168.0.19 pi4e
192.168.0.20 pi4w
192.168.0.21 pi0w
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Recherche des hôtes sur un réseau privé
$ nmap 192.168.1.0/24 -sn
Starting Nmap 6.47 ( http://nmap.org ) at 2016-02-22 22:31 CET
Nmap scan report for box (192.168.1.1)
Host is up (0.0036s latency).
Nmap scan report for debian (192.168.1.34)
Host is up (0.00044s latency).
Nmap scan report for HPC69D85 (192.168.1.39)
Host is up (0.011s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 2.37 seconds
3 machines sont présentes sur le réseau privé (en plus de la machine ayant servi à faire le test) - box, debian et HPC69D85 sont des alias définis dans le fichier hosts.
Contenu du cache ARP - Correspondance adresse IP / adresse MAC
$ ip neigh
192.168.0.5 dev wlp0s20f3 lladdr b8:d9:4d:f4:fc:cd STALE # STALE=périmé
192.168.0.1 dev wlp0s20f3 lladdr b8:d9:4d:f4:fc:cc STALE
$ sudo arp
Adresse TypeMap AdresseMat Indicateurs Iface
192.168.0.5 ether b8:d9:4d:f4:fc:cd C wlp0s20f3
box ether b8:d9:4d:f4:fc:cc C wlp0s20f3
$ sudo ip -s -s neigh flush dev wlp0s20f3 $ sudo ip -s -s neigh flush all purge les caches de toutes les interfaces
Chargement du cache ARP
$ sudo arp-scan -l -I wlp0s20f3
Interface: wlp0s20f3, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9.5 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.0.1 b8:d9:4d:f4:fc:cc (Unknown)
192.168.0.5 b8:d9:4d:f4:fc:cd (Unknown)
192.168.0.14 94:57:a5:0d:a9:5e Hewlett Packard
192.168.0.16 00:22:6c:69:35:c2 LinkSprite Technologies, Inc.
3 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.5: 256 hosts scanned in 2.237 seconds (114.44 hosts/sec). 3 responded
$ ip neigh
192.168.0.5 dev wlp0s20f3 lladdr b8:d9:4d:f4:fc:cd STALE
192.168.0.1 dev wlp0s20f3 lladdr b8:d9:4d:f4:fc:cc REACHABLE
$ nmap 192.168.1.1
Starting Nmap 6.47 ( http://nmap.org ) at 2016-02-22 22:37 CET
Nmap scan report for box (192.168.1.1)
Host is up (0.0026s latency).
Not shown: 996 filtered ports
PORT STATE SERVICE
53/tcp open domain
80/tcp open http
1287/tcp open routematch
49152/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 5.26 seconds
4 ports sont ouverts sur la machine à l'adresse 192.168.1.1
Recherche des machines (interfaces) avec port donné ouvert
$ nmap 127.0.0.1/8 -p 631 |grep -B3 open
Nmap scan report for localhost (127.0.0.1) Host is up (0.0010s latency). PORT STATE SERVICE 631/tcp open ipp .....
21 - FTP - Transfert de fichiers
22 - SSH - SSH remote login protocol
25 - SMTP - Envoi de courrier
53 - DNS - Serveur de noms
80 - HTTP - Serveur web
110 - Pop3 - Réception de courrier
123 - ntp - Protocole temps réseau
143 - imap - Procole d'accès messagerie internet
631 - ipp - Serveur d'impression cups
Un serveur dhcp permet d'attribuer automatiquement les adresses réseau, routes, DNS,..nécessaires à la configuration du réseau.
# dhclient eth0
A noter que à chaque relance de dhcp, le fichier /etc/resolv.conf contenant les adresses des serveurs DNS, est réécrit par dhcp, les éventuelles modifications qui y auraient été effectuées sont donc perdues.
# nano /etc/dhcp/dhclient.conf
.....
supersede domain-name-servers 8.8.8.8, 8.8.4.4;
.....
Attention à ne pas oublier les virgules entre les adresses et le point-virgule à la fin de la ligne!
Alternativement, pour ajouter (prepend) des adresses choisies aux adresses fournies par le service dhcps, utiliser la commande prepend :
# nano /etc/dhcp/dhclient.conf
.....
prepend domain-name-servers 8.8.8.8, 8.8.4.4;
.....
Stopper et relancer le serveur dhcp, les nouvelles adresses seront prises en compte, ce que l'on peut vérifier dans /etc/resolv.conf et avec nslookup par exemple.
# dhclient -r eth0
Adresses serveurs DNS : les adresses des serveurs dhcp sont définies dans le fichier resolv.conf :
$ cat /etc/resolv.conf
nameserver 192.168.1.239
nameserver 192.168.1.254
Note : Les modifications effectuées dans le fichier sont perdues et remplacées par celles fournies par le serveur dhcp lorsqu'il est invoqué. Voir dhcp.
Serveur DNS utilisé
$ nslookup 1 |grep -i server
Server: 192.168.1.239
Le serveur DNS pour l'adresse (quelconque) 1 est 192.168.1.239.
La commande dig est également utilisable :
$ dig 1 |grep SERVER
;; SERVER: 8.8.8.8#53(8.8.8.8)
$ dig +short myip.opendns.com @resolver1.opendns.com
82.67.140.211
$ curl -4 icanhazip.com
$ curl -6 iconhazip.com
Adresse ip à partir du nom de domaine
$ host ifconfig.co
ifconfig.co has address 188.113.88.193
ifconfig.co has IPv6 address 2001:16d8:ee03::cafe:d00d
Nom de domaine à partir de l'adresse ip
$ host -i 94.23.17.209
209.17.23.94.in-addr.arpa domain name pointer legtux.org.
# traceroute -I ifconfig.co
Les options I pour icmp (Use ICMP ECHO for probes) ou T pour tcp (Use TCP SYN for probes) sont à tester en cas de difficultés.
Il est également possible de spécifier le port (-p numéro de port).