Sådan konfigureres og styres netværksforbindelser ved hjælp af nmcli-værktøjet


Som Linux-administrator har du forskellige værktøjer, du kan bruge til at konfigurere dine netværksforbindelser, såsom: nmtui, din NetworkManager med GNOME grafisk brugergrænseflade og selvfølgelig nmcli (netværksadministrator kommandolinjeværktøj).

Jeg har set mange administratorer, der bruger nmtui for enkelheds skyld. Brug af nmcli sparer dog din tid, giver dig selvtillid, kan bruge den i scripts, og det er det første værktøj, der bruges til at fejlfinde dit Linux-servernetværk og hurtigt bringe dets funktionalitet tilbage.

Da jeg så mange kommentarer, der bad om nmcli, besluttede jeg at skrive denne artikel. Selvfølgelig skal du altid læse omhyggeligt mandesider (det er No1-hjælp til dig). Mit mål er at spare din tid og vise dig nogle tip.

Syntaksen for nmcli er:

# nmcli [OPTIONS] OBJECT {COMMAND | help}

Hvor OBJECT er en af: generelt, netværk, radio, forbindelse, enhed, agent.

Et godt udgangspunkt ville være at kontrollere vores enheder:

# nmcli dev status

DEVICE      TYPE      STATE         CONNECTION 
docker0     bridge    connected     docker0    
virbr0      bridge    connected     virbr0     
enp0s3      ethernet  connected     enp0s3     
virbr0-nic  ethernet  disconnected  --         
lo          loopback  unmanaged     --         

Som vi kan se i den første kolonne er der en liste over vores netværksenheder. Vi har et netværkskort med navnet enp0s3 . På din maskine kunne du se andre navne.

Navngivning afhænger af netværkskortets type (hvis det er ombord, pci-kort osv.). I den sidste kolonne ser vi vores konfigurationsfiler, der bruges af vores enheder for at oprette forbindelse til netværket.

Det er enkelt at forstå, at vores enheder i sig selv ikke kan gøre noget. De har brug for os til at oprette en konfigurationsfil for at fortælle dem, hvordan man opnår netværksforbindelse. Vi kalder disse filer også som “forbindelsesprofiler”. Vi finder dem i/etc/sysconfig/network-scripts-biblioteket.

# cd /etc/sysconfig/network-scripts/
# ls
ifcfg-enp0s3  ifdown-isdn      ifup          ifup-plip      ifup-tunnel
ifcfg-lo      ifdown-post      ifup-aliases  ifup-plusb     ifup-wireless
ifdown        ifdown-ppp       ifup-bnep     ifup-post      init.ipv6-global
ifdown-bnep   ifdown-routes    ifup-eth      ifup-ppp       network-functions
ifdown-eth    ifdown-sit       ifup-ib       ifup-routes    network-functions-ipv6
ifdown-ib     ifdown-Team      ifup-ippp     ifup-sit
ifdown-ippp   ifdown-TeamPort  ifup-ipv6     ifup-Team
ifdown-ipv6   ifdown-tunnel    ifup-isdn     ifup-TeamPort

Som du kan se her er filerne med navn, der starter med ifcfg- (interface-konfiguration) forbindelsesprofiler. Når vi opretter en ny forbindelse eller ændrer en eksisterende med nmcli eller nmtui, gemmes resultaterne her som forbindelsesprofiler.

Ι Jeg viser dig to af dem fra min maskine, en med en dhcp-konfiguration og en med statisk ip.

# cat ifcfg-static1
# cat ifcfg-Myoffice1

Vi er klar over, at nogle ejendomme har forskellige værdier, og andre ikke eksisterer, hvis det ikke er nødvendigt. Lad os se hurtigt på de vigtigste af dem.

  1. TYPE , vi har ethernet-type her. Vi kunne have wifi, team, obligation og andre.
  2. ENHED , navnet på den netværksenhed, der er knyttet til denne profil.
  3. BOOTPROTO , hvis den har værdien "dhcp", så tager vores forbindelsesprofil dynamisk IP fra dhcp-serveren, hvis den har værdien "none", tager den ingen dynamisk IP og sandsynligvis når vi tildeler en statisk IP .
  4. IPADDR er den statiske IP, vi tildeler vores profil.
  5. PREFIX , undernetmasken. En værdi på 24 betyder 255.255.255.0. Du kan forstå subnetmasken bedre, hvis du skriver ned dens binære format. For eksempel betyder værdier på 16, 24, 26, at de første 16, 24 eller 26 bits er henholdsvis 1 og resten 0, hvilket præcist definerer, hvad netværksadressen er, og hvad er det rækkevidde af ip, der kan tildeles.
  6. GATEWAY , gatewayens IP.
  7. DNS1 , DNS2 , to dns-servere, vi vil bruge.
  8. ONBOOT , hvis den har værdien "ja" betyder det, at vores computer ved opstart læser denne profil og prøver at tildele den til sin enhed.

Lad os nu gå videre og kontrollere vores forbindelser:

