Kako konfigurirati IP umrežavanje s 'nmcli' u Linuxu


Kao Linux administrator, imate razne alate koje možete koristiti za konfiguriranje mrežnih veza, kao što je nmtui, vaš NetworkManager sa GNOME grafičkim korisničkim sučeljem i naravno nmcli (alat komandne linije za upravljanje mrežom).

Vidio sam da mnogi administratori koriste nmtui zbog svoje jednostavnosti. Međutim, korištenje nmcli štedi vam vrijeme, povećava vaše samopouzdanje, omogućava integraciju u skripte i primarni je alat za rješavanje problema s umrežavanjem Linux servera, brzo vraćajući njegovu funkcionalnost.

Primijetivši brojne komentare koji traže pomoć sa nmcli, odlučio sam napisati ovaj članak. Naravno, uvijek treba pažljivo čitati man stranice (one su izvor broj 1 za vas). Moj cilj je da vam uštedim vrijeme i dam vam neke korisne savjete.

Sintaksa komande nmcli

Sintaksa nmcli je:

nmcli [OPTIONS] OBJECT {COMMAND | help}

Gdje je OBJECT jedan od općih, umrežavanje, radio, veza, uređaj i agent.

Provjerite status mrežnog uređaja u Linuxu

Dobra početna tačka bi bila da provjerite naše uređaje:

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     --         

Kao što vidimo u prvoj koloni, postoji lista naših mrežnih uređaja. Imamo jednu mrežnu karticu pod nazivom enp0s3. Na vašoj mašini možete vidjeti različita imena.

Imenovanje ovisi o vrsti mrežne kartice (da li je ugrađena, PCI kartica, itd.). U posljednjoj koloni vidimo naše konfiguracijske datoteke koje koriste naši uređaji za povezivanje na mrežu

Lako je shvatiti da naši uređaji sami po sebi ne mogu ništa. Potrebno im je da kreiramo konfiguracionu datoteku kako bismo ih uputili kako da ostvare mrežno povezivanje. Ove datoteke se također nazivaju "profili veze" i nalazimo ih u direktoriju /etc/sysconfig/network-scripts.

cd /etc/sysconfig/network-scripts/
ls
Sample Output
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

Kao što možete vidjeti ovdje, fajlovi čiji nazivi počinju sa 'ifcfg-' (konfiguracija interfejsa) su profili veze. Kada kreiramo novu vezu ili modificiramo postojeću pomoću nmcli ili nmtui, rezultati se ovdje pohranjuju kao profili veze.

Pokazaću vam dva od njih sa moje mašine, jedan sa dhcp konfiguracijom i jedan sa statičkim IP-om.

cat ifcfg-static1
cat ifcfg-Myoffice1

Shvaćamo da neka svojstva imaju različite vrijednosti, a neka druga ne postoje ako nisu neophodna.

Pogledajmo na brzinu najvažnije.

  • TYPE – ovdje imamo tip Ethernet. Mogli bismo imati i WiFi, tim, vezu i druge.
  • DEVICE – naziv mrežnog uređaja povezanog sa ovim profilom.
  • BOOTPROTO – ako ima vrijednost “dhcp ”, tada naš profil veze dobija dinamičku IP adresu od DHCP servera. Ako ima vrijednost “none ”, onda ne koristi dinamičku IP adresu i vjerovatno ćemo dodijeliti statičku IP adresu.
  • IPADDR – je statička IP adresa koju dodjeljujemo našem profilu.
  • PREFIX – maska podmreže. Vrijednost 24 znači 255.255.255.0. Možete bolje razumjeti masku podmreže ako zapišete njen binarni format. Na primjer, vrijednosti 16, 24 i 26 znače da prvih 16, 24<, odnosno 26 bita su postavljeni na 1, a ostali su na 0. Ovo definiše mrežnu adresu i opseg IP adresa koje se mogu dodijeliti.
  • GATEWAY – IP pristupnika.
  • DNS1, DNS2 – dva dns servera koja želimo da koristimo.
  • ONBOOT – ako ima vrijednost “da ” to znači da će pri pokretanju naš računar pročitati ovaj profil i pokušati ga dodijeliti svom uređaju.

Provjerite mrežnu vezu u Linuxu

Sada idemo dalje i provjerimo naše veze:

nmcli con show

Posljednja kolona uređaja pomaže nam da shvatimo koja je veza „UP“ i radi, a koja nije. Na gornjoj slici možete vidjeti dvije aktivne veze: Myoffice1 i enp0s8.

