Cap. 5. Configurarea rețelei

Cuprins

5.1. Infrastructura de bază a rețelei
5.1.1. Rezoluția numelui de gazdă
5.1.2. Numele interfeței de rețea
5.1.3. Intervalul de adrese pentru rețeaua locală (LAN)
5.1.4. Suportul pentru dispozitivele de rețea
5.2. Configurația modernă a rețelei pentru mediul de birou
5.2.1. Instrumente cu interfață grafică pentru configurarea rețelei
5.3. Configurația modernă a rețelei fără interfața grafică
5.4. Configurația modernă a rețelei pentru cloud
5.4.1. Configurația modernă a rețelei pentru cloud cu DHCP
5.4.2. Configurația modernă a rețelei pentru cloud cu adresă IP statică
5.4.3. Configurația modernă a rețelei pentru cloud cu Network Manager
5.5. Configurația rețelei de nivel inferior
5.5.1. Comenzi «iproute2»
5.5.2. Operații de rețea sigure la nivel scăzut
5.6. Optimizarea rețelei
5.6.1. Găsirea MTU optime
5.6.2. Optimizare WAN TCP
5.7. Infrastructura netfilter
[Indicație] Indicație

Pentru un ghid modern specific Debian privind rețelele, citiți Manualul administratorului Debian — Configurarea rețelei.

[Indicație] Indicație

În cadrul systemd, networkd poate fi utilizat pentru gestionarea rețelelor. A se vedea systemd-networkd(8).

Să trecem în revistă infrastructura de rețea de bază a sistemului Debian modern.

Tabel 5.1. Lista instrumentelor de configurare a rețelei

pachete popcon(popularitate) dimensiune tipul descriere
network-manager V:421, I:484 7805 config::NM NetworkManager (daemon): gestionează rețeaua în mod automat
network-manager-gnome V:53, I:197 18 config::NM NetworkManager (interfață GNOME)
netplan.io V:1, I:7 340 config::NM+networkd Netplan (generator): interfață unificată și declarativă pentru NetworkManager și modulele systemd-networkd
ifupdown V:619, I:973 201 config::ifupdown instrument standardizat pentru activarea și dezactivarea rețelei (specific Debian)
isc-dhcp-client V:169, I:707 2884 config::low-level client DHCP
pppoeconf V:0, I:4 174 config::helper asistent de configurare pentru conexiunea PPPoE
wpasupplicant V:399, I:529 3901 config::helper client ce oferă suport pentru WPA și WPA2 (IEEE 802.11i)
wpagui V:0, I:1 784 config::helper client cu interfață grafică Qt pentru wpa_supplicant
wireless-tools V:192, I:264 292 config::helper instrumente pentru manipularea extensiilor „fără fir” Linux (Linux Wireless Extensions)
iw V:38, I:490 332 config::helper instrument pentru configurarea dispozitivelor wireless Linux
iproute2 V:756, I:984 4122 config::iproute2 iproute2, IPv6 și alte configurații avansate de rețea: ip(8), tc(8) etc.
iptables V:353, I:629 2410 config::Netfilter instrumente de administrare pentru filtrarea pachetelor și NAT (Netfilter)
nftables V:212, I:850 191 config::Netfilter instrumente de administrare pentru filtrarea pachetelor și NAT (Netfilter) (succesor al {ip,ip6,arp,eb}tables)
iputils-ping V:195, I:997 188 test testează accesibilitatea rețelei unei gazde aflată la distanță prin nume gazdă sau adresă IP (iproute2)
iputils-arping V:1, I:19 53 test testează accesibilitatea rețelei unei gazde de la distanță specificată de adresa ARP
iputils-tracepath V:2, I:21 50 test trasează ruta de rețea către o gazdă la distanță
ethtool V:93, I:250 1077 test afișează sau modifică configurarea dispozitivului Ethernet
mtr-tiny V:4, I:39 181 test::low-level urmărește ruta de rețea către o gazdă la distanță (curses)
mtr V:4, I:40 230 test::low-level urmărește ruta de rețea către o gazdă la distanță (curses și GTK)
gnome-nettool V:0, I:10 2480 test::low-level instrumente pentru opereții comune de informații de rețea (GNOME)
nmap V:25, I:185 4607 test::low-level cartograf de rețea / scaner de porturi (Nmap, consolă)
tcpdump V:16, I:166 1343 test::low-level analizator de trafic de rețea (Tcpdump, consolă)
wireshark V:2, I:41 11267 test::low-level analizator de trafic de rețea (Wireshark, GTK)
tshark V:2, I:23 438 test::low-level analizator de trafic de rețea (consolă)
tcptrace V:0, I:1 407 test::low-level produce o sinteză a conexiunilor din ieșirea tcpdump
ntopng V:0, I:0 15604 test::low-level afișează utilizarea rețelei în navigatorul web
dnsutils I:174 23 test::low-level clienți de rețea furnizați cu BIND: nslookup(8), nsupdate(8), dig(8)
dlint V:0, I:2 51 test::low-level verifică informațiile zonei DNS utilizând căutări în serverul de nume
dnstracer V:0, I:1 59 test::low-level urmărește un lanț de servere DNS până la sursă

