Configuration du réseau
- 1. Introduction à TCP/IP
- 1.1. Objectif de TCP/IP
- 1.2. L’Internet
- 1.3. Quatre couches
- 1.4. Encapsulation
- 1.5. Processus de communication
- 1.6. Modèle TCP/IP détaillé
- 1.7. Adressage et identifiants
- 1.8. Rôles des périphériques
- 1.9. Domaine IP
- 1.10. Protocole de résolution de noms
- 1.11. Protocoles de résolution d’adresses et de découverte des hôtes
- 1.12. Protocoles d’attribution d’adresses
- 1.13. Interaction des protocoles
- 1.14. Autres protocoles de gestion
- 2. Adressage IP et conception réseau
- 3. Commandes réseau habituelles
- 4. NetworkManager
- 5. Librairie
iproute2
- 5.1. Conventions de dénomination des interfaces
- 5.2. Visualiser les adresses
- 5.3. Libérer un bail DHCP
- 5.4. Activer/désactiver une interface
- 5.5. Fixer/supprimer une adresse IP
- 5.6. Ajouter une interface alias
- 5.7. IPv6 ip -6 addr
- 5.8. Tables de voisinage
- 5.9. Table de routage
- 5.10. Serveurs de noms
- 5.11. Exercice de configuration manuelle des interfaces
- 5.12.Configurations permanentes
- 6. Outils réseau
- 7. Localisation et synchronisation
- 8. Service SSH
1. Introduction à TCP/IP
1.1. Objectif de TCP/IP
Communiquer
- à l’échelle du globe
- de manière libérale
quel que soit
- le contenu
- le support
- les hôtes
1.2. L’Internet
- Il est l’interconnexion
- de réseaux à l’échelle du globe.
- En IPv4, l’Internet a atteint sa taille limite.
1.3. Quatre couches
- Couche Application
- Elle est la couche de communication qui s’interface avec les utilisateurs.
- Exemples de protocoles applicatifs : HTTP, DNS, DHCP, FTP, ...
- S’exécute sur les machines hôtes.
- Couche Transport : TCP
- Elle est responsable du dialogue entre les hôtes terminaux d’une communication.
- Les applications utiliseront TCP pour un transport fiable et UDP sans ce service.
- Les routeurs NAT et les pare-feu opèrent un filtrage au niveau de la couche transport.
- Couche Internet : IP
- Elle permet de déterminer les meilleurs chemins à travers les réseau en fonction des adresses IPv4 ou IPv6 à portée globale.
- Les routeurs transfèrent le trafic IP qui ne leur est pas destiné.
- Couche Accès au réseau
- TCP/IP ne s’occupe pas de la couche Accès Réseau
- Elle organise le flux binaire et identifie physiquement les hôtes
- Elle place le flux binaire sur les support physique
- Les commutateurs, cartes réseau, connecteurs, câbles, etc. font partie de cette couche
1.4. Encapsulation
- Pour transmettre du contenu d’un ordinateur à un autre, l’utilisateur va utiliser un programme qui construit un message enveloppé par un en-tête applicatif, SMTP par exemple. Le message subit une première encapsulation.
- Le logiciel va utiliser un protocole de couche transport correspondant pour établir la communication avec l’hôte distant en ajoutant un en-tête TCP ou UDP.
- Ensuite, l’ordinateur va ajouter un en-tête de couche Internet, IPv4 ou IPv6 qui servira à la livraison des informations auprès de l’hôte destinataire. L’en-tête contient les adresses d’origine et de destination des hôtes.
- Enfin, ces informations seront encapsulées au niveau de la couche Accès qui s’occupera de livrer physiquement le message.
1.5. Processus de communication
- Chaque couche ajoute une information fonctionnelle au message original. A la réception, l’hôte examine chaque couche et prend une décision quant à ce trafic.
1.6. Modèle TCP/IP détaillé
1.7. Adressage et identifiants
- Les machines et leurs interfaces disposent d’identifiants au niveau de chaque couche :
- Couche Application : Nom de domaine, par exemple : linux.goffinet.org
- Couche Transport : Port TCP ou UDP, par exemple : TCP80
- Couche Internet : Adresse IPv4 et/ou IPv6, par exemple : 192.168.150.252/24 ou 2001:db8::1/64
- Couche Accès : adresse physique (MAC), par exemple une adresse MAC 802 : 70:56:81:bf:7c:37
1.8. Rôles des périphériques
IP voit deux rôles :
- Les hôtes terminaux : nos ordinateurs au bout du réseau
- Les routeurs chargés de transférer les paquets en fonction de l'adresse L3 IP (logique, hiérarchique) de destination. Il permettent d'interconnecter les hôtes d'extrémité.
Aussi au sein du réseau local (LAN), le commutateur (switch) est chargé de transférer rapidement les trames Ethernet selon leur adresse L2 MAC (physique) de destination.
1.9. Domaine IP
- Deux noeuds (hôtes, interfaces, cartes réseau, PC, smartphone, etc.) doivent appartenir au même réseau, au même domaine IP pour communiquer directement entre eux.
- Quand les noeuds sont distants, ils ont besoin de livrer leur trafic à une passerelle, soit un routeur.
- D’une extrémité à l’autre, les adresses IP ne sont pas censées être modifiées (sauf NAT) par les routeurs. Par contre, le paquet est désencapsulé /ré-encapsulé différemment au niveau de la couche Accès au passage de chaque routeur.
IMAGE A PLACER
1.10. Protocole de résolution de noms
- Au niveau protocolaire, seuls les adresses IP sont utilisées pour déterminer les partenaires d’une communication.
- Mais dans l’usage courant d’Internet, on utilise des noms pour joindre des machines sur le réseau : c’est plus facile à manipuler que des adresses IP.
- Le protocole et le système DNS permet de résoudre des noms en adresses IP.
- DNS est une sorte de service mondial de correspondance entre des noms et des adresses IP. DNS utilise le port UDP 53.
Source : http://visual.ly/help-understanding-dns-lookups
1.11. Protocoles de résolution d’adresses et de découverte des hôtes
- Afin d’encapsuler un paquet IP dans une trame, l’hôte d’origine a besoin de connaître l’adresse physique (MAC) de la destination.
- En IPv4, c’est le protocole ARP (Address Resolution Protocol) qui remplit cette fonction. Les hôtes IPv4 maintiennent une table appelée cache ARP.
- En IPv6, c’est le protocole ND (Neighbor Discovery), sous-protocole IPv6, qui reprend cette fonction. Les hôtes IPv6 maintiennent une table appelée table de voisinage.
Commandes utiles
- Table ARP sous Windows et Linux
arp -a
- Table de voisinage sous Linux
ip -6 neigh
- Table de voisinage sous Windows
netsh interface ipv6 show neighbors
ARP (Address Resolution Protocol)
Au moment de l'encapsulation d'un paquet IPv4 dans une trame Ethernet ou Wi-fi, l'hôte émetteur connaît d'avance l'adresse IP de destination. Mais comment peut-il connaître son adresse physique correspondante (l'adresse MAC de destination par exemple) afin de placer le trafic sur le support ?
Un hôte TCP/IP ne peut connaître l'adresse de destination sans qu'elle ne s'annonce elle-même de manière gratuite ou de manière sollicitée.
Dans le but de maintenir une correspondance entre des adresses IP à joindre et leur adresses physiques de destination, les hôtes TCP/IP entretiennent une "table ARP" pour les adresses IPv4 et une "table de voisinage" pour les adresses IPv6.
ARP est un protocole indépendant d'IPv4 qui offre ce service de résolution d'adresses.
En IPv6, ce sont des paquets ICMPv6 appelés Neighbor Discovery (ND) qui sont utilisés selon un mode sensiblement différent. En IPv6, les fonctions d'informations et de contrôle (ICMPv6) ont été améliorées et renforcées.
- La requête ARP émane en broadcast et la réponse est envoyée en unicast. ND (IPv6) aura un fonctionnement similaire en utilisant une adresse multicast spéciale en lieu et place du broadcast.
ND (Neighbor Discovery)
- Découverte de voisin sollicitée
1.12. Protocoles d’attribution d’adresses
- Avant de pouvoir émettre du trafic TCP/IP, une interface doit disposer au minimum d’une adresse IP et de son masque et, éventuellement d’autres paramètres (passerelle par défaut, résolveur DNS, etc.).
- En IPv4, c’est DHCP qui permet d’attribuer ces paramètres à une interface qui le demande. DHCP maintient un état des adresses attribuées par un mécanisme de bail (à durée déterminée).
- En IPv6, le comportement par défaut est l’autoconfiguration des interfaces mais la version actualisée de DHCPv6 fournit un service géré des adresses.
DHCP (IPv4)
- La procédure d’attribution d’adresses en DHCP (IPv4) consiste en l’échange de 4 messages.
- Le premier message DHCP émane du client en broadcast, les autres sont échangés en unicast.
DHCPv6
A COMPLETER
1.13. Interaction des protocoles
- Avant qu’une interface puisse envoyer du trafic faut-il :
- qu’elle ait obtenu une adresse IP statique ou dynamique (DHCP en IPv4 ou autoconfiguration/DHCPv6 en IPv6);
- qu’elle ait résolu le nom de l’hôte destinataire en adresse IP (DNS sur IPv4 ou sur IPv6) ;
- qu’elle ait obtenu l’adresse du livraison physique de la destination locale ou de la passerelle par défaut si la destination n’est pas locale (ARP en IPv4 ou ND en IPv6).
1.14. Autres protocoles de gestion
- D’autres protocoles de gestion importants se rencontreront dans les réseaux TCP/IP, à titre d’exemples :
- ICMP qui permet en IPv4 et en IPv6 d’obtenir du diagnostic IP (ping et traceroute).
- NTP qui permet de synchroniser les horloges des hôtes sur le réseau.
- SNMP qui permet de collecter des informations sur le matériel à travers le réseau.
- SSH qui permet de monter une console distante à travers TCP/IP.
- Le routage IP met en oeuvre du NAT sur les passerelles des réseaux privés pour offrir une connectivité à l'Internet.
- ...
2. Adressage IP et conception réseau
Canevas :
- Référence au texte sur l'adressage IP
- Terminologie
L'utilitaire ipcalc
calcule pour nous les adresses IP :
# ipcalc --help
Usage: ipcalc [OPTION...]
-c, --check Validate IP address for specified address family
-4, --ipv4 IPv4 address family (default)
-6, --ipv6 IPv6 address family
-b, --broadcast Display calculated broadcast address
-h, --hostname Show hostname determined via DNS
-m, --netmask Display default netmask for IP (class A, B, or C)
-n, --network Display network address
-p, --prefix Display network prefix
-s, --silent Don't ever display error messages
Help options:
-?, --help Show this help message
--usage Display brief usage message
Par exemple :
# ipcalc -n -b -m 192.167.87.65/26
NETMASK=255.255.255.192
BROADCAST=192.167.87.127
NETWORK=192.167.87.64
3. Commandes réseau habituelles
Il y a trois paramètres nécessaires pour établir une connexion TCP/IP globale à partir d'une ordinateur :
- Une adresse IP et son masque
- Une passerelle par défaut
- Un serveur de résolution de noms
3.1. Une adresse IP et son masque
Commande utiles
Vérification des interfaces
- Sous Linux :
ip addr show
ifconfig
- Sous Windows :
ipconfig
netsh interface ipv4 show add
netsh interface ipv4 show add
Test de connectivité IP
- Sous Windows en IPv4 sans connectivité IPv6
ping www.test.tf
- Sous Linux en IPv4 (ping) et en IPv6 ping6
ping www.test.tf
ping6 www.test.tf
3.2. Passerelle par défaut
Commandes utiles
Vérification de la table de routage (IPv4/IPv6)
- Sous Linux :
ip route
- Sous Windows :
ipconfig
route
netsh interface ipv4 show route
netsh interface ipv6 show route
Vérification des sauts
- Sous Windows :
tracert 176.31.61.170
- Sous Linux :
traceroute 176.31.61.170
3.3 Serveur de nom
Commandes utiles
- Sous Linux :
cat /etc/resolv.conf
- Sous Windows :
ifconfig /all
netsh interface ipv4 show ?
netsh interface ipv6 show ?
Requêtes DNS
- Sous Linux
nslookup
dig
- Sous Windows
nslookup
3.4. Fichiers de configuration des interfaces
- Debian :
/etc/network/interfaces/
- Centos :
/etc/sysconfig/network-scripts/ifcfg-$NETDEV
4. NetworkManager
NetworkManager
NetworkManager est le démon (par défaut sous Centos/RHEL 7) qui gère les connexions réseau. Il n'empêche pas l'usage des fichiers ifcfg-*
.
Outre le démon NetworkManager qui se gère directement avec systemctl
, il est accompagné de plusieurs outils de diagnostic et de configuration :
nm-connection-editor
etgnome-control-center network
sont les outils graphiquese de configuration du réseau.nmtui
est l'outil graphique dans un terminal textenmcli
est l'outil en ligne de commande.
Par exemple :
# nm-connection-editor
# gnome-control-center network
# nmtui
# nmcli connection show -a
# nmcli device status
4.1. Définition du hostname
Le nom d'hôte est défini dans le fichier
/etc/hostname
:[root@c7li ~]# cat /etc/hostname c7li
On parle alors de "static hostname" mais le noyau maintient un "transient hostname" qui est un nom dynamique (copie du "static"). L'utilitaire
hostnamectl
vise à maintenir ces deux "hostnames".
Changement du nom d'hôte
On peut changer le hostname avec les utilitaires
nmtui
ounmcli
. Il sera alors nécessaire de redémarrer le service qui gère le hostname :# systemctl restart systemd-hostnamed
On peut aussi utiliser l'utilitaire
hostnamectl
Utilitaire hostnamectl
Vérification
# hostnamectl status Static hostname: c7li Icon name: computer-vm Chassis: vm Machine ID: 39b49416825c4df8a8b08b98b088a173 Boot ID: 7137a2fc7d084efcab3d82f37a6f5156 Virtualization: kvm Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-327.4.5.el7.x86_64 Architecture: x86-64
Changement des deux hostnames identiques :
# hostnamectl set-hostname c7cli-1 # hostnamectl status Static hostname: c7cli-1 Icon name: computer-vm Chassis: vm Machine ID: 39b49416825c4df8a8b08b98b088a173 Boot ID: 7137a2fc7d084efcab3d82f37a6f5156 Virtualization: kvm Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-327.4.5.el7.x86_64 Architecture: x86-64
Changement des deux hostnames différents :
# hostnamectl set-hostname c7cli --static # hostnamectl status Static hostname: c7cli Transient hostname: c7cli-1 Icon name: computer-vm Chassis: vm Machine ID: 39b49416825c4df8a8b08b98b088a173 Boot ID: 7137a2fc7d084efcab3d82f37a6f5156 Virtualization: kvm Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-327.4.5.el7.x86_64 Architecture: x86-64 # hostnamectl set-hostname c7cli --transient # hostnamectl status Static hostname: c7cli Icon name: computer-vm Chassis: vm Machine ID: 39b49416825c4df8a8b08b98b088a173 Boot ID: 7137a2fc7d084efcab3d82f37a6f5156 Virtualization: kvm Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-327.4.5.el7.x86_64 Architecture: x86-64
Effacer un hostname
# hostnamectl set-hostname ""
# hostnamectl status
Static hostname: n/a
Transient hostname: localhost
Icon name: computer-vm
Chassis: vm
Machine ID: 39b49416825c4df8a8b08b98b088a173
Boot ID: 7137a2fc7d084efcab3d82f37a6f5156
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-327.4.5.el7.x86_64
Architecture: x86-64
- Changer un hostname à distance via ssh. Par exemple :
# hostnamectl set-hostname -H [email protected]
Hostname avec l'utilitaire nmcli
:
# nmcli general hostname c7cli
# nmcli general hostname
c7cli
4.2. Ligne de commande nmcli
nmcli
est l'outil en ligne de commande de NetworkManager (https://developer.gnome.org/NetworkManager/unstable/nmcli.html).
nmcli
peut interroger 8 objets avec options, commandes et arguments :
nmcli [OPTIONS...] { help | general | networking | radio | connection | device | agent | monitor } [COMMAND] [ARGUMENTS...]
nmcli help
: Affiche l'aidenmcli general
: Affiche le statut de NetworkManager, permet de vérifier et configurer le nom d'hôte (hostname), définir des niveaux de journaux (logs).nmcli networking
: permet d'activer, désactiver, vérifier le statut du réseau.nmcli radio
: permet d'activer, désactiver, vérifier le statut des interfaces radio.nmcli connection
: ...nmcli device
: permet de vérifier et gérer les interfaces elle-mêmes.nmcli agent
: permet faire fonctionner un agent de mots de passe ou polkit (EAP).nmcli monitor
: permet d'observer l'activité de NetworkManager notamment pour les changement de connectivité des interfaces réseau.
Par exemple, l'objet general sans commande et abrégé :
# nmcli general
ÉTAT CONNECTIVITÉ WIFI-HW WIFI WWAN-HW WWAN
connecté plein activé activé activé activé
# nmcli -p general
============================================================
État de NetworkManager
============================================================
ÉTAT CONNECTIVITÉ WIFI-HW WIFI WWAN-HW WWAN
------------------------------------------------------------
connecté plein activé activé activé activé
# nmcli -p g
============================================================
État de NetworkManager
============================================================
ÉTAT CONNECTIVITÉ WIFI-HW WIFI WWAN-HW WWAN
------------------------------------------------------------
connecté plein activé activé activé activé
4.3. Configurer une connection existante
Vérification d'une interface existante :
# nmcli d
DEVICE TYPE STATE CONNECTION
virbr0 bridge connected virbr0
eno16777736 ethernet connected eno16777736
virbr0-nic tap connected virbr0-nic
lo loopback unmanaged --
# nmcli c
NAME UUID TYPE DEVICE
virbr0-nic e9c5d546-e63f-4b79-968f-ccf6b61bce87 generic virbr0-nic
virbr0 d7369201-526e-4f29-b0c5-624e11a6d7d9 bridge virbr0
eno16777736 d289b1e3-cbdb-4be3-9feb-a8bc82ee9db3 802-3-ethernet eno16777736
# nmcli d show eno16777736
GENERAL.DEVICE: eno16777736
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:D6:02:86
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: eno16777736
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/0
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 172.16.98.164/24
IP4.GATEWAY: 172.16.98.2
IP4.DNS[1]: 172.16.98.2
IP4.DOMAIN[1]: localdomain
IP6.ADDRESS[1]: fe80::20c:29ff:fed6:286/64
IP6.GATEWAY:
# nmcli d show eno16777736
connection.id: eno16777736
connection.uuid: d289b1e3-cbdb-4be3-9feb-a8bc82ee9db3
connection.interface-name: eno16777736
connection.type: 802-3-ethernet
connection.autoconnect: yes
connection.autoconnect-priority: 0
connection.timestamp: 1460231515
connection.read-only: no
connection.permissions:
connection.zone: --
connection.master: --
connection.slave-type: --
connection.autoconnect-slaves: -1 (default)
connection.secondaries:
connection.gateway-ping-timeout: 0
connection.metered: unknown
802-3-ethernet.port: --
802-3-ethernet.speed: 0
802-3-ethernet.duplex: --
802-3-ethernet.auto-negotiate: yes
802-3-ethernet.mac-address: --
802-3-ethernet.cloned-mac-address: --
802-3-ethernet.mac-address-blacklist:
802-3-ethernet.mtu: auto
802-3-ethernet.s390-subchannels:
802-3-ethernet.s390-nettype: --
802-3-ethernet.s390-options:
802-3-ethernet.wake-on-lan: 1 (default)
802-3-ethernet.wake-on-lan-password: --
ipv4.method: auto
ipv4.dns:
ipv4.dns-search:
ipv4.addresses:
ipv4.gateway: --
ipv4.routes:
ipv4.route-metric: -1
ipv4.ignore-auto-routes: no
ipv4.ignore-auto-dns: no
ipv4.dhcp-client-id: --
ipv4.dhcp-send-hostname: yes
ipv4.dhcp-hostname: --
ipv4.never-default: no
ipv4.may-fail: yes
ipv6.method: auto
ipv6.dns:
ipv6.dns-search:
ipv6.addresses:
ipv6.gateway: --
ipv6.routes:
ipv6.route-metric: -1
ipv6.ignore-auto-routes: no
ipv6.ignore-auto-dns: no
ipv6.never-default: no
ipv6.may-fail: yes
ipv6.ip6-privacy: -1 (unknown)
ipv6.dhcp-send-hostname: yes
ipv6.dhcp-hostname: --
GENERAL.NAME: eno16777736
GENERAL.UUID: d289b1e3-cbdb-4be3-9feb-a8bc82ee9db3
GENERAL.DEVICES: eno16777736
GENERAL.STATE: activated
GENERAL.DEFAULT: yes
GENERAL.DEFAULT6: no
GENERAL.VPN: no
GENERAL.ZONE: --
GENERAL.DBUS-PATH: /org/freedesktop/NetworkManager/ActiveConnection/0
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/Settings/0
GENERAL.SPEC-OBJECT: /
GENERAL.MASTER-PATH: --
IP4.ADDRESS[1]: 172.16.98.164/24
IP4.GATEWAY: 172.16.98.2
IP4.DNS[1]: 172.16.98.2
IP4.DOMAIN[1]: localdomain
DHCP4.OPTION[1]: requested_domain_search = 1
DHCP4.OPTION[2]: requested_nis_domain = 1
DHCP4.OPTION[3]: requested_time_offset = 1
DHCP4.OPTION[4]: requested_broadcast_address = 1
DHCP4.OPTION[5]: requested_rfc3442_classless_static_routes = 1
DHCP4.OPTION[6]: requested_classless_static_routes = 1
DHCP4.OPTION[7]: requested_domain_name = 1
DHCP4.OPTION[8]: expiry = 1460233018
DHCP4.OPTION[9]: domain_name = localdomain
DHCP4.OPTION[10]: next_server = 172.16.98.254
DHCP4.OPTION[11]: broadcast_address = 172.16.98.255
DHCP4.OPTION[12]: dhcp_message_type = 5
DHCP4.OPTION[13]: requested_subnet_mask = 1
DHCP4.OPTION[14]: dhcp_lease_time = 1800
DHCP4.OPTION[15]: routers = 172.16.98.2
DHCP4.OPTION[16]: ip_address = 172.16.98.164
DHCP4.OPTION[17]: requested_static_routes = 1
DHCP4.OPTION[18]: requested_interface_mtu = 1
DHCP4.OPTION[19]: requested_nis_servers = 1
DHCP4.OPTION[20]: requested_wpad = 1
DHCP4.OPTION[21]: requested_ntp_servers = 1
DHCP4.OPTION[22]: requested_domain_name_servers = 1
DHCP4.OPTION[23]: domain_name_servers = 172.16.98.2
DHCP4.OPTION[24]: requested_ms_classless_static_routes = 1
DHCP4.OPTION[25]: requested_routers = 1
DHCP4.OPTION[26]: subnet_mask = 255.255.255.0
DHCP4.OPTION[27]: network_number = 172.16.98.0
DHCP4.OPTION[28]: requested_host_name = 1
DHCP4.OPTION[29]: dhcp_server_identifier = 172.16.98.254
IP6.ADDRESS[1]: fe80::20c:29ff:fed6:286/64
IP6.GATEWAY:
Pour passer d'une configuration dhcp vers une configuration statique :
- Nom : ipa.example.com
- Adresse IPv4 : 172.16.98.200/24
- Passerelle IPv4 : 172.16.98.2
- DNS IPv4 : 8.8.8.8
# hostnamectl set-hostname ipa.example.com
# echo "172.16.98.200 ipa.example.com" >> /etc/hosts
# nmcli c mod eno16777736 ipv4.addresses 172.16.98.200/24
# nmcli c mod eno16777736 ipv4.gateway 172.16.98.2
# nmcli c mod eno16777736 ipv4.dns 8.8.8.8
# nmcli c up eno16777736
# ip a show eno16777736
4.4. Désactiver NetworkManager
- Se passer de NetworkManager ?!
# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running) since mer. 2016-02-17 22:14:57 CET; 1 weeks 0 days ago
Main PID: 801 (NetworkManager)
CGroup: /system.slice/NetworkManager.service
├─ 801 /usr/sbin/NetworkManager --no-daemon
└─2227 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /v...
févr. 24 22:29:51 c7cli dhclient[2227]: DHCPACK from 192.168.122.1 (xid=0x5...)
févr. 24 22:29:51 c7cli NetworkManager[801]: <info> address 192.168.122.226
févr. 24 22:29:51 c7cli NetworkManager[801]: <info> plen 24 (255.255.255.0)
févr. 24 22:29:51 c7cli NetworkManager[801]: <info> gateway 192.168.122.1
févr. 24 22:29:51 c7cli NetworkManager[801]: <info> server identifier 19...1
févr. 24 22:29:51 c7cli NetworkManager[801]: <info> lease time 3600
févr. 24 22:29:51 c7cli NetworkManager[801]: <info> hostname 'c7li'
févr. 24 22:29:51 c7cli NetworkManager[801]: <info> nameserver '192.168....'
févr. 24 22:29:51 c7cli NetworkManager[801]: <info> (eth0): DHCPv4 state c...d
févr. 24 22:29:51 c7cli dhclient[2227]: bound to 192.168.122.226 -- renewal....
Hint: Some lines were ellipsized, use -l to show in full.
# systemctl stop NetworkManager
# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
- redémarrer le service réseau
# systemctl restart network
# systemctl status network
● network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network)
Active: active (exited) since mer. 2016-02-24 22:51:59 CET; 6s ago
Docs: man:systemd-sysv-generator(8)
Process: 2249 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=0/SUCCESS)
févr. 24 22:51:59 c7cli systemd[1]: Starting LSB: Bring up/down networking...
févr. 24 22:51:59 c7cli network[2249]: Activation de l'interface loopback :… ]
févr. 24 22:51:59 c7cli systemd[1]: Started LSB: Bring up/down networking.
Hint: Some lines were ellipsized, use -l to show in full.
5. Librairie iproute2
- iproute2 est un ensemble d’utilitaires de l’espace utilisateur pour communiquer avec divers noyaux Linux avec le protocole netlink. Plus spécifiquement les utilitaires iproute2 sont utilisés pour contrôler le trafic réseau (TCP, UDP, IPv4, IPv6). Il est aussi utilisé pour configurer les cartes réseau (NIC) filaires et sans fil.
- Il remplace les net-tools suivants :
Fonction | Net-tools | iproute2 |
---|---|---|
Configuration des adresses IP et du lien (L2) | ifconfig |
ip addr , ip link |
Tables de routage | route |
ip route |
Tables de voisinage | arp |
ip neigh |
VLAN | vconfig |
ip link |
Tunnels | iptunnel |
ip tunnel |
Commutation (Bridges) | brctl |
ip link , bridge |
Multicast | ipmaddr |
ip maddr |
Statistiques | netstat |
ip -s , ss |
5.1. Conventions de dénomination des interfaces
Sous Centos 7, RHEL 7, Fedora 21 :
- noms prenant les numéros fournis par le Bios/firmware pour les périphériques «on-board» :
eno1
,em1
(embedded) - noms incorporant l’index pour les cartes PCI-E :
ens1
- noms incorporant l’emplacement physique du connecteur selon
p<port>s<slot>
:enp2s0
- noms prenant l’adresse MAC de l’interface :
enx78e7d1ea46da
- dénomination traditionnelle du noyau :
eth0
,wlan0
5.2. Visualiser les adresses
# ifconfig
# ip addr show
# ip link show
Exercice : Filtre grep/awk sur les sorties, examen attentif des sorties
5.3. Libérer un bail DHCP
- Pour libérer un bail et arrêter le client DHCP :
# dhclient -r
# ip addr show
- Relancer le client et obtenir de nouveaux paramètres DHCP :
# dhclient -d
Internet Systems Consortium DHCP Client 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/eno16777736/00:0c:29:7b:c0:98
Sending on LPF/eno16777736/00:0c:29:7b:c0:98
Sending on Socket/fallback
DHCPDISCOVER on eno16777736 to 255.255.255.255 port 67 interval 4 (xid=0x5511e5b4)
DHCPREQUEST on eno16777736 to 255.255.255.255 port 67 (xid=0x5511e5b4)
DHCPOFFER from 192.168.95.254
DHCPACK from 192.168.95.254 (xid=0x5511e5b4)
bound to 192.168.95.128 -- renewal in 766 seconds.
^C
5.4. Activer/désactiver une interface
- Activation d'une interface :
# ifconfig eth0 up
# ip link set eth0 up
- On peut la désactiver de manière similaire :
# ifconfig eth0 down
# ip link set eth0 down
- Sous Debian 7, on peut utiliser les scripts suivants :
# ifdown eth0
# ifup eth0
5.5. Fixer/supprimer une adresse IP
# ifconfig eth0 192.168.0.77/24
ou selon la pile d'outils utilisée :
# ip address add 192.168.0.77/24 dev eth0
Pour l’effacer :
# ip addr del 192.168.0.77/24 dev eth0
5.6. Ajouter une interface alias
# ifconfig eth0:1 10.0.0.1/8
# ip addr add 10.0.0.1/8 dev eth0 label eth0:1
5.7. IPv6 ip -6 addr
$ ip -6 addr help
Usage: ip addr {add|change|replace} IFADDR dev STRING [ LIFETIME ]
[ CONFFLAG-LIST ]
ip addr del IFADDR dev STRING
ip addr {show|save|flush} [ dev STRING ] [ scope SCOPE-ID ]
[ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ] [up]
ip addr {showdump|restore}
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
5.8. Tables de voisinage
- Table ARP (IPv4) :
$ ip neigh show
- Table ND (IPv6) :
$ ip -6 neigh show
5.9. Table de routage
$ route
$ route -6
$ ip route
ip -6 route
$ ip route help
Usage: ip route { list | flush } SELECTOR
ip route save SELECTOR
ip route restore
ip route showdump
ip route get ADDRESS [ from ADDRESS iif STRING ]
[ oif STRING ] [ tos TOS ]
[ mark NUMBER ]
ip route { add | del | change | append | replace } ROUTE
...
$ man ip-route
5.10. Serveurs de noms
On peut le définir via nmcli
ou nmtui
. Il serait peut-être plus aisé de modifier le fichier /etc/resolv.conf
:
# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.21.1
nameserver 8.8.8.8
5.11. Exercice de configuration manuelle des interfaces
- Vérifier et noter les paramètre des interfaces réseau :
- Nom
- Statut
- Adresse IP et masque
- Passerelle
- Serveur(s) DNS
- Arrêter le service réseau
- Arrêter le client DHCP et vérifier l'interface
- Faire tomber la première interface de l'ordinateur et vérifier
- Fixer manuellement une adresse IPv4 et vérifier
- Joindre la passerelle, la table ARP et vérifier la table de routage
- Ajouter une passerelle par défaut et vérifier
- Vérifier la résolution de noms
5.12.Configurations permanentes
- Configuration permanente sous debian : éditer le fichier
/etc/network/interfaces
:
# /etc/init.d/networking restart
- Configuration permanente sous RHEL7 :
- Editer le fichier
/etc/sysconfig/network-scripts/ifcfg*
qui correspond à l’interface à configurer
- Editer le fichier
# systemctl restart network
Il sera utile de lire le document https://wiki.centos.org/FAQ/CentOS7 qui répond à bon nombre de questions sur la configuration du réseau sous Centos.
6. Outils réseau
- tcpdump, ping, traceroute, netstat, nslookup, dig, diagnostic du réseau et outils d’audit
6.1. Tcpdump
- Tcpdump permet de capturer des paquets en console.
man tcpdump
- Par exemple :
tcpdump -ennqti eth0 \( arp or icmp \)
- Pour écrire dans un fichier pcap :
tcpdump -ennqti eth0 \( arp or icmp \) -w arp-icmp.pcap
6.2. ping
- Commande système qui vérifie la connectivité d’une destination avec ICMP.
- Commande active
- Génère des paquets icmp echo request (type 8, code 0) en vue de vérifier la connectivité
- Attend des paquets icmp de retour :
- au mieux des Echo Reply (type 0, code 0). Si d’autres messages sont reçus (Destination Unreachable, TTL exceeded, …) ces derniers sont affichés.
- En en origine , prend l’adresse IP de l’interface la plus proche de la destination.
- http://fr.wikipedia.org/wiki/Ping_(logiciel)
ping : vérification
- Détermine trois éléments :
- Si une interface IP est active ou pas par ICMP
- Le délais des paquets
- Le taux de perte des paquets
- Ici la réception de quatre echo reply :
$ ping -c 4 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=51 time=9.31 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=51 time=9.41 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=51 time=9.34 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=51 time=9.41 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 9.317/9.371/9.417/0.080 ms
ping : interprétation
- Le diagnostic s’arrête à ICMP et monte à la couche L7 en tentant de joindre des noms.
- L’hôte de destination peut être configuré pour ne pas répondre à ces requêtes (pare-feu configuré traditionnellement)
- Peut signifier un problème de routage dans le chemin (un routeur n’arrive pas à placer le paquet).
- Un élément (pare-feu, proxy) peut filtrer ce trafic dans le chemin.
- Les résultats de délais et de perte permettent de qualifier la qualité de la transmission. C’est utile pour diagnostiquer du trafic d’applications en temps réel (VoIP, streaming, jeux en ligne, …).
Connectivité IP globale
- Vérification de la connectivité locale : vers la passerelle
- Vérification de la connectivité globale vers une adresse IP globale bien connue :
- En Belgique, les serveurs DNS de Belgacom : 195.238.2.21, 195.238.2.22
- Les serveurs DNS IPv4 de Google : 8.8.8.8, 8.8.4.4
ping 8.8.8.8
- Quel est le trafic généré par un ping 8.8.8.8 ?
aa:bb:cc:dd:ee:ff > ff:ff:ff:ff:ff:ff, ARP, length 42: Request who-has 10.185.220.95 tell 10.185.220.133, length 28
c8:d7:19:23:b6:bf > aa:bb:cc:dd:ee:ff, ARP, length 60: Reply 10.185.220.95 is-at c8:d7:19:23:b6:bf, length 46
aa:bb:cc:dd:ee:ff > c8:d7:19:23:b6:bf, IPv4, length 98: 10.185.220.133 > 8.8.8.8: ICMP echo request, id 14174, seq 1, length 64
c8:d7:19:23:b6:bf > aa:bb:cc:dd:ee:ff, IPv4, length 98: 8.8.8.8 > 10.185.220.133: ICMP echo reply, id 14174, seq 1, length 64
6.3. traceroute/tracert
- Les commandes
traceroute
ettracert
(Windows) permettent de détecter les routeurs entre la station d’origine et une destination.
Tracert (Windows)
- Le logiciel envoie trois messages ICMP echo request (type 8, code 0) avec un TTL de 1, puis de 2, et ainsi de suite.
- Trois réponses sont attendues de la passerelle qui filtre le TTL à 1 : des messages ICMP “TTL Exceeded in Transit” avec des identifiers et Sequence Numbers correspondants.
traceroute (Linux)
- Le logiciel envoie trois messages UDP avec un TTL de 1, puis de 2, et ainsi de suite. Chaque message est à destination d’un port UDP différent.
- Trois réponses sont attendues de la passerelle qui filtre le TTL à 1 : des messages ICMP “TTL Exceeded in Transit” embarquant le message UDP original avec son port de destination. Les trois réponses sont représentées dans les trois délais de la sortie.
Traceroute interprétation
- Délais : Round Trip (RTT)
- Délais : détermine la qualité des liaisons (congestion)
- Délais : mais aussi la distance (propagation)
- Adresses des interfaces d’entrées
- Localisation
- Fournisseur
- A lier avec un whois
- http://www.nanog.org/meetings/nanog47/presentations/Sunday/RAS_Traceroute_N47_Sun.pdf
Traceroute : exemple
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 WDR3600-D3.lan (192.168.100.1) 3.299 ms 3.518 ms 3.434 ms
2 88.147.32.1 (88.147.32.1) 27.768 ms 27.690 ms 36.957 ms
3 88.147.95.13 (88.147.95.13) 36.936 ms 37.300 ms 37.230 ms
4 ge-2-2-2-193.bru20.ip4.tinet.net (77.67.76.121) 37.154 ms 37.076 ms 37.059 ms
5 xe-0-0-2.ams60.ip4.tinet.net (89.149.180.121) 42.757 ms 42.678 ms 43.997 ms
6 as15169.ams60.ip4.tinet.net (141.136.102.246) 64.105 ms 60.201 ms 78.499 ms
7 209.85.248.92 (209.85.248.92) 59.925 ms 209.85.248.112 (209.85.248.112) 34.158 ms 33.950 ms
8 72.14.238.69 (72.14.238.69) 40.288 ms 209.85.253.249 (209.85.253.249) 64.905 ms 52.239 ms
9 209.85.254.231 (209.85.254.231) 58.553 ms 59.042 ms 58.659 ms
10 209.85.255.51 (209.85.255.51) 64.564 ms 209.85.254.189 (209.85.254.189) 58.307 ms 216.239.49.30 (216.239.49.30) 58.246 ms
11 * * *
12 google-public-dns-a.google.com (8.8.8.8) 58.556 ms 58.716 ms 43.237 ms
6.4. Vérification des ports TCP/UDP
netstat
netstat
, pour « network statistics », est une ligne de commande affichant des informations sur les connexions réseau, les tables de routage et un certain nombre de statistiques dont ceux des interfaces, sans oublier les connexions masquées, les membres multicast, et enfin, les messages netlink.- La commande est disponible sous Unix (et ses dérivés dont Linux) et sous Windows NT compatibles.
Commande ss
- Les ports TCP/UDP IPv4/IPv6 à l'écoute :
# ss -antp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:* users:(("sshd",pid=17454,fd=3))
LISTEN 0 128 127.0.0.1:631 *:* users:(("cupsd",pid=834,fd=13))
LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=1359,fd=13))
LISTEN 0 128 :::80 :::* users:(("httpd",pid=9932,fd=4),("httpd",pid=9931,fd=4),("httpd",pid=9930,fd=4),("httpd",pid=9929,fd=4),("httpd",pid=9928,fd=4),("httpd",pid=9925,fd=4))
LISTEN 0 128 :::22 :::* users:(("sshd",pid=17454,fd=4))
LISTEN 0 128 ::1:631 :::* users:(("cupsd",pid=834,fd=12))
- Toutes les sessions :
# ss -a
6.5. La résolution de noms
- Dans le domaine des réseaux,
- la résolution de nom fait généralement référence au Domain Name System, service Internet qui associe des noms d'hôtes à leurs adresses IP;
- la résolution de noms sur les réseaux peut aussi se faire grâce aux technologies suivantes :
- WINS (Windows Internet Naming Service) pour les clients utilisant les noms NetBIOS. Samba peut aussi agir comme serveur WINS,
- NIS Protocole permettant la centralisation d'information sur un réseau Unix. Notamment les noms d'hôtes (/etc/hosts) et les comptes utilisateurs (/etc/passwd).
Résolution locale
- Le fichier hosts est un fichier utilisé par le système d'exploitation d'un ordinateur lors de l'accès à Internet. Son rôle est d'associer des noms d'hôtes à des adresses IP.
- Lors de l'accès à une ressource réseau par nom de domaine, ce fichier est consulté avant l'accès au serveur DNS et permet au système de connaître l'adresse IP associée au nom de domaine sans avoir recours à une requête DNS.
- Le fichier host est en texte brut et est usuellement nommé hosts. Les modifications sont prises en compte directement. Il est présent dans la plupart des systèmes d'exploitation.
- Unix, Unix-like,POSIX dans /etc/hosts
- Microsoft Windows %SystemRoot%\system32\drivers\etc\hosts
Domain Name System (DNS)
- Le Domain Name System (ou DNS, système de noms de domaine) est un service permettant de traduire un nom de domaine en informations de plusieurs types qui y sont associées, notamment en adresses IP de la machine portant ce nom. À la demande de la DARPA, Jon Postel et Paul Mockapetris ont conçu le « Domain Name System » en 1983 et en écrivirent la première réalisation.
- Ce fichier enregistre l’adresse des serveurs de résolution de nom :
$ cat /etc/resolv.conf
Domain Name System (DNS)
Source https://fr.wikipedia.org/wiki/Domain_Name_System
- 1 Rôle du DNS
- 2 Histoire
- 3 Un système hiérarchique et distribué
- 4 Serveurs DNS racine
- 5 Fully Qualified Domain Name
- 6 Nom de domaine internationalisé
- 7 Les techniques du DNS Round-Robin pour la distribution de la charge
- 8 Principaux enregistrements DNS
- 9 Time to live
- 10 Glue records
- 11 Mise à jour dynamique
- 12 Considérations opérationnelles
nslookup
- Commande Linux/Windows permettant de vérifier la résolution de noms.
6.6. dig
dig www.google.com aaaa
; <<>> DiG 9.8.3-P1 <<>> www.google.com aaaa
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54128
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.google.com. IN AAAA
;; ANSWER SECTION:
www.google.com. 63 IN AAAA 2a00:1450:4001:801::1014
;; Query time: 123 msec
;; SERVER: 10.185.220.95#53(10.185.220.95)
;; WHEN: Wed May 21 15:04:24 2014
;; MSG SIZE rcvd: 60
La valeur de la ligne Query time:
des sorties de dig
permet de se faire une idée des délais de résolution de nom. Ce délai est un indicateur de la qualité de la connexion Internet.
dig auprès d’un serveur spécifique
dig @8.8.8.8 www.google.com aaaa
; <<>> DiG 9.8.3-P1 <<>> @8.8.8.8 www.google.com aaaa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62597
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.google.com. IN AAAA
;; ANSWER SECTION:
www.google.com. 296 IN AAAA 2a00:1450:400c:c06::93
;; Query time: 45 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed May 21 15:05:33 2014
;; MSG SIZE rcvd: 60
dig succint
dig google.com +nocomments +noquestion +noauthority +noadditional +nostats
dig sur les champs MX
dig gmail.com MX +noall +answer
; <<>> DiG 9.8.3-P1 <<>> gmail.com MX +noall +answer
;; global options: +cmd
gmail.com. 2909 IN MX 5 gmail-smtp-in.l.google.com.
gmail.com. 2909 IN MX 10 alt1.gmail-smtp-in.l.google.com.
gmail.com. 2909 IN MX 20 alt2.gmail-smtp-in.l.google.com.
gmail.com. 2909 IN MX 30 alt3.gmail-smtp-in.l.google.com.
gmail.com. 2909 IN MX 40 alt4.gmail-smtp-in.l.google.com.
dig NS record
dig goffinet.org NS +noall +answer
; <<>> DiG 9.8.3-P1 <<>> goffinet.org NS +noall +answer
;; global options: +cmd
goffinet.org. 7200 IN NS ns4.zoneedit.com.
goffinet.org. 7200 IN NS ns19.zoneedit.com.
dig reverse lookup
dig -x 72.163.4.161
; <<>> DiG 9.8.3-P1 <<>> -x 72.163.4.161
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63459
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;161.4.163.72.in-addr.arpa. IN PTR
;; ANSWER SECTION:
161.4.163.72.in-addr.arpa. 300 IN PTR www1.cisco.com.
;; Query time: 192 msec
;; SERVER: 10.185.220.95#53(10.185.220.95)
;; WHEN: Wed May 21 15:15:20 2014
;; MSG SIZE rcvd: 71
6.7. Diagnostic fondamental
- Collecte d’information :
- Connexion de l’interface (oui/non)
- Adresse IP, masque, passerelle, serveur DNS, serveur DHCP (paramètres)
- Vérification :
- Résolution de noms
- Connectivité globale
- Connectivité locale
- Routage
1. collecte d’information
(Sorties type Windows)
- Commandes :
$ ip link show
$ ip addr show
- Le câble est-il branché ? problème physique/infrastructure
- Y voit-on des paramètres TCP/IP ?
- Comment sont-ils attribués ? Problème de configuration d’interface.
2. Vérifications
(Sorties type Windows)
- Résolution de nom :
ping www.google.com
nslookup
/dig
- Connectivité globale :
ping 8.8.8.8
- réponse négative distante
- réponse négative locale
- pas de réponse
- Connectivité locale :
ping [passerelle]
- Vérification du routage :
ip route show
/traceroute
6.8. Protocoles DHCP
- DHCP (RFC 2131 et RFC 2132)
- IPv6 RA (Router Advertistement) (RFC 4861-4.2 et RFC 6106)
- IPv6 DHCP Stateful RFC (RFC 3315)
- IPv6 DHCP Stateless (RFC 3736)
Client DHCP
# dhclient -4 -x
# dhclient -6 -x
# dhclient -4 -v
# dhclient -6 -v
Commandes d’audit
arping
: icmp/arp request/replyarp-scan
: beaucoup d’optionshping3
nc
,netcat
nmap
7. Localisation et synchronisation
- Horloge matérielle, date, calendrier
7.1. Localisation
- Debian/Ubuntu :
# dpkg-reconfigure tzdata
- Sous RHEL/Centos, le fichier /etc/localtime est un lien symbolique vers un des fichiers situés dans /usr/share/zoneinfo/ :
$ ls -l /etc/localtime
7.2. Date courante
- Date et heure du système : commande
date
. - Date et heure matérielle : commande
hwclock
7.3. Network Time Protocol
- Le Protocole d'Heure Réseau (Network Time Protocol ou NTP) est un protocole qui permet de synchroniser, via un réseau informatique, l'horloge locale d'ordinateurs sur une référence d'heure.
- La version 3 de NTP est la plus répandue à ce jour. Elle est formalisée par la RFC 1305.
- http://fr.wikipedia.org/wiki/Network_Time_Protocol
- http://www.pool.ntp.org/fr/
7.4. Timedatectl
# timedatectl --help
timedatectl [OPTIONS...] COMMAND ...
Query or change system time and date settings.
-h --help Show this help message
--version Show package version
--no-pager Do not pipe output into a pager
--no-ask-password Do not prompt for password
-H --host=[USER@]HOST Operate on remote host
-M --machine=CONTAINER Operate on local container
--adjust-system-clock Adjust system clock when changing local RTC mode
Commands:
status Show current time settings
set-time TIME Set system time
set-timezone ZONE Set system time zone
list-timezones Show known time zones
set-local-rtc BOOL Control whether RTC is in local time
set-ntp BOOL Control whether NTP is enabled
7.5. client ntpdate
- Pour se synchroniser, on peut utiliser aussi le client ntpdate :
# ntpdate be.pool.ntp.org
- Pour s’assurer que votre ordinateur soit synchronisé via NTP, sous centos 7, vous pouvez démarrer le service associé :
# systemctl status ntpdate # systemctl start ntpdate # systemctl status ntpdate
8. Service SSH
- Tunnels, authentification, copies, transfert de fichiers, de ports, de sessions X
8.1. Présentation de SSH
- Secure Shell (SSH) est un protocole qui permet de sécuriser les communication de données entre les ordinateurs connectés au réseau.
- Il permet d’assurer la confidentialité, l’intégrité, l’authentification et l’autorisation des données dans des tunnels chiffrés. Il utilise TCP habituellement sur le port 22.
- On peut l’utiliser comme console distante à la manière de Telnet ou Rlogin.
- On peut transférer des sessions X graphiques.
- On peut y transférer des ports et utiliser le service comme proxy.
- Les sous-protocoles SCP et SFTP offrent des services de transfert de fichiers.
- Il s'intègre à des logiciels comme
ansible
,systemd
,x2go
, ...
8.2. Installation, configuration, connexion
# systemctl status sshd
- Si nécessaire :
# yum install openssh-server
# systemctl enable sshd
# systemctl start sshd
# less /etc/ssh/sshd_config
# ssh [email protected]
8.3. Authentification par clé
- L'authentification par clé fonctionne grâce à 3 composants :
- Une clé publique : elle sera exportée sur chaque hôte sur lequel on souhaite pouvoir se connecter.
- Une clé privée : elle permet de prouver son identité aux serveurs.
- Une passphrase : optionnelle, elle permet de sécuriser la clé privée (notons la subtilité, passphrase et pas password... donc « phrase de passe » et non pas « mot de passe »).
- La sécurité est vraiment accrue car la passphrase seule ne sert à rien sans la clé privée, et vice-versa. Cet usage peut se révéler contraignant.
Création de la paire de clés
- La création de la paire de clés se fait avec
ssh-keygen
. - Il existe 2 types de clés : RSA et DSA. Chacune pouvant être de longueur différente (les clés inférieures à 1024 bits sont à proscrire).
- Pour créer une clé :
# ssh-keygen
- Sans paramètres, les options par défaut sont type RSA en 2048 bits.
- Le commentaire permet de distinguer les clés, utile quand on a plusieurs clé (notamment une personnelle et une pour le boulot). Ici la distinction se fait sur l'adresse e-mail. Si le commentaire est omis, il sera de la forme user@host.
Clé privée / clé publique
- Deux fichiers ont été créés (dans le dossier ~/.ssh/) :
id_rsa
(ou id_dsa dans le cas d'une clé DSA) : contient la clé privée et ne doit pas être dévoilé ou mis à disposition.id_rsa.pub
(ou id_dsa.pub dans le cas d'une clé DSA) : contient la clé publique, c'est elle qui sera mise sur les serveurs dont l'accès est voulu.
Transmission de la clé au serveur
Trois méthodes de transmission de la clé :
- Via une console SSH :
$ cat ~/.ssh/id_rsa.pub | ssh user@ip_machine "cat - >> ~/.ssh/authorized_keys"
- Via scp :
$ scp ~/.ssh/id_rsa.pub user@ip_machine:/tmp
$ ssh user@ip_machine
$ cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys
$ rm /tmp/id_rsa.pub
- Via ssh-copy-id :
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@ip_machine
8.4. Logiciels utilisant SSH sous Windows
- Putty, SuperPutty : configuration, enregistrement de profils, transferts de ports
- WinSCP : transferts de fichiers, compression, automation, backup
- Xming X Server for Windows : intégration avec winch et putty
- Cyberduck : Client multi-protocoles
- Dokan SSHFS : librairie SSHFS
- X2go : Bureau déporté à travers SSH, client Lin/Win/Mac
8.5. Exercices
- Créer une paire de clé DSA et la transmettre au serveur.
- Exécuter une session X avec Firefox à partir du serveur sur votre PC
- Transferts de ports : se connecter à l’interface LAN du routeur
- Essais Clients/serveurs X2go
- Renforcement du service en modifiant la configuration
- Activation de la compression
- Intégration iptables, fail2ban
- Découverte du logiciel d’automation Ansible
Références
- http://formation-debian.via.ecp.fr/ssh.html
- http://www.scoop.it/t/linux-formation/?tag=ssh
- http://doc.fedora-fr.org/wiki/SSH_:_Authentification_par_cl%C3%A9
- http://doc.fedora-fr.org/wiki/SSH_:_X11Fowarding
- http://doc.fedora-fr.org/wiki/SSHFS_:_montage_de_syst%C3%A8mes_de_fichiers_via_SSH
- http://doc.fedora-fr.org/wiki/SSH:_Simplifier_une_connexion_passant_par_un_Proxy
- http://doc.fedora-fr.org/wiki/SSH_:_Se_prot%C3%A9ger_des_attaques_avec_fail2ban