Savjet: Ako želite vidjeti samo aktivne veze, upišite:

nmcli con show -a

Savjet: Možete koristiti automatsko dovršavanje pritiskom na Tab kada koristite nmcli, ali je bolje koristiti minimalni format naredbe.

Dakle, sljedeće komande su jednake:

nmcli connection show
nmcli con show
nmcli c s

Provjerite IP adresu u Linuxu

Ako provjerim ip adrese svojih uređaja:

ip a

Vidim da je moj uređaj enp0s3 uzeo 192.168.1.6 IP sa dhcp servera jer profil veze Myoffice1 koji je gore ima dhcp konfiguraciju.

Ako “gore ” svoj profil veze pod imenom static1 tada će moj uređaj uzeti statički IP 192.168.1.40 kako je definirano u profil veze.

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

Pogledajmo ponovo IP adresu:

ip a

Možemo napraviti naš prvi profil veze. Minimalna svojstva koja moramo definirati su type, ifname, i con-name:

  • type – za tip veze.
  • ifname – za naziv uređaja koji je dodijeljen našoj vezi.
  • con-name – za naziv veze.

Kreiranje nove Ethernet veze u Linuxu

Napravimo novu ethernet vezu s imenom Myhome1, dodijeljenom uređaju enp0s3:

nmcli con add type ethernet con-name Myhome1 ifname enp0s3

Provjerite njegovu konfiguraciju:

cat ifcfg-Myhome1

Kao što vidite ima BOOTPROTO=dhcp, jer nismo dali nikakvu statičku IP adresu.

Savjet: Možemo izmijeniti bilo koju vezu pomoću naredbe “nmcli con mod“. Međutim, ako modificirate dhcp vezu i promijenite je u statičku, ne zaboravite je promijeniti “ipv4.method ” iz “auto ” u ”ručno ” . U suprotnom, na kraju ćete dobiti dvije IP adrese: jednu sa dhcp servera i statičku.

Napravimo novi profil Ethernet veze sa imenom static2, koji će biti dodijeljen uređaju enp0s3, sa statičkom IP-om 192.168.1.50, podmrežom maska 255.255.255.0=24, i pristupnik 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

Provjerite njegovu konfiguraciju:

cat ifcfg-static2

Izmijenite DNS servere u Linuxu

Izmijenimo zadnji profil veze i dodamo dva dns servera.

nmcli con mod static2 ipv4.dns “8.8.8.8 8.8.4.4”

Savjet: Ovdje morate obratiti pažnju na nešto: svojstva za IP adresu i gateway imaju različita imena kada dodajete i kada mijenjate vezu. Kada dodajete veze koristite “ip4 ” i “gw4 ”, dok kada ih modificirate koristite “ipv4 ” i “ gwv4 ”.

Pokrenite Ethernet vezu u Linuxu

Sada otvorimo ovaj profil veze:

nmcli con down static1 ; nmcli con up static2

Kao što možete vidjeti, uređaj enp0s3 sada ima IP adresu 192.168.1.50.

ip a

Savjet: Postoji mnogo svojstava koja možete izmijeniti. Ako ih se ne sjećate napamet, možete si pomoći upisivanjem “nmcli con show ” i nakon toga naziv veze:

nmcli con show static2

Možete izmijeniti sva ova svojstva napisana malim slovima.

Na primjer: kada spustite profil veze, NetworkManager traži drugi profil veze i automatski ga prikazuje. (Ostavljam to kao vježbu za provjeru). Ako ne želite da se vaš profil veze automatski povezuje:

nmcli con mod static2 connection.autoconnect no

Posljednja vježba je vrlo korisna: napravili ste profil veze, ali želite da ga koriste određeni korisnici. Dobro je klasificirati svoje korisnike!

Postavite dozvole za Ethernet vezu na Korisnik u Linuxu

Dozvoljavamo samo korisniku stella da koristi ovaj profil:

nmcli con mod static2 connection.permissions stella

Savjet: Ako želite dati dozvole više od jednog korisnika, morate upisati user:user1,user2 bez razmaka između njih:

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

Ako se prijavite kao drugi korisnik, ne možete “podignuti ” ovaj profil veze:

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

Poruka o grešci kaže da veza ‘static2’ ne postoji, čak i ako vidimo da postoji. To je zato što trenutni korisnik nema dozvolu za pokretanje ove veze.

Zaključak: ne ustručavajte se koristiti nmcli. Lako je i korisno.