Rezolvarea numelui de gazdă este acceptată în prezent și de mecanismul NSS (Name Service Switch). Fluxul acestei rezolvări este următorul.

  1. Fișierul „/etc/nsswitch.conf” cu secțiunea „hosts: files dns” dictează ordinea de rezolvare a numelor de gazdă; (aceasta înlocuiește vechea funcționalitate a secțiunii „order” din „/etc/host.conf”).

  2. Metoda files este invocată prima. Dacă numele gazdei este găsit în fișierul „/etc/hosts”, aceasta returnează toate adresele valide pentru acesta și se închide; (fișierul „/etc/host.conf” conține „multi on”).

  3. Se invocă metoda dns. Dacă numele gazdei este găsit prin interogarea către Sistemul de nume de domeniu Internet („Internet Domain Name System”: DNS) identificat de fișierul „/etc/resolv.conf”, acesta returnează toate adresele valide pentru acesta și iese.

O stație de lucru tipică poate fi instalată cu numele gazdei definit, de exemplu, la „host_name” și numele de domeniu opțional definit la un șir gol. Apoi, „/etc/hosts” arată astfel.

127.0.0.1 localhost
127.0.1.1 host_name

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Fiecare linie începe cu adresa IP și este urmată de numele gazdei asociat.

Adresa IP 127.0.1.1 din a doua linie a acestui exemplu poate să nu fie găsită pe unele sisteme de tip Unix. Programul de instalare Debian creează această intrare pentru un sistem fără adresă IP permanentă, ca soluție pentru unele programe (de exemplu, GNOME), așa cum este documentat în eroarea #719621.

host_name corespunde numelui de gazdă definit în „/etc/hostname” (a se vedea Secțiune 3.8.1, „Numele gazdei”).

Pentru un sistem cu o adresă IP permanentă, această adresă IP permanentă trebuie utilizată aici în locul 127.0.1.1.

Pentru un sistem cu o adresă IP permanentă și un nume de domeniu complet calificat (FQDN) furnizat de Sistemul de nume de domeniu (DNS), acel host_name canonic. domain_name ar trebui utilizat în locul host_name.

/etc/resolv.conf” este un fișier static dacă pachetul resolvconf nu este instalat. Dacă este instalat, este o legătură simbolică. În ambele cazuri, acesta conține informații care inițializează rutinele de rezolvare. Dacă DNS-ul este găsit la IP="192.168.11.1", acesta conține următoarele.

nameserver 192.168.11.1

Pachetul resolvconf transformă acest „/etc/resolv.conf” într-o legătură simbolică și gestionează automat conținutul său prin scripturi-cârlig.

