14 comenzi utile de rețea Linux

Publicat: 2015-02-15

Configurarea, monitorizarea și securizarea rețelelor reprezintă o parte esențială a sarcinii unui administrator de sistem. Când vine vorba de gestionarea rețelelor Linux, există multe comenzi și utilități disponibile.

Uneori, sistemele în rețea eșuează. Dvs., în calitate de administrator, trebuie să diagnosticați și să rezolvați problemele. Monitorizarea ajută la detectarea problemelor și la remedierea lor înainte ca lucrurile să scape de sub control. Monitorizarea pentru securitate și performanță este, de asemenea, o parte esențială a activităților unui administrator.

Aici discutăm câteva comenzi utilizate în mod obișnuit pentru a gestiona rețelele Linux.

ip

Pachetul iproute2 include comanda IP care este utilizată pentru configurarea rețelei și a rutare. Aceasta înlocuiește comenzile tradiționale ifconfig și route .

ip preia un al doilea argument care specifică obiectul pe care doriți să executați o comandă și o acțiune precum adăugare, ștergere sau afișare.

link ip

ip link este pentru configurarea, adăugarea și ștergerea interfețelor de rețea. Utilizați comanda ip link show pentru a afișa toate interfețele de rețea de pe sistem:

 $ 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

Puteți vedea pagina de manual pentru ip link cu:

 $ man ip-link

adresa IP

Utilizați comanda IP address pentru a afișa adrese, pentru a lega o nouă adresă sau pentru a le șterge pe cele vechi. Comanda adresă ip din pagina de manual este denumită adresă-ip.

De exemplu, următoarea comandă arată adresa IP atribuită interfeței de rețea 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 ...

ruta ip

Utilizați ruta IP pentru a imprima sau afișa tabelul de rutare. Următoarea comandă afișează conținutul tabelului de rutare:

 $ 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

În timp ce Nmap a fost folosit în multe filme, The Matrix Reloaded ( Wikipedia , IMDB , Amazon ) a transformat Nmap într-un star de cinema!.

Nmap („Network Mapper”) este un utilitar puternic utilizat pentru descoperirea rețelei, auditarea securității și administrare. Mulți administratori de sistem îl folosesc pentru a determina care dintre sistemele lor sunt online și, de asemenea, pentru detectarea sistemului de operare și detectarea serviciului.

Scanarea implicită Nmap arată porturile, starea acestora (deschis/închis) și protocoalele. Trimite un pachet către cele mai comune 1000 de porturi și verifică răspunsul.

 $ 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

Pentru a verifica ce gazde din rețeaua dvs. sunt active:

 $ 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

Utilizați flag -O pentru a identifica ce sistem de operare rulează o gazdă.

 $ 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 cuvânt de precauție: nimeni nu apreciază ca sistemele lor să fie scanate pe internet. Deci, înainte de a face acest lucru, cereți permisiunea.

De asemenea, puteți utiliza Nmap pe Windows, consultați acest ghid de instalare.

ping

Utilizați ping pentru a vedea dacă o gazdă este în viață. Această comandă super simplă vă ajută să verificați starea unei gazde sau a unui segment de rețea. Comanda Ping trimite un pachet ICMP ECHO_REQUEST gazdei țintă și așteaptă să vadă dacă răspunde.

Cu toate acestea, unele gazde blochează cererile de eco ICMP cu un firewall. Unele site-uri de pe internet pot face același lucru.

În mod implicit, ping rulează într-o buclă infinită. Pentru a trimite un număr definit de pachete, utilizați -c flag.

 $ 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

Cu -o, ping-ul se iese cu succes după primirea unui pachet de răspuns.

 $ 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

Puteți folosi -n flag pentru a evita căutările DNS inverse. Numărul de secvență ICMP este deosebit de important. O întrerupere a numerelor de secvență indică pachete pierdute.

Un ping eșuat s-ar putea datora

  • defecțiune a rețelei
  • gazda nefiind in viata
  • firewall care blochează solicitările ICMP ECHO

De asemenea, puteți efectua un test ping online pentru a verifica conectivitatea din diferite părți ale lumii.

iPerf

