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.