Pentru stația de lucru PC într-un mediu LAN ad-hoc tipic, numele gazdei poate fi rezolvat prin Multicast DNS (mDNS), pe lângă metodele de bază files și dns.

  • Avahi oferă un cadru pentru descoperirea serviciilor DNS multicast în Debian.

  • Acesta este echivalentul lui Apple Bonjour / Apple Rendezvous.

  • Pachetul de module de extensie libnss-mdns asigură rezolvarea numelor de gazdă prin mDNS pentru funcționalitatea GNU Name Service Switch (NSS) a bibliotecii GNU C (glibc).

  • Fișierul „/etc/nsswitch.conf” ar trebui să conțină o secțiune de tipul „hosts: files mdns4_minimal [NOTFOUND=return] dns” (consultați /usr/share/doc/libnss-mdns/README.Debian pentru alte configurații).

  • Un nume de gazdă cu sufixul ". local„ domeniu pseudo-de nivel superior este rezolvat prin trimiterea unui mesaj de interogare mDNS într-un pachet UDP multicast utilizând adresa IPv4 ”224.0.0.251„ sau adresa IPv6 ”FF02::FB".

[Notă] Notă

Extinderea domeniilor generice de nivel superior (gTLD) în Sistemul de nume de domeniu este în curs de desfășurare. Aveți grijă la coliziunea numelor atunci când alegeți un nume de domeniu utilizat numai în cadrul LAN.

[Notă] Notă

Utilizarea pachetelor precum libnss-resolve împreună cu systemd-resolved, sau libnss-myhostname, sau libnss-mymachine, cu listări corespunzătoare în linia „hosts” din fișierul „/etc/nsswitch.conf” poate suprascrie configurația tradițională de rețea discutată mai sus. Consultați nss-resolve(8), systemd-resolved(8), nss-myhostname(8) și nss-mymachines(8) pentru mai multe informații.

Interfețele de rețea sunt inițializate de obicei din „networking.service” pentru interfața lo și din „NetworkManager.service” pentru alte interfețe în sistemele Debian moderne sub systemd.

Debian poate gestiona conexiunea la rețea prin intermediul software-ului de gestionare daemon, cum ar fi NetworkManager (NM) (network-manager și pachetele asociate).

  • Acestea vin cu propriile programe cu interfață grafică (GUI) și de linie de comandă ca interfețe de utilizator.

  • Acestea vin cu propriul daemon ca motor al sistemului.

  • Acestea permit conectarea ușoară a sistemului dvs. la Internet.

  • Acestea permit gestionarea ușoară a configurației rețelelor cu fir și fără fir.

  • Acestea ne permit să configurăm rețeaua independent de pachetul vechi ifupdown.

[Notă] Notă

Nu utilizați aceste instrumente de configurare automată a rețelei pentru servere. Acestea sunt destinate în principal utilizatorilor de stații de lucru mobile pe laptopuri.

Aceste instrumente moderne de configurare a rețelei trebuie configurate corespunzător pentru a evita conflictele cu pachetul vechi ifupdown și fișierul său de configurare „/etc/network/interfaces”.

Documentația oficială pentru NM în Debian este disponibilă în fișierul „/usr/share/doc/network-manager/README.Debian”.

În esență, configurarea rețelei pentru mediul grafic debirou se face după cum urmează.

  1. Faceți ca utilizatorul mediului grafic de birou, de exemplu foo, să aparțină grupului „netdev” prin următoarea comandă (alternativ, faceți acest lucru automat prin intermediul D-bus în medii grafice moderne de birou, precum GNOME și KDE).

    $ sudo usermod -a -G netdev foo
  2. Păstrați configurația din fișierul „/etc/network/interfaces” cât mai simplă, după cum se arată mai jos.

    auto lo
    iface lo inet loopback
  3. Reporniți NM în felul următor.

    $ sudo systemctl restart NetworkManager
  4. Configurați rețeaua prin intermediul interfeței grafice.

[Notă] Notă

Numai interfețele care nu sunt listate în „/etc/network/interfaces” sunt gestionate de NM pentru a evita conflictul cu ifupdown.

[Indicație] Indicație

Dacă doriți să extindeți capacitățile de configurare a rețelei NM, vă rugăm să căutați module de extensie adecvate și pachete suplimentare, cum ar fi network-manager-openconnect, network-manager-openvpn-gnome, network-manager-pptp-gnome, mobile-broadband-provider-info, gnome-bluetooth etc.

În systemd, rețeaua poate fi configurată în /etc/systemd/network/. Consultați systemd-resolved(8), resolved.conf(5) și systemd-networkd(8).

