14 commandes de mise en réseau Linux utiles
Configuration, monitorLa gestion et la sécurisation des réseaux constituent une partie essentielle du travail d'un administrateur système. Lorsqu'il s'agit de gérer les réseaux Linux, de nombreuses commandes et utilitaires sont disponibles.
Parfois, les systèmes en réseau échouent. Vous en tant que administrateur sont nécessaires pour diagnostiquer et resolve problèmes. Monitoring aide à détecter les problèmes et à les résoudre avant que les choses ne deviennent incontrôlables. MonitorLa recherche de sécurité et de performances constitue également une partie essentielle des activités d'un administrateur.
Nous discutons ici de certaines commandes couramment utilisées pour gérer les réseaux Linux.
ip
Le package iproute2 comprend la commande IP qui est utilisée pour la configuration du réseau et du routage. Cela remplace le traditionnel ifconfig
et le route
les commandes.
ip
prend un deuxième argument qui spécifie l'objet sur lequel vous souhaitez exécuter une commande et une action comme ajouter, supprimer ou afficher.
lien ip
ip link
sert à configurer, ajouter et supprimer des interfaces réseau. Utilisation ip link show
commande pour afficher toutes les interfaces réseau du système:
$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 02:35:97:08:6b:2a brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:6f:60:ff brd ff:ff:ff:ff:ff:ff
Vous pouvez voir la page de manuel pour ip link
avec:
$ man ip-link
adresse IP
Utilisez la commande d'adresse IP pour afficher les adresses, lier une nouvelle adresse ou supprimer les anciennes. La commande d'adresse ip de la page de manuel est nommée comme adresse IP.
Par exemple, la commande suivante affiche l'adresse IP attribuée à l'interface réseau enp0s8:
ip address show dev enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:6f:60:ff brd ff:ff:ff:ff:ff:ff
inet 10.0.0.51/24 brd 10.0.0.255 scope global enp0s8
...
route ip
Utilisez la route IP pour imprimer ou afficher la table de routage. La commande suivante affiche le contenu de la table de routage:
$ ip route show
default via 10.0.2.2 dev enp0s3
10.0.0.0/24 dev enp0s8 proto kernel scope link src 10.0.0.51
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15
nmap
Tandis que Nmap a été utilisé dans de nombreux films, The Matrix Reloaded (Wikipédia, IMDB, Amazon) tourné Nmap en star de cinéma !.
Nmap ("Network Mapper") est un utilitaire puissant utilisé pour la découverte du réseau, audit de sécurité et administration. De nombreux administrateurs système l'utilisent pour déterminer lesquels de leurs systèmes sont en ligne, ainsi que pour la détection du système d'exploitation et la détection des services.
Le défaut Nmap le scan montre les ports, leur state (ouvert/fermé) et protocoles. Il envoie un paquet aux 1000 XNUMX ports les plus courants et vérifie la réponse.
$ nmap 10.0.0.50
Starting Nmap 7.01 ( https://nmap.org ) at 2020-09-07 10:32 UTC
Nmap scan report for 10.0.0.50
Host is up (0.00077s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
3306/tcp closed mysql
Pour vérifier quels hôtes de votre réseau sont actifs:
$ nmap -sn 10.0.0.0/24
Starting Nmap 7.01 ( https://nmap.org ) at 2020-09-07 11:59 UTC
Nmap scan report for 10.0.0.1
Host is up (0.00084s latency).
Nmap scan report for 10.0.0.50
Host is up (0.0021s latency).
Nmap scan report for 10.0.0.51
Host is up (0.00026s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 2.61 seconds
Utilisez l'indicateur -O pour identifier le système d'exploitation exécuté par un hôte.
$ sudo nmap 10.0.0.50 -O
Starting Nmap 7.01 ( https://nmap.org ) at 2020-09-07 13:44 UTC
Nmap scan report for 10.0.0.50
Host is up (0.00053s latency).
...
Running: Linux 3.X
OS CPE: cpe:/o:linux:linux_kernel:3
OS details: Linux 3.10 - 3.19
Network Distance: 1 hop
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 21.95 seconds
Un mot d'avertissement : personne n'apprécieateleurs systèmes sont analysés sur Internet. Alors avant de le faire, demandez la permission.
Vous pouvez également utiliser Nmap on Windows, regarde ça guide d'installation.
ping
Utilisez ping pour voir si un hôte est alive. Cette commande très simple vous aide à vérifier l'état d'un hôte ou d'un segment de réseau. La commande Ping envoie un paquet ICMP ECHO_REQUEST à l'hôte cible et attend de voir s'il répond.
Cependant, certains hôtes bloquent les demandes d'écho ICMP avec un pare-feu. Certains sites Internet peuvent également faire de même.
Par défaut, le ping s'exécute dans une boucle infinie. Pour envoyer un nombre défini de paquets, utilisez -c
drapeau.
$ ping -c 3 google.com
PING google.com (172.217.167.238): 56 data bytes
64 bytes from 172.217.167.238: icmp_seq=0 ttl=118 time=7.898 ms
64 bytes from 172.217.167.238: icmp_seq=1 ttl=118 time=7.960 ms
64 bytes from 172.217.167.238: icmp_seq=2 ttl=118 time=6.247 ms
--- google.com ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 6.247/7.368/7.960/0.793 ms
Avec -o flag, ping se termine avec succès après en avoir reçu un reply paquet.
$ ping -o google.com
PING google.com (172.217.167.46): 56 data bytes
64 bytes from 172.217.167.46: icmp_seq=0 ttl=118 time=7.540 ms
--- google.com ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 7.540/7.540/7.540/0.000 ms
Vous pouvez utiliser -n
drapeau à éviter revSinon, effectuez des recherches DNS. Le numéro de séquence ICMP est particulièrement important. A Rupture dans les numéros de séquence indicatifates paquets perdus.
Un ping échoué peut être dû à
- panne de réseau
- l'hôte n'étant pas alive
- pare-feu bloquant les requêtes ICMP ECHO
Vous pouvez également effectuer un test de ping en ligne pour vérifier la connectivité de différentes parties du monde.
iperf
Alors que ping vérifie la disponibilité d'un hôte, iPerf permet d'analyser et de mesurer les performances du réseau entre deux hôtes. Avec iPerf, vous ouvrez une connexion entre deux hôtes et envoyez des données. iPerf affiche alors le bandwidth disponible entre les deux hôtes.
Vous pouvez installer un iPerf à l'aide de votre gestionnaire de packages de distribution. Par exemple, sur les distributions basées sur Ubuntu, vous pouvez installer comme ceci:
$ sudo apt install iperf -y
Une fois que vous avez installé iPerf sur les deux machines, démarrez le serveur iPerf sur l'une d'entre elles. L'exemple suivant démarre le serveur iPerf sur un hôte avec l'adresse IP 10.0.0.51.
$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
Sur la deuxième machine, démarrez iPerf avec l'indicateur -c. Cela se connecte au serveur et envoie des données.
$ iperf -c 10.0.0.51
------------------------------------------------------------
Client connecting to 10.0.0.51, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.0.0.50 port 42177 connected with 10.0.0.51 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.13 GBytes 972 Mbits/sec
iPerf revient avec le bandwidth résultats en quelques secondes.
traceroute
Si le ping indique des paquets manquants, vous devez utiliser traceroute pour voir quelle route empruntent les paquets. Traceroute montre la séquence de gateles moyens par lesquels les paquets voyagent pour atteindre leur destination. Par exemple, traceroute de ma machine vers google.com affiche ce qui suit :
$ traceroute google.com
traceroute to google.com (172.217.167.46), 64 hops max, 52 byte packets
1 dlinkrouter.dlink (192.168.0.1) 5.376 ms 2.076 ms 1.932 ms
2 10.194.0.1 (10.194.0.1) 5.190 ms 5.125 ms 4.989 ms
3 broadband.actcorp.in (49.207.47.201) 7.165 ms 5.749 ms 5.755 ms
4 broadband.actcorp.in (49.207.47.225) 5.918 ms * 8.483 ms
...
9 108.170.251.97 (108.170.251.97) 6.359 ms
del03s16-in-f14.1e100.net (172.217.167.46) 5.448 ms
108.170.251.97 (108.170.251.97) 6.400 ms
La ligne 4 de cette sortie affiche un * dans les temps aller-retour. Cet indicateurateAucune réponse n'a été reçue. Cela peut être dû à de nombreuses raisons : comme les paquets ICMP traceroute sont de faible priorité, ils peuvent être abandonnés par un routeur. Ou bien il pourrait y avoir simplement de la congestion. Si vous voyez un * dans tous les champs horaires pour un g donnéatefaçon, alors peut-être le gatele chemin est en bas.
De nombreux outils de suivi d'itinéraire sur le Web vous permettent d'effectuer un revsinon traceroute, c'est-à-dire d'un site Web à votre hébergeur. Vous pouvez les vérifier sur traceroute.org or Geekflare Traceroute.
tcpdump
tcpdump est un outil de reniflage de paquets et peut être d'une grande aide lors de la résolution des problèmes de réseau. Il écoute le trafic réseau et imprime les informations sur les paquets en fonction des critères que vous définissez.
Par exemple, vous pouvez examiner tous les paquets envoyés vers ou depuis un hôte particulier, Ubuntu18 dans cet exemple:
$ sudo tcpdump host ubuntu18 -n -c 5
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
14:12:11.509092 IP 10.0.0.4.22 > 183.83.208.234.9633: Flags [P.], seq 2991049004:2991049112, ack 2956233368, win 501, options [nop,nop,TS val 292041322 ecr 405604219], length 108
14:12:11.509146 IP 10.0.0.4.22 > 183.83.208.234.9633: Flags [P.], seq 108:252, ack 1, win 501, options [nop,nop,TS val 292041322 ecr 405604219], length 144
14:12:11.509218 IP 10.0.0.4.22 > 183.83.208.234.9633: Flags [P.], seq 252:288, ack 1, win 501, options [nop,nop,TS val 292041322 ecr 405604219], length 36
14:12:11.509259 IP 10.0.0.4.22 > 183.83.208.234.9633: Flags [P.], seq 288:500, ack 1, win 501, options [nop,nop,TS val 292041322 ecr 405604219], length 212
14:12:11.509331 IP 10.0.0.4.22 > 183.83.208.234.9633: Flags [P.], seq 500:768, ack 1, win 501, options [nop,nop,TS val 292041322 ecr 405604219], length 268
5 packets captured
6 packets received by filter
0 packets dropped by kernel
Par défaut, tcpdump resolves Adresses IP aux noms d'hôtes. Utiliser -n
indicateur, si vous ne voulez pas que tcpdump effectue des recherches de nom.
La sortie tcpdump imprime une ligne pour chaque paquet. Utilisation -c
drapeau pour limiter la sortie, 5 dans l'exemple ci-dessus.
tcpdump est utile pour résoudre les problèmes de réseau et également identifier les problèmes potentiels. C'est une bonne idée d'exécuter un tcpdump lors de votre événement réseaually pour vérifier que tout est en ordre.
netstat
La commande Netstat est utilisée pour examiner les connexions réseau, les tables de routage et divers paramètres réseau et statistiques.
Utilisez -i
flag pour répertorier les interfaces réseau de votre système.
Voici un exemple:
$ netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 4001 0 0 0 2283 0 0 0 BMRU
eth1 1500 0 27154 0 0 0 838962 0 0 0 BMRU
lo 65536 0 0 0 0 0 0 0 0 0 LRU
En utilisant -r
flag affichera la table de routage. Cela montre le chemin configuré pour l'envoi de paquets réseau.
$ netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 * 255.255.255.0 U 0 0 0 eth1
10.0.2.0 * 255.255.255.0 U 0 0 0 eth0
Un astérisque dans les deux dernières lignes indiqueatec'est pas gateUn moyen est nécessaire pour envoyer des paquets à n'importe quel hôte sur ces réseaux. Cet hôte est directement connecté aux réseaux 10.0.0.0 et 10.0.2.0.
Dans la première ligne, la destination est la valeur par défaut, ce qui signifie que tout paquet destiné à un réseau non répertorié dans ce tableau est traité par le routeur 10.0.2,2.
La commande netstat sans aucune option affiche une liste des sockets ouverts. Utilisation -l
flag pour afficher uniquement les sockets d'écoute, qui par défaut ne sont pas affichés. Vous pouvez utiliser l'option -a pour afficher les sockets en écoute et non en écoute. Voici un exemple:
$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ssh *:* LISTEN
tcp 0 36 10.0.2.15:ssh 10.0.2.2:51017 ESTABLISHED
tcp6 0 0 [::]:ssh [::]:* LISTEN
udp 0 0 *:bootpc *:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 3 [ ] DGRAM 8186 /run/systemd/notify
...
Plus d'exemple de commande Netstat ici
ss
Les installations Linux exécutent de nombreux services par défaut. Ceux-ci devraient être disabled ou de préférence retiré, car cela contribue à réduire la surface d'attaque. Vous pouvez voir quels services sont en cours d'exécution avec la commande netstat. Bien que netstat soit toujours disponible, la plupart des distributions Linux sont en transition vers ss
commander.
utiliser la commande ss avec -t
et le -a
indicateurs pour lister toutes les sockets TCP. Cela affiche à la fois les prises en écoute et non en écoute.
$ ss -t -a
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:sunrpc *:*
LISTEN 0 128 *:http *:*
LISTEN 0 128 *:ssh *:*
LISTEN 0 128 *:60031 *:*
ESTAB 0 0 10.0.2.15:ssh 10.0.2.2:51699
ESTAB 0 0 10.0.2.15:ssh 10.0.2.2:51049
LISTEN 0 128 :::sunrpc :::*
LISTEN 0 128 :::http :::*
LISTEN 0 128 :::ssh :::*
LISTEN 0 128 :::54715 :::*
Pour afficher uniquement les connexions TCP avec state établi:
ss -a -t -o state established
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 0 10.0.2.15:ssh 10.0.2.2:51699 timer:(keepalive,23min,0)
0 0 10.0.2.15:ssh 10.0.2.2:51049 timer:(keepalive,114min,0)
ssh
ssh vous permet de vous connecter en toute sécurité avec des hôtes distants sur Internet. Auparavant, rlogin et telnet étaient utilisés pour se connecter et administrer des hôtes distants. Cependant, les deux souffrent d'un défaut fondamental, c'est-à-dire qu'ils envoient toutes les informations, y compris les noms de connexion et les mots de passe en texte clair.
ssh active communication sécurisée sur Internet avec les deux fonctionnalités suivantes:
- Il confirme que l'hôte distant est, qui il dit qu'il est.
- Il crypte toutes les communications entre les hôtes.
Pour vous connecter à un hôte distant, vous devez disposer d'un serveur OpenSSH exécuté sur l'hôte distant. Vous pouvez l'installer à l'aide de votre gestionnaire de packages de distribution. Par exemple sur Ubuntu, vous pouvez l'installer comme ceci:
$ sudo apt install openssh-server
Voici un exemple montrant comment vous pouvez vous connecter à l'hôte distant 10.0.0.50 à l'aide de la commande ssh:
me@ubuntu-xenial:~$ ssh 10.0.0.50
The authenticity of host '10.0.0.50 (10.0.0.50)' can't be established.
ECDSA key fingerprint is SHA256:s2tNJQa/C1/W0SevGm7Rt3xoBZG1QL5yT3ff/+PMpnY.
Are you sure you want to continue connecting (yes/no)? yes
Vous recevez un message indiquant que l'authenticité de l'hôte 10.0.0.50 ne peut pas être établie, c'est parce que c'est la première fois qu'une connexion est établie avec 10.0.0.50 (serveur) et que le client ssh n'a jamais vu cet hôte distant auparavant. Entrez yes pour continuer la connexion. Une fois la connexion établie, un mot de passe vous est demandé:
Warning: Permanently added '10.0.0.50' (ECDSA) to the list of known hosts. me@10.0.0.50's password:
Après avoir entré le mot de passe correct, vous êtes connecté à l'hôte distant.
Welcome to Ubuntu 14.04.6 LTS (GNU/Linux 3.13.0-170-generic x86_64)
* Documentation: https://help.ubuntu.com/
..
me@vagrant-ubuntu-trusty-64:~$
Vous pouvez quitter ce shell distant avec la commande exit.
En outre, vous pouvez facilement exécuter une seule commande sur l'hôte distant à l'aide de ssh. Par exemple, pour exécuter df -h sur l'hôte distant:
$ ssh 10.0.0.50 df -h
me@10.0.0.50's password:
Filesystem Size Used Avail Use% Mounted on
udev 241M 12K 241M 1% /dev
tmpfs 49M 384K 49M 1% /run
/dev/sda1 40G 1.6G 37G 5% /
...
none 224G 113G 111G 51% /vagrant
me@ubuntu-xenial:~$
scp et sftp
scp (copie sécurisée) est très similaire à cp
commande pour copier des fichiers, avec un ajout – vous pouvez inclure des noms d’hôtes distants dans les noms de chemin source ou de destination. Le nom d'hôte et le chemin du répertoire sont séparésated par deux points. Cela vous permet de copier des fichiers en toute sécurité sur le réseau sous une forme cryptée. La commande suivante copie a.txt de la machine locale vers 10.0.0.50 :
me@ubuntu-xenial:~$ scp a.txt 10.0.0.50:/home/me
me@10.0.0.50's password:
a.txt 100% 0 0.0KB/s 00:00
sftp (ftp sécurisé) est également un programme de copie de fichiers similaire à ftp
. Cependant, il utilise un tunnel crypté SSH pour copier les fichiers, au lieu de tout envoyer en texte clair. De plus, vous n'avez pas besoin d'un serveur FTP s'exécutant sur l'hôte distant. Vous n'avez besoin que d'un serveur ssh. Voici un exemple de session:
me@ubuntu-xenial:~$ sftp 10.0.0.50
me@10.0.0.50's password:
Connected to 10.0.0.50.
sftp> put kali-linux-2020.3-installer-netinst-i386.iso
Uploading kali-linux-2020.3-installer-netinst-i386.iso to /home/me/kali-linux-2020.3-installer-netinst-i386.iso
kali-linux-2020.3-installer-netinst-i386.iso 100% 435MB 27.2MB/s 00:16
sftp> bye
ifconfig
Nous utilisons principalement ifconfig
commande pour vérifier l'adresse IP attribuée au système.
[root@lab ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 209.97.137.171 netmask 255.255.240.0 broadcast 209.97.143.255
inet6 fe80::c035:b2ff:fe9d:72d5 prefixlen 64 scopeid 0x20<link>
ether c2:35:b2:9d:72:d5 txqueuelen 1000 (Ethernet)
RX packets 1333200 bytes 167143230 (159.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 979666 bytes 93582595 (89.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 16 bytes 1392 (1.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 16 bytes 1392 (1.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@lab ~]#
creuser
dig (Domain Information Groper) est un outil flexible pour interroger les serveurs de noms DNS.
Il effectue Recherches DNS et affiche les réponses renvoyées par les serveurs de noms.
[root@lab ~]# dig geekflare.com
; <<>> DiG 9.11.13-RedHat-9.11.13-5.el8_2 <<>> geekflare.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12310
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;geekflare.com. IN A
;; ANSWER SECTION:
geekflare.com. 30 IN A 104.27.119.115
geekflare.com. 30 IN A 104.27.118.115
;; Query time: 12 msec
;; SERVER: 67.207.67.2#53(67.207.67.2)
;; WHEN: Wed Sep 16 17:58:45 UTC 2020
;; MSG SIZE rcvd: 74
[root@lab ~]#
telnet
telnet connecte l'hôte et le port de la destination via un protocole telnet si une connexion s'établit signifie que la connectivité entre deux hôtes fonctionne correctement.
[root@lab ~]# telnet gf.dev 443
Trying 104.27.153.44...
Connected to gf.dev.
Escape character is '^]'.
nslookup
nslookup est un programme pour interroger les serveurs de noms de domaine et résoudre les adresses IP.
[root@lab ~]# nslookup relicflare.com
Server: 67.207.67.2
Address: 67.207.67.2#53
Non-authoritative answer:
Name: relicflare.com
Address: 192.64.119.178
[root@lab ~]#
Résumé
La mise en réseau sous Linux est un vaste sujet, avec un grand nombre de commandes et d'utilitaires. Dans cet article, nous avons discuté de certaines commandes couramment utilisées qui, espérons-le, vous aideront à gérer et à sécuriser votre réseau et.