[TUTO] Le réseau filaire sous Raspbian (simple)

Paramétrer le Raspberry Pi B/B+ pour se connecter via Ethernet ou une clé WiFi USB

Modérateurs : Francois, maxty01

Répondre
maxty01
Modérateur
Messages : 790
Enregistré le : dim. 16 nov. 2014 20:53
Localisation : Charleroi - Belgique

[TUTO] Le réseau filaire sous Raspbian (simple)

Message par maxty01 » ven. 26 déc. 2014 15:22

Bonjour à toutes et à tous,

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
Cette première commande permet de manipuler l'adressage d'une carte réseau.
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)
Link encap : le type de lien, ici Ethernet
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
Cela suffit pour interagir avec le RPI sur le même réseau en SSH, mais pas l'accès à d'autres réseaux tel que internet.
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
La route par défaut est représentée par la destination "0.0.0.0"

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
Maintenant, vous pouvez pinger internet :

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 ~ $ 
Mais pas avec un nom de domaine :

Code : Tout sélectionner

pi@raspberrypi ~ $ ping -c4 www.raspberrypi.org
ping: unknown host www.raspberrypi.org
Pour cela, il faut signaler le/les serveurs DNS à interroger.
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
Si votre routeur (10.0.0.1) ne fait pas serveur DNS, vous pouvez utiliser les serveurs d'OpenDNS avec les adresses 208.67.220.220 et 208.67.220.222.
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 ~ $ 
:!: raspberry.com possède plusieurs adresses IPv4 publiques différentes, pas de panique si l'adresse que vous obtenez n'est pas identique à celle que j'ai obtenu.

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
Cette commande donne moins d'informations que "ifconfig", mais le principal est présent :
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
Cette commande donne moins d'informations que "route", mais le principal est présent :
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
Ajouter la route par défaut :

Code : Tout sélectionner

pi@raspberrypi ~ $ ip route add default via 10.0.0.1 dev eth0
Si vous remarquez bien la liste des paramètres "default via 10.0.0.1 dev eth0" est identique à la sortie de la commande "ip route list"

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>
Pour aller plus vite, la commande "ip" vous propose le paramètre "help" pour vous donner un condensé/complément d'informations.

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]}
Exemple pour les adresse :

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
exemple pour les routes :

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]
Voici ce qui termine la partie simple du réseau.

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),
Il n'y a pas de question stupide, il n'y a que des imbéciles qui ne posent pas de question !
RaspBerry Pi : 1 x B+ Raspbian 1 x RPI2 MiniBian
Mieux me connaître ? Regarder mon LinkedIn

Avatar du membre
vague nerd
Modérateur
Messages : 1473
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: [TUTO] Le réseau filaire sous Raspbian (simple)

Message par vague nerd » dim. 28 déc. 2014 20:47

Merci à vous, encore une fois.

Rha là, là, faut que je change toutes mes ip... puisque vous les avez cités dans votre tuto ! (notamment les classe /16 et les masques sous réseau. :lol: :D)
Cordialement,

Vague Nerd

maxty01
Modérateur
Messages : 790
Enregistré le : dim. 16 nov. 2014 20:53
Localisation : Charleroi - Belgique

Re: [TUTO] Le réseau filaire sous Raspbian (simple)

Message par maxty01 » dim. 28 déc. 2014 21:16

Bonsoir vague nerd,

L'annotation "/16" est le masque sous réseaux. :D :D

/8 = 255.0.0.0
/12 = 255.240.0.0
/16 = 255.255.0.0
/24 = 255.255.255.0
/32 = 255.255.255.255

Si les classes d'adresses IP sont toujours d’actualités, elle ne sont plus vraiment utilisées suite à la pénurie d'adresse IPv4 dans le monde.
Dans l'attribution d'adresses IPv4 publiques, il n'est pas rare d'observer un range en /25 ou /26...
On parle maintenant d'attribution IPv4 classless, ce principe est repris dans les IPv6.

Pour votre info : il y a 3 grandes adresses privées utilisables dans vos réseaux :
  1. 10.0.0.0/8
    de 10.0.0.1 à 10.255.255.254
    Vous pouvez les subdiviser en plus petits réseaux.
  2. 172.16.0.0/12
    de 172.16.0.1 à 172.31.255.254
    Vous pouvez les subdiviser en plus petits réseaux.
  3. 192.168.0.0/16
    de 192.168.0.1 à 192.168.255.254
    Vous pouvez les subdiviser en plus petits réseaux.
La majorité des réseaux privés utilisent soit le 10.0.0.0/24 (ou parfois /16) ou le 192.168.0.0/24, très rarement le 172.16.0.0/24.

En vous souhaitant une bonne soirée,
Bien à vous,
Il n'y a pas de question stupide, il n'y a que des imbéciles qui ne posent pas de question !
RaspBerry Pi : 1 x B+ Raspbian 1 x RPI2 MiniBian
Mieux me connaître ? Regarder mon LinkedIn

Avatar du membre
vague nerd
Modérateur
Messages : 1473
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: [TUTO] Le réseau filaire sous Raspbian (simple)

Message par vague nerd » dim. 28 déc. 2014 21:21

(notamment les classe /16 et les masques sous réseau. :lol: :D)
Oui, je voulais dire 10.0.0.x/16, mais... je plaisantais bien sûr !
Cordialement,

Vague Nerd

Répondre

Retourner vers « Le réseau sur le Raspberry Pï »