Acest lucru permite configurarea modernă a rețelei fără interfață grafică.

O configurație pentru clientul DHCP poate fi efectuată prin crearea fișierului „/etc/systemd/network/dhcp.network”. De exemplu:

[Match]
Name=en*

[Network]
DHCP=yes

O configurație de rețea statică poate fi efectuată prin crearea fișierului „/etc/systemd/network/static.network”. De exemplu:

[Match]
Name=en*

[Network]
Address=192.168.0.15/24
Gateway=192.168.0.1

Configurația modernă de rețea pentru cloud poate utiliza pachetele cloud-init și netplan.io (consultați Secțiune 3.8.4, „Inițializarea sistemului cloud”).

Pachetul netplan.io acceptă systemd-networkd și NetworkManager ca sisteme de configurare a rețelei și permite configurarea declarativă a rețelei utilizând date YAML. Când modificați YAML:

  • Rulați comanda „netplan generate” pentru a genera toate configurațiile necesare acestor sisteme din YAML.

  • Rulați comanda „netplan apply” pentru a aplica configurația generată la sistemele de configurare a rețelei.

Consultați „Documentația Netplan”, netplan(5), netplan-generate(8) și netplan-apply(8).

A se vedea și „Documentația Cloud-init” (în special secțiunile „Surse de configurare” și „Netplan Passthrough”) pentru a afla cum cloud-init poate integra configurația netplan.io cu surse de date alternative.

Pentru configurarea rețelei de nivel inferior în Linux, utilizați programele iproute2 (ip(8), …) .

Puteți utiliza în siguranță comenzile de rețea de nivel inferior, deoarece acestea nu modifică configurația rețelei.


[Indicație] Indicație

Unele dintre aceste instrumente de configurare a rețelei de nivel inferior se află în „/usr/sbin/”. Este posibil să fie necesar să introduceți ruta completă a comenzii, cum ar fi „/usr/sbin/ifconfig”, sau să adăugați „/usr/sbin” la lista „$PATH” din „~/.bashrc”.

Optimizarea generală a rețelei depășește sfera acestei documentații. Abordez doar subiecte relevante pentru conexiunile casnice.


NM stabilește în mod normal automat unitatea maximă de transmisie („Maximum Transmission Unit”: MTU) optimă.

În unele cazuri, este posibil să doriți să stabiliți MTU manual după experimentarea cu ping(8) cu opțiunea „-M do” pentru a trimite un pachet ICMP cu diferite dimensiuni de pachete de date. MTU este dimensiunea maximă a pachetului de date fără fragmentare IP plus 28 de octeți pentru IPv4 și plus 48 de octeți pentru IPv6. De exemplu, următoarea comandă găsește MTU pentru conexiunea IPv4 ca fiind 1460 și MTU pentru conexiunea IPv6 ca fiind 1500.

$ ping -4 -c 1 -s $((1500-28)) -M do www.debian.org
PING  (149.20.4.15) 1472(1500) bytes of data.
ping: local error: message too long, mtu=1460

---  ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

$ ping -4 -c 1 -s $((1460-28)) -M do www.debian.org
PING  (130.89.148.77) 1432(1460) bytes of data.
1440 bytes from klecker-misc.debian.org (130.89.148.77): icmp_seq=1 ttl=50 time=325 ms

---  ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 325.318/325.318/325.318/0.000 ms
$ ping -6 -c 1 -s $((1500-48)) -M do www.debian.org
PING www.debian.org(mirror-csail.debian.org (2603:400a:ffff:bb8::801f:3e)) 1452 data bytes
1460 bytes from mirror-csail.debian.org (2603:400a:ffff:bb8::801f:3e): icmp_seq=1 ttl=47 time=191 ms

--- www.debian.org ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 191.332/191.332/191.332/0.000 ms

Acest proces este descoperirea traseului MTU („Path MTU”: PMTU) (RFC1191), iar comanda tracepath(8) poate automatiza acest proces.


