Aujourd'hui je vais vous parler des différentes possibilités de configurer le réseau filaire sous Raspbian, en ligne de commande bien sûr.
Avant toute chose, vous devais savoir vous avez besoin de plusieurs paramètres afin de configurer votre réseau :
Pour utiliser votre réseau, vous avez besoin des 2 premiers paramètres : votre adresse IPv4 et un masque sous réseau.
Je ne vais pas détailler ce qu'est une adresse IPv4 ni un masque sous réseau.
Dans mes différents exemples, j'utiliserai ces paramètres :
IPv4 : 10.0.0.100
Mask : 255.255.0.0
C'est le minimum pour utiliser les ressources de votre réseau.
Pour sortir de votre réseau, typiquement pour aller sur internet, vous avez besoin d'un paramètre supplémentaire, la passerelle par défaut.
Aussi appelée Router, Gateway, Default Gateway, Default Route, routeur, passerelle réseau ou route par défaut.
Généralement, c'est votre modem/routeur/box qui fait office de passerelle.
Dans mes différents exemples, j'utiliserai ce paramètre :
GW : 10.0.0.1
C'est le minimum pour sortir sur d'autre réseau tel que internet.
Pour résoudre les noms de domaines, qui sont plus facile à retenir que des adresses IPv4 (et je ne vous parlerai pas des IPv6), vous avez besoin d'une ou plusieurs adresses IPv4 d'un ou plusieurs serveurs DNS.
Dans la majorité des cas, c'est votre modem/routeur/box qui fait office de serveur DNS.
Dans mes différents exemples, j'utiliserai ces paramètres :
DNS1 : 10.0.0.1
DNS2 : 208.67.220.220
C'est le minimum pour naviguer sur internet...
Pour avoir des informations sur votre réseau, ainsi que des différents paramètres, n'hésiter pas à regarder la configuration de votre ordinateur.
N'utiliser pas d'adresses IPv4 identiques sur le même réseau, cela peux empêcher de dialoguer avec votre RPI.
Les premières commandes que je vais vous présenter sont utilisées depuis des années,
mais sont devenues dépréciées depuis quelques années et remplacées par une commande unique que nous verrons plus loin.
Code : Tout sélectionner
pi@raspberrypi ~ $ ifconfig
Sans paramètre, la commande nous donne les informations des différentes cartes sur le système.
Vous pouvez demander les informations d'une carte en l'ajoutant en paramètre :
Code : Tout sélectionner
pi@raspberrypi ~ $ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 12:34:56:78:9a:bc
inet addr:10.0.0.100 Bcast:10.0.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1163140 errors:0 dropped:0 overruns:0 frame:0
TX packets:21610641 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:83953902 (80.0 MiB) TX bytes:77624972 (74.0 MiB)
HWaddr : la MAC adresse de la carte Ethernet
inet addr : l'adresse IPv4 attribuée en DHCP ou manuellement
Mask : Le masque sous réseau
UP : Cette information signale que la carte est "activée"
RUNNING : Cette information signale que la carte est branchée physiquement sur le réseau (Parfois vous entendrez ceci : "OK, le serveur est up and running", maintenant vous savez pourquoi)
MTU : Ce paramètre (Maximum Transmission Unit) est généralement réglé à 1500, dans certains cas, notamment les VPN, peut poser problème.
RX packets : Cette information donne le nombre de paquets de taille différente reçus par l'interface.
TX packets : Cette information donne le nombre de paquets de taille différente transmis par l'interface.
RX bytes: Cette information donne le nombre d'octets reçus par l'interface (avec une traduction en "human readable").
TX bytes: Cette information donne le nombre d'octets transmis par l'interface (avec une traduction en "human readable").
Pour configurer l'adressage IPv4, nous pouvons utiliser cette commande avec ses paramètres :
Code : Tout sélectionner
pi@raspberrypi ~ $ ifconfig eth0 10.0.0.100 netmask 255.255.0.0
Pour cela, il faut lui rajouter une route par défaut, autrement dis : votre routeur, dans la majorité des cas.
Il existe la commande route :
Code : Tout sélectionner
pi@raspberrypi ~ $ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
Pour ajouter l'adresse de votre routeur pour en faire votre passerelle vers internet, voici la commande :
Code : Tout sélectionner
pi@raspberrypi ~ $ sudo route add default gw 10.0.0.1
Code : Tout sélectionner
pi@raspberrypi ~ $ ping -c4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=54 time=31.4 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=54 time=31.3 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=54 time=30.4 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=54 time=30.8 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 30.464/31.012/31.417/0.413 ms
pi@raspberrypi ~ $
Code : Tout sélectionner
pi@raspberrypi ~ $ ping -c4 www.raspberrypi.org
ping: unknown host www.raspberrypi.org
Dans le fichier "/etc/resolv.conf", vous devez ajouter la/les lignes :
Code : Tout sélectionner
nameserver 10.0.0.1
nameserver 208.67.220.220
Le résultat :
Code : Tout sélectionner
pi@raspberrypi ~ $ ping -c4 www.raspberrypi.org
PING lb.raspberrypi.org (93.93.128.230) 56(84) bytes of data.
64 bytes from 93.93.128.230: icmp_seq=1 ttl=50 time=47.6 ms
64 bytes from 93.93.128.230: icmp_seq=2 ttl=50 time=46.2 ms
64 bytes from 93.93.128.230: icmp_seq=3 ttl=50 time=45.9 ms
64 bytes from 93.93.128.230: icmp_seq=4 ttl=50 time=46.0 ms
--- lb.raspberrypi.org ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 45.967/46.507/47.690/0.709 ms
pi@raspberrypi ~ $
Depuis quelques années, est apparue la commande "ip" qui remplace les commandes "ifconfig", "route" et bien d'autres.
La commande pour afficher les adresses IP des différentes cartes présentes :
Code : Tout sélectionner
pi@raspberrypi ~ $ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/16 brd 10.0.255..255 scope global eth0
valid_lft forever preferred_lft forever
L'adresse MAC de la carte : 12:34:56:78:9a:bc
L'adresse IPv4 et son masque sous réseau abrégé : 10.0.0.100/16
Autre chose a savoir, il est possible d’abréger la commande :
La commande "ip addr show" et ip a s" sont identiques.
La commande pour afficher les différentes routes :
Code : Tout sélectionner
pi@raspberrypi ~ $ ip route list
default via 10.0.0.1 dev eth0
10.0.0.0/16 dev eth0 proto kernel scope link src 10.0.0.100
la passerelle : "default via 10.0.0.1 dev eth0"
La commande "ip route list" et ip r l" sont identiques.
Avec la commande "ip", il est également possible de modifier les paramètres de la carte "eth0".
Ajouter une IPv4 :
Code : Tout sélectionner
pi@raspberrypi ~ $ ip addr add 10.0.0.100/24 dev eth0
Code : Tout sélectionner
pi@raspberrypi ~ $ ip route add default via 10.0.0.1 dev eth0
La commande "ip" ne manipule pas les dns de votre RPI, le fichier "/etc/resolv.conf" est le seul endroit pour modifier vos DNS.
La commande IP est assez puissante, voici son manuel (~130 lignes) :
Code : Tout sélectionner
NAME
ip - show / manipulate routing, devices, policy routing and tunnels
SYNOPSIS
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm | netns | l2tp }
OPTIONS := { -V[ersion] | -s[tatistics] | -r[esolve] | -f[amily] { inet | inet6 | ipx | dnet | link } | -o[neline] }
OPTIONS
-V, -Version
print the version of the ip utility and exit.
-s, -stats, -statistics
output more information. If the option appears twice or more, the amount of information increases. As a rule, the information is statistics or some time values.
-l, -loops
Specify maximum number of loops the 'ip addr flush' logic will attempt before giving up. The default is 10. Zero (0) means loop until all addresses are removed.
-f, -family
followed by protocol family identifier: inet, inet6 or link ,enforce the protocol family to use. If the option is not present, the protocol family is guessed from other arguments. If the rest of the command line does not give enough information to guess the family, ip falls back to the default one, usually inet or any. link is a special family identifier meaning that no networking protocol is involved.
-4 shortcut for -family inet.
-6 shortcut for -family inet6.
-0 shortcut for -family link.
-o, -oneline
output each record on a single line, replacing line feeds with the '\´ character. This is convenient when you want to count records with wc(1) or to grep(1) the output.
-r, -resolve
use the system's name resolver to print DNS names instead of host addresses.
IP - COMMAND SYNTAX
OBJECT
address
- protocol (IP or IPv6) address on a device.
addrlabel
- label configuration for protocol address selection.
l2tp - tunnel ethernet over IP (L2TPv3).
link - network device.
maddress
- multicast address.
monitor
- watch for netlink messages.
mroute - multicast routing cache entry.
mrule - rule in multicast routing policy database.
neighbour
- manage ARP or NDISC cache entries.
netns - manage network namespaces.
ntable - manage the neighbor cache's operation.
route - routing table entry.
rule - rule in routing policy database.
tunnel - tunnel over IP.
tuntap - manage TUN/TAP devices.
xfrm - manage IPSec policies.
The names of all objects may be written in full or abbreviated form, f.e. address is abbreviated as addr or just a.
COMMAND
Specifies the action to perform on the object. The set of possible actions depends on the object type. As a rule, it is possible to add, delete and show (or list ) objects, but some objects do not allow all of these operations or have some additional commands. The help command is available for all objects. It prints out a list of available commands and argument syntax conventions.
If no command is given, some default command is assumed. Usually it is list or, if the objects of this class cannot be listed, help.
HISTORY
ip was written by Alexey N. Kuznetsov and added in Linux 2.2.
SEE ALSO
ip-address(8), ip-addrlabel(8), ip-l2tp(8), ip-link(8), ip-maddress(8), ip-monitor(8), ip-mroute(8), ip-neighbour(8), ip-netns(8), ip-ntable(8), ip-route(8), ip-rule(8), ip-tunnel(8), ip-xfrm(8)
IP Command reference ip-cref.ps
REPORTING BUGS
Report bug to the Network Developers mailing list <netdev@vger.kernel.org> where the development and maintenance is primarily done. You do not have to be subscribed to the list to send a message there.
AUTHOR
Original Manpage by Michail Litvak <mci@owl.openwall.com>
Exemple simple :
Code : Tout sélectionner
pi@raspberrypi ~ $ ip help
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename
where OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |
tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm |
netns | l2tp }
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
-f[amily] { inet | inet6 | ipx | dnet | link } |
-l[oops] { maximum-addr-flush-attempts } |
-o[neline] | -t[imestamp] | -b[atch] [filename] |
-rc[vbuf] [size]}
Code : Tout sélectionner
pi@raspberrypi ~ $ ip addr help
Usage: ip addr {add|change|replace} IFADDR dev STRING [ LIFETIME ]
[ CONFFLAG-LIST ]
ip addr del IFADDR dev STRING
ip addr {show|flush} [ dev STRING ] [ scope SCOPE-ID ]
[ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ]
IFADDR := PREFIX | ADDR peer PREFIX
[ broadcast ADDR ] [ anycast ADDR ]
[ label STRING ] [ scope SCOPE-ID ]
SCOPE-ID := [ host | link | global | NUMBER ]
FLAG-LIST := [ FLAG-LIST ] FLAG
FLAG := [ permanent | dynamic | secondary | primary |
tentative | deprecated | dadfailed | temporary |
CONFFLAG-LIST ]
CONFFLAG-LIST := [ CONFFLAG-LIST ] CONFFLAG
CONFFLAG := [ home | nodad ]
LIFETIME := [ valid_lft LFT ] [ preferred_lft LFT ]
LFT := forever | SECONDS
Code : Tout sélectionner
pi@raspberrypi ~ $ ip route help
Usage: ip route { list | flush } SELECTOR
ip route save SELECTOR
ip route restore
ip route get ADDRESS [ from ADDRESS iif STRING ]
[ oif STRING ] [ tos TOS ]
[ mark NUMBER ]
ip route { add | del | change | append | replace } ROUTE
SELECTOR := [ root PREFIX ] [ match PREFIX ] [ exact PREFIX ]
[ table TABLE_ID ] [ proto RTPROTO ]
[ type TYPE ] [ scope SCOPE ]
ROUTE := NODE_SPEC [ INFO_SPEC ]
NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ]
[ table TABLE_ID ] [ proto RTPROTO ]
[ scope SCOPE ] [ metric METRIC ]
INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...
NH := [ via ADDRESS ] [ dev STRING ] [ weight NUMBER ] NHFLAGS
OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ]
[ rtt TIME ] [ rttvar TIME ] [reordering NUMBER ]
[ window NUMBER] [ cwnd NUMBER ] [ initcwnd NUMBER ]
[ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]
[ rto_min TIME ] [ hoplimit NUMBER ] [ initrwnd NUMBER ]
TYPE := [ unicast | local | broadcast | multicast | throw |
unreachable | prohibit | blackhole | nat ]
TABLE_ID := [ local | main | default | all | NUMBER ]
SCOPE := [ host | link | global | NUMBER ]
MP_ALGO := { rr | drr | random | wrandom }
NHFLAGS := [ onlink | pervasive ]
RTPROTO := [ kernel | boot | static | NUMBER ]
TIME := NUMBER[s|ms]
J'espère que ce sujet vous sera utile,
si c'est le cas, un simple merci suffit.
Si vous avez des questions, n'hésitez pas.
@Domi : J'ai repris mes mauvaises habitudes de placer mes TUTOs hors de la partie tutoriels car je n'ai pas la possibilité de "déplacer le sujet" afin de garder une trace dans les 2 sections.
Bonne soirée à toutes et à tous,
Sans oublier un joyeux noël (en retard) ainsi qu'une très bonne année (en avance),