În timp ce ping verifică disponibilitatea unei gazde, iPerf ajută la analiza și măsurarea performanței rețelei între două gazde. Cu iPerf, deschideți o conexiune între două gazde și trimiteți câteva date. iPerf arată apoi lățimea de bandă disponibilă între cele două gazde.

Puteți instala un iPerf folosind managerul de pachete de distribuție. De exemplu, pe distribuțiile bazate pe Ubuntu, puteți instala astfel:

 $ sudo apt install iperf -y

După ce ați instalat iPerf pe ambele mașini, porniți serverul iPerf pe una dintre ele. Următorul exemplu pornește serverul iPerf pe o gazdă cu adresa IP 10.0.0.51.

 $ iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------

Pe a doua mașină porniți iPerf cu steag-ul -c. Acesta se conectează cu serverul și trimite câteva date.

 $ 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 revine cu rezultatele lățimii de bandă în câteva secunde.

traceroute

Dacă ping-ul arată pachete lipsă, ar trebui să utilizați traceroute pentru a vedea pe ce rută parcurg pachetele. Traceroute arată secvența de porți prin care pachetele călătoresc pentru a ajunge la destinație. De exemplu, traceroute de la aparatul meu la google.com arată următoarele:

 $ 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

Linia 4 din această ieșire arată un * în timpii dus-întors. Acest lucru indică niciun răspuns. Acest lucru se poate datora mai multor motive - deoarece pachetele ICMP traceroute au prioritate scăzută, acestea pot fi abandonate de un router. Sau ar putea fi pur și simplu aglomerație. Dacă vedeți un * în toate câmpurile de timp pentru un anumit gateway, atunci este posibil ca gateway-ul să fie oprit.

Multe instrumente de urmărire a rutei bazate pe web vă permit să faceți o trasare inversă, adică de la un site web la gazdă. Le puteți verifica pe traceroute.org sau Geekflare Traceroute.

tcpdump

tcpdump este un instrument de detectare a pachetelor și poate fi de mare ajutor la rezolvarea problemelor de rețea. Ascultă traficul de rețea și tipărește informații despre pachete pe baza criteriilor pe care le definiți.

De exemplu, puteți examina toate pachetele trimise către sau de la o anumită gazdă, Ubuntu18 în acest exemplu:

 $ 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

În mod implicit, tcpdump rezolvă adresele IP în nume de gazdă. Folosiți -n flag, dacă nu doriți ca tcpdump să efectueze căutări de nume.

Ieșirea tcpdump tipărește o linie pentru fiecare pachet. Folosiți flag -c pentru a limita ieșirea, 5 în exemplul de mai sus.

tcpdump este util pentru rezolvarea problemelor de rețea și, de asemenea, identificarea problemelor potențiale. Este o idee bună să rulați ocazional un tcpdump în rețea pentru a verifica că totul este în ordine.

netstat

Comanda Netstat este utilizată pentru a examina conexiunile de rețea, tabelele de rutare și diverse setări și statistici de rețea.

Utilizați -i pentru a lista interfețele de rețea de pe sistemul dvs.

Iată un exemplu:

 $ 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

Folosind -r flag va afișa tabelul de rutare. Aceasta arată calea configurată pentru trimiterea pachetelor de rețea.

 $ 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 asterisc în ultimele două rânduri indică faptul că nu este necesar niciun gateway pentru a trimite pachete către orice gazdă din aceste rețele. Această gazdă este conectată direct la rețelele 10.0.0.0 și 10.0.2.0.

În prima linie, destinația este implicită, ceea ce înseamnă că orice pachet destinat unei rețele care nu este listată în acest tabel este gestionat de routerul 10.0.2,2.

Comanda netstat fără opțiuni afișează o listă de socket-uri deschise. Folosiți -l flag pentru a afișa numai soclurile de ascultare, care în mod implicit nu sunt afișate. Puteți folosi -a flag pentru a afișa soclurile de ascultare și non-ascultare. Iată un exemplu:

 $ 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 ...

Mai multe exemple de comandă Netstat aici

ss

Instalările Linux au o mulțime de servicii care rulează implicit. Acestea ar trebui să fie dezactivate sau, de preferință, eliminate, deoarece acest lucru ajută la reducerea suprafeței de atac. Puteți vedea ce servicii rulează cu comanda netstat. În timp ce netstat este încă disponibil, majoritatea distribuțiilor Linux trec la comanda ss .