În plus față de aceste reguli de bază, trebuie să știți următoarele.

  • Orice utilizare a metodelor de tunelare (VPN etc.) poate reduce și mai mult MTU-ul optim din cauza suprasarcinii generate.

  • Valoarea MTU nu trebuie să depășească valoarea PMTU determinată experimental.

  • O valoare MTU mai mare este, în general, mai bună atunci când sunt îndeplinite alte limitări.

Dimensiunea maximă a segmentului (MSS) este utilizată ca măsură alternativă a dimensiunii pachetului. Relația dintre MSS și MTU este următoarea.

  • MSS = MTU - 40 pentru IPv4

  • MSS = MTU - 60 pentru IPv6

[Notă] Notă

Optimizarea bazată pe iptables(8) (a se vedea Secțiune 5.7, „Infrastructura netfilter”) poate limita dimensiunea pachetelor prin MSS și este utilă pentru router. A se vedea „TCPMSS” în iptables(8).

Debitul TCP poate fi maximizat prin ajustarea parametrilor dimensiunii memoriei tampon TCP, așa cum se arată în „TCP tuning -- ajustarea TCP” pentru rețelele WAN moderne cu lățime de bandă mare și latență ridicată. Până în prezent, configurația implicită actuală a Debian funcționează bine chiar și pentru rețeaua mea LAN conectată prin serviciul rapid FTTP de 1 Gbps.

Netfilter oferă infrastructura pentru stateful firewall -- paravan de protecție dinamic (cu stări memorate) și traducerea adreselor de rețea („Network address translation”: NAT) cu module ale nucleului Linux (a se vedea Secțiune 3.10, „Inițializarea modulelor de nucleu”).

Tabel 5.7. Lista instrumentelor de paravan de protecție

pachete popcon(popularitate) dimensiune descriere
nftables V:212, I:850 191 instrumente de administrare pentru filtrarea pachetelor și NAT (Netfilter) (succesor al {ip,ip6,arp,eb}tables)
iptables V:353, I:629 2410 instrumente de administrare pentru netfilter (iptables(8) pentru IPv4, ip6tables(8) pentru IPv6)
arptables V:0, I:1 102 instrumente de administrare pentru netfilter (arptables(8) pentru ARP)
ebtables V:14, I:24 276 instrumente de administrare pentru netfilter (ebtables(8) pentru punte Ethernet)
iptstate V:0, I:1 122 monitorizează continuu starea netfilter (similar cu top(1))
ufw V:73, I:99 859 Uncomplicated Firewall (UFW) -- (paravan de protecție fără complicații) este un program pentru gestionarea unui paravan de protecție netfilter
gufw V:5, I:10 3663 interfață grafică cu utilizatorul pentru Uncomplicated Firewall (UFW)
firewalld V:16, I:24 2482 firewalld este un program de paravan de protecție gestionat dinamic, cu suport pentru zone de rețea
firewall-config V:0, I:3 1076 interfață grafică cu utilizatorul pentru firewalld
shorewall-init V:0, I:0 88 inițializarea Shoreline Firewall (paravan de protecție al liniei de coastă)
shorewall V:2, I:5 3090 Shoreline Firewall, generator de fișiere de configurare netfilter
shorewall-lite V:0, I:0 71 Shoreline Firewall, generator de fișiere de configurare netfilter (versiune simplificată)
shorewall6 V:0, I:1 1334 Shoreline Firewall, generator de fișiere de configurare netfilter (versiune IPv6)
shorewall6-lite V:0, I:0 71 Shoreline Firewall, generator de fișiere de configurare netfilter (versiune simplificată, IPv6)

Programul principal al spațiului de utilizator al netfilter este iptables(8). Puteți configura manual netfilter în mod interactiv din shell, salva starea acestuia cu iptables-save(8) și s-o restaurați prin scriptul init cu iptables-restore(8) la repornirea sistemului.

Scripturile de asistență pentru configurare, precum shorewall, facilitează acest proces.

Consultați documentația la Documentația Netfilter (sau în „/usr/share/doc/iptables/html/”).

[Indicație] Indicație

Deși acestea au fost scrise pentru Linux 2.4, atât comanda iptables(8) cât și funcția netfilter din nucleu se aplică pentru Linux 2.6 și seria de nuclee 3.x.