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.
-
TYPE
, vi har ethernet-type her. Vi kunne have wifi, team, obligation og andre. -
ENHED
, navnet på den netværksenhed, der er knyttet til denne profil. -
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 . -
IPADDR
er den statiske IP, vi tildeler vores profil. -
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. -
GATEWAY
, gatewayens IP. -
DNS1
,DNS2
, to dns-servere, vi vil bruge. -
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:
-
type
- for forbindelsestypen. -
ifname
- for det enhedsnavn, der er tildelt vores forbindelse. -
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.