utilizați comanda ss cu -t și -a pentru a lista toate socketurile TCP. Aceasta afișează atât prizele de ascultare, cât și cele care nu ascultă.

 $ 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 :::*

Pentru a afișa numai conexiuni TCP cu starea stabilită:

 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 vă permite să vă conectați în siguranță cu gazde la distanță prin internet. Anterior, rlogin și telnet au fost folosite pentru a se conecta și a administra gazde la distanță. Cu toate acestea, ambii suferă de un defect fundamental, adică trimit toate informațiile, inclusiv numele de conectare și parolele în text clar.

ssh permite comunicarea securizată prin internet cu următoarele două caracteristici:

  • Confirmă că gazda la distanță este cine spune că este.
  • Acesta criptează toate comunicările dintre gazde.

Pentru a vă conecta la o gazdă la distanță, trebuie să aveți un server OpenSSH care rulează pe gazda la distanță. Îl puteți instala folosind managerul de pachete de distribuție. De exemplu, pe Ubuntu îl puteți instala astfel:

 $ sudo apt install openssh-server

Iată un exemplu care arată cum vă puteți conecta la gazda la distanță 10.0.0.50 folosind comanda 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

Primiți un mesaj care spune că autenticitatea gazdei 10.0.0.50 nu poate fi stabilită, asta pentru că este prima dată când se realizează o conexiune cu 10.0.0.50 (server) și clientul ssh nu a mai văzut niciodată această gazdă la distanță. Introduceți da pentru a continua conectarea. Odată ce conexiunea a fost stabilită, vi se solicită o parolă:

 Warning: Permanently added '10.0.0.50' (ECDSA) to the list of known hosts. [email protected]'s password:

După ce introduceți parola corectă, sunteți conectat la gazda de la distanță.

 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:~$

Puteți ieși din acest shell la distanță cu comanda exit.

De asemenea, puteți executa cu ușurință o singură comandă pe gazda la distanță folosind ssh. De exemplu, pentru a rula df -h pe gazda la distanță:

 $ ssh 10.0.0.50 df -h [email protected]'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 și sftp

scp (copie securizată) este foarte asemănătoare cu comanda cp pentru copierea fișierelor, cu un plus – puteți include nume de gazdă la distanță în căile sursă sau destinație. Numele de gazdă și calea directorului sunt separate prin două puncte. Acest lucru vă permite să copiați fișiere în siguranță în rețea într-o formă criptată. Următoarea comandă copiază a.txt de pe computerul local în 10.0.0.50:

 me@ubuntu-xenial:~$ scp a.txt 10.0.0.50:/home/me [email protected]'s password: a.txt 100% 0 0.0KB/s 00:00

sftp (ftp securizat) este, de asemenea, un program de copiere a fișierelor similar cu ftp . Cu toate acestea, folosește un tunel criptat SSH pentru a copia fișierele, în loc să trimită totul în text clar. De asemenea, nu aveți nevoie de un server FTP care rulează pe gazda la distanță. Ai nevoie doar de un server ssh. Iată un exemplu de sesiune:

 me@ubuntu-xenial:~$ sftp 10.0.0.50 [email protected]'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

În cea mai mare parte, folosim comanda ifconfig pentru a verifica adresa IP atribuită sistemului.

 [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 ~]#

săpa

dig (Domain Information Groper) este un instrument flexibil pentru interogarea serverelor de nume DNS.

Efectuează căutări DNS și afișează răspunsurile care sunt returnate de la serverele de nume.

 [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

gazda și portul destinației de conectare telnet printr-un protocol telnet, dacă se stabilește o conexiune, înseamnă că conectivitatea între două gazde funcționează bine.

 [root@lab ~]# telnet gf.dev 443 Trying 104.27.153.44... Connected to gf.dev. Escape character is '^]'.

nslookup

nslookup este un program pentru a interoga serverele de nume de domeniu și pentru a rezolva 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 ~]#

rezumat

Rețeaua în Linux este un subiect vast, cu un număr mare de comenzi și utilități. În acest articol, am discutat despre câteva comenzi utilizate în mod obișnuit, care sperăm că vă vor ajuta să vă gestionați și să vă securizați rețeaua.