Hvordan konfigurere IP-nettverk med 'nmcli' i Linux
Som Linux-administrator har du forskjellige verktøy du kan bruke for å konfigurere nettverkstilkoblingene dine, for eksempel nmtui, din NetworkManager med GNOME grafisk brukergrensesnitt, og selvfølgelig >nmcli (nettverksbehandler kommandolinjeverktøy).
Jeg har observert at mange administratorer bruker nmtui for sin enkelhet. Ved å bruke nmcli sparer du imidlertid tid, øker selvtilliten din, tillater integrering i skript og er det primære verktøyet for feilsøking av Linux-servernettverk, og gjenoppretter funksjonaliteten raskt.
Etter å ha lagt merke til mange kommentarer som søker hjelp med nmcli, bestemte jeg meg for å skrive denne artikkelen. Selvfølgelig bør du alltid lese man-sidene nøye (de er ressurs nr. 1 for deg). Målet mitt er å spare deg tid og gi deg noen nyttige tips.
nmcli kommandosyntaks
Syntaksen til nmcli er:
nmcli [OPTIONS] OBJECT {COMMAND | help}
Hvor OBJECT
er en av generell, nettverk, radio, tilkobling, enhet og agent.
Sjekk nettverksenhetsstatus i Linux
Et godt utgangspunkt ville være å sjekke enhetene våre:
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 kolonnen, er det en liste over våre nettverksenheter. Vi har ett nettverkskort med navnet enp0s3
. På maskinen din kan du se forskjellige navn.
Navngivningen avhenger av typen nettverkskort (om det er innebygd, et PCI-kort osv.). I den siste kolonnen ser vi konfigurasjonsfilene våre, som brukes av enhetene våre for å koble til nettverket
Det er enkelt å forstå at enhetene våre i seg selv ikke kan gjøre noe. De trenger at vi oppretter en konfigurasjonsfil for å instruere dem om hvordan de kan oppnå nettverkstilkobling. Disse filene kalles også "tilkoblingsprofiler", og vi finner dem i katalogen /etc/sysconfig/network-scripts.
cd /etc/sysconfig/network-scripts/
ls
Eksempelutgang
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 filene med navn som begynner med 'ifcfg-'
(grensesnittkonfigurasjon) tilkoblingsprofiler. Når vi oppretter en ny tilkobling eller endrer en eksisterende med nmcli eller nmtui, lagres resultatene her som tilkoblingsprofiler.
Jeg skal vise deg to av dem fra maskinen min, en med dhcp-konfigurasjon og en med statisk ip.
cat ifcfg-static1
cat ifcfg-Myoffice1
Vi innser at noen eiendommer har forskjellige verdier, og noen andre eksisterer ikke hvis de ikke er nødvendige.
La oss ta en rask titt på de viktigste.
TYPE
– vi har Ethernet-typen her. Vi kan også ha WiFi, team, bond og andre.ENHET
– navnet på nettverksenheten som er knyttet til denne profilen.BOOTPROTO
– hvis den har verdien “dhcp ”, får tilkoblingsprofilen vår en dynamisk IP fra DHCP-serveren. Hvis den har verdien “none ”, bruker den ikke en dynamisk IP, og vi tildeler sannsynligvis en statisk IP.IPADDR
– er den statiske IP-en vi tildeler profilen vår.PREFIX
– nettverksmasken. En verdi på 24 betyr 255.255.255.0. Du kan bedre forstå nettverksmasken ved å skrive ned dens binære format. For eksempel betyr verdiene 16, 24 og 26 at de første 16, 24< eller 26 biter, henholdsvis, er satt til 1, og resten er 0. Dette definerer nettverksadressen og rekkevidden av IP-adresser som kan tildeles.GATEWAY
– gatewayens IP.DNS1
,DNS2
– to dns-servere vi ønsker å bruke.ONBOOT
– hvis den har verdien “yes” betyr det at ved oppstart vil datamaskinen vår lese denne profilen og prøve å tilordne den til enheten.
Sjekk nettverkstilkobling i Linux
La oss nå gå videre og sjekke tilkoblingene våre:
nmcli con show
Den siste kolonnen med enheter hjelper oss å forstå hvilken tilkobling som er «OPP» og kjører og hvilken som ikke er det. I bildet ovenfor kan du se de to aktive forbindelsene: Myoffice1 og enp0s8.
Tips: Hvis du bare vil se de aktive forbindelsene, skriv inn:
nmcli con show -a
Tips: Du kan bruke autofullfør ved å trykke Tab
når du bruker nmcli, men det er bedre å bruke minimalt format på kommandoen.
Dermed er følgende kommandoer like:
nmcli connection show
nmcli con show
nmcli c s
Sjekk IP-adressen i Linux
Hvis jeg sjekker ip-adressene til enhetene mine:
ip a
Jeg ser at enheten min enp0s3
tok 192.168.1.6 IP-en fra dhcp-serveren fordi tilkoblingsprofilen Myoffice1
som er oppe har en dhcp-konfigurasjon.
Hvis jeg henter “up ”
tilkoblingsprofilen min med navnet static1
, vil enheten min ta den statiske IP-adressen 192.168.1.40 slik den er definert i tilkoblingsprofil.
nmcli con down Myoffice1 ; nmcli con up static1
nmcli con show
La oss se IP-adressen igjen:
ip a
Vi kan lage vår første tilkoblingsprofil. Minimumsegenskapene vi må definere er type, ifname, og con-name:
type
– for tilkoblingstypen.ifname
– for enhetsnavnet som er tilordnet tilkoblingen vår.con-name
– for tilkoblingsnavnet.
Opprette en ny Ethernet-tilkobling i Linux
La oss opprette en ny Ethernet-tilkobling med navnet Myhome1
, tildelt en enhet enp0s3
:
nmcli con add type ethernet con-name Myhome1 ifname enp0s3
Sjekk konfigurasjonen:
cat ifcfg-Myhome1
Som du kan se har den BOOTPROTO=dhcp
, fordi vi ikke ga noen statisk ip-adresse.
Tips: Vi kan endre enhver forbindelse med kommandoen “nmcli con mod“
. Men hvis du endrer en dhcp-tilkobling og endrer den til statisk, ikke glem å endre den “ipv4.method ”
fra “auto ”
til “manual ”
. Ellers vil du ende opp med to IP-adresser: en fra dhcp-serveren og den statiske.
La oss lage en ny Ethernet-tilkoblingsprofil med navnet static2
, som vil bli tilordnet en enhet enp0s3
, med statisk IP 192.168.1.50, subnett maske 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
Sjekk konfigurasjonen:
cat ifcfg-static2
Endre DNS-servere i Linux
La oss endre den siste tilkoblingsprofilen og legge til to dns-servere.
nmcli con mod static2 ipv4.dns “8.8.8.8 8.8.4.4”
Tips: Det er noe her du må være oppmerksom på: egenskapene for IP-adresse og gateway har forskjellige navn når du legger til og når du endrer en tilkobling. Når du legger til tilkoblinger bruker du “ip4 ”
og “gw4 ”
, mens når du endrer dem bruker du “ipv4 ”
og “ gwv4 ”
.
Få opp Ethernet-tilkobling i Linux
La oss nå ta opp denne tilkoblingsprofilen:
nmcli con down static1 ; nmcli con up static2
Som du kan se, har enheten enp0s3
nå en IP-adresse på 192.168.1.50.
ip a
Tips: Det er mange egenskaper du kan endre. Hvis du ikke husker dem utenat, kan du hjelpe deg selv ved å skrive “nmcli con show ”
og etter det tilkoblingsnavnet:
nmcli con show static2
Du kan endre alle disse egenskapene skrevet med små bokstaver.
For eksempel: når du fjerner en tilkoblingsprofil, søker NetworkManager etter en annen tilkoblingsprofil og henter den opp automatisk. (Jeg lar det være en øvelse for å sjekke det). Hvis du ikke vil at tilkoblingsprofilen din skal kobles til automatisk:
nmcli con mod static2 connection.autoconnect no
Den siste øvelsen er veldig nyttig: du har laget en tilkoblingsprofil, men du vil at den skal brukes av spesifikke brukere. Det er bra å klassifisere brukerne dine!
Sett Ethernet-tilkoblingstillatelser til bruker i Linux
Vi lar bare bruker stella bruke denne profilen:
nmcli con mod static2 connection.permissions stella
Tips: Hvis du vil gi tillatelser til mer enn én bruker, må du skrive inn bruker:bruker1,bruker2
uten mellomrom mellom dem:
nmcli con mod static2 connection.permissions user:stella,john
Hvis du logger på som en annen bruker, kan du ikke få “opp” denne tilkoblingsprofilen:
nmcli con show
nmcli con up static2
ls /etc/sysconfig/network-scripts
En feilmelding sier at tilkobling 'static2' ikke eksisterer, selv om vi ser at den eksisterer. Det er fordi en nåværende bruker ikke har tillatelse til å ta opp denne tilkoblingen.
Konklusjon: ikke nøl med å bruke nmcli. Det er enkelt og nyttig.