# nmcli con show

Den sidste søjle med enheder hjælper os med at forstå, hvilken forbindelse der er “OP” og kører, og hvilken der ikke er. På ovenstående billede kan du se de to forbindelser, der er aktive: Myoffice1 og enp0s8.

Tip: Hvis du kun vil se de aktive forbindelser, skal du skrive:

# nmcli con show -a

Tip: Du kan bruge den automatiske komplette rammefane, når du bruger nmcli, men det er bedre at bruge minimalt format af kommandoen. Følgende kommandoer er således ens:

# nmcli connection show
# nmcli con show
# nmcli c s

Hvis jeg tjekker ip-adresserne på mine enheder:

# ip a

Jeg ser, at min enhed enp0s3 tog 192.168.1.6 IP fra dhcp-serveren, fordi forbindelsesprofilen Myoffice1 , der er op, har en dhcp-konfiguration. Hvis jeg bringer “op” min forbindelsesprofil med navnet static1 , tager min enhed den statiske IP 192.168.1.40, som den er defineret i forbindelsesprofilen.

# nmcli con down Myoffice1 ; nmcli con up static1
# nmcli con show

Lad os se IP-adressen igen:

# ip a

Vi kan lave vores første forbindelsesprofil. De mindste egenskaber, vi skal definere, er type, ifname og con-name:

  1. type - for forbindelsestypen.
  2. ifname - for det enhedsnavn, der er tildelt vores forbindelse.
  3. con-name - for forbindelsesnavnet.

Lad os oprette en ny Ethernet-forbindelse med navnet Myhome1 , der er tildelt enhed enp0s3 :

# nmcli con add type ethernet con-name Myhome1 ifname enp0s3

Tjek dens konfiguration:

# cat ifcfg-Myhome1

Som du kan se, har den BOOTPROTO = dhcp , fordi vi ikke angav nogen statisk ip-adresse.

Tip: Vi kan ændre enhver forbindelse med kommandoen "nmcli con mod" . Men hvis du ændrer en dhcp-forbindelse og ændrer den til statisk, skal du ikke glemme at ændre dens “ipv4.method” fra “auto” til “manual” . Ellers ender du med to IP-adresser: en fra dhcp-serveren og den statiske.

Lad os lave en ny Ethernet-forbindelsesprofil med navn static2 , som tildeles enhed enp0s3 med statisk IP 192.168.1.50, subnetmaske 255.255.255.0 = 24 og gateway 192.168 .1.1.

# nmcli con add type ethernet con-name static2 ifname enp0s3 ip4 192.168.1.50/24 gw4 192.168.1.1

Tjek dens konfiguration:

# cat ifcfg-static2

Lad os ændre den sidste forbindelsesprofil og tilføje to dns-servere.

# nmcli con mod static2 ipv4.dns “8.8.8.8 8.8.4.4”

Tip: Der er noget her, du skal være opmærksom på: egenskaberne til IP-adresse og gateway har forskellige navne, når du tilføjer, og når du ændrer en forbindelse. Når du tilføjer forbindelser, bruger du “ip4” og “gw4” , mens når du ændrer dem, bruger du “ipv4” og “ gwv4 ”.

Lad os nu bringe denne forbindelsesprofil op:

# nmcli con down static1 ; nmcli con up static2

Som du kan se, har enheden enp0s3 nu IP-adressen 192.168.1.50.

# ip a

Tip: Der er mange egenskaber, du kan ændre. Hvis du ikke husker dem udenad, kan du hjælpe dig selv ved at skrive "nmcli con show" og derefter forbindelsesnavnet:

# nmcli con show static2

Du kan ændre alle disse egenskaber skrevet med små bogstaver.

For eksempel: Når du bringer en forbindelsesprofil ned, søger NetworkManager efter en anden forbindelsesprofil og bringer den automatisk op. (Jeg lader det være som øvelse at kontrollere det). Hvis du ikke vil have, at din forbindelsesprofil automatisk opretter forbindelse:

# nmcli con mod static2 connection.autoconnect no

Den sidste øvelse er meget nyttig: du lavede en forbindelsesprofil, men du vil have, at den skal bruges af bestemte brugere. Det er godt at klassificere dine brugere!

Vi lader kun brugerstella bruge denne profil:

# nmcli con mod static2 connection.permissions stella

Tip: Hvis du vil give tilladelser til mere end én bruger, skal du skrive user: user1, user2 uden tomt mellemrum mellem dem:

# nmcli con mod static2 connection.permissions user:stella,john

Hvis du logger ind som en anden bruger, kan du ikke hente denne forbindelsesprofil:

# nmcli con show
# nmcli con up static2
# ls /etc/sysconfig/network-scripts

En fejlmeddelelse siger, at forbindelsen 'static2' ikke findes, selvom vi ser, at den eksisterer. Det skyldes, at den nuværende bruger ikke har tilladelse til at oprette denne forbindelse.

Konklusion: tøv ikke med at bruge nmcli. Det er let og nyttigt.