Kaip sukonfigūruoti IP tinklą naudojant „nmcli“ sistemoje „Linux“.


Kaip Linux administratorius, turite įvairių įrankių, kuriuos galite naudoti tinklo ryšiams konfigūruoti, pvz., nmtui, NetworkManager su GNOME grafine vartotojo sąsaja ir, žinoma, >nmcli (tinklo tvarkyklės komandų eilutės įrankis).

Pastebėjau, kad daugelis administratorių naudoja nmtui dėl jo paprastumo. Tačiau naudojant nmcli sutaupote laiko, padidinate pasitikėjimą savimi, leidžiate integruoti į scenarijus ir yra pagrindinis įrankis, padedantis pašalinti „Linux“ serverių tinklo triktis, greitai atkuriantis jo funkcijas.

Pastebėjęs daugybę komentarų, kuriuose ieškoma pagalbos naudojant nmcli, nusprendžiau parašyti šį straipsnį. Žinoma, visada turėtumėte atidžiai perskaityti man puslapius (jie jums yra pagrindinis šaltinis). Mano tikslas yra sutaupyti jūsų laiką ir pateikti keletą naudingų patarimų.

nmcli komandų sintaksė

nmcli sintaksė yra tokia:

nmcli [OPTIONS] OBJECT {COMMAND | help}

Kur OBJEKTAS yra bendrasis, tinklo, radijo, ryšio, įrenginio ir agento.

Patikrinkite tinklo įrenginio būseną sistemoje „Linux“.

Geras atspirties taškas būtų patikrinti mūsų įrenginius:

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

Kaip matome pirmame stulpelyje, yra mūsų tinklo įrenginių sąrašas. Turime vieną tinklo plokštę pavadinimu enp0s3. Įrenginyje galite matyti skirtingus pavadinimus.

Pavadinimas priklauso nuo tinklo plokštės tipo (ar ji įmontuota, ar PCI kortelė ir pan.). Paskutiniame stulpelyje matome mūsų konfigūracijos failus, kuriuos mūsų įrenginiai naudoja prisijungdami prie tinklo

Nesunku suprasti, kad patys mūsų įrenginiai nieko negali padaryti. Jiems reikia, kad sukurtume konfigūracijos failą, kad nurodytume, kaip pasiekti tinklo ryšį. Šie failai taip pat vadinami ryšio profiliais ir juos randame kataloge /etc/sysconfig/network-scripts.

cd /etc/sysconfig/network-scripts/
ls
Pavyzdžio išvestis
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

Kaip matote čia, failai, kurių pavadinimai prasideda 'ifcfg-' (sąsajos konfigūracija), yra ryšio profiliai. Kai sukuriame naują ryšį arba modifikuojame esamą naudodami nmcli arba nmtui, rezultatai išsaugomi čia kaip ryšio profiliai.

Parodysiu du iš jų iš savo kompiuterio, vieną su dhcp konfigūracija, o kitą su statiniu IP.

cat ifcfg-static1
cat ifcfg-Myoffice1

Suprantame, kad kai kurios savybės turi skirtingas vertes, o kai kurios kitos neegzistuoja, jei jos nėra būtinos.

Greitai pažvelkime į svarbiausius.

  • TIPAS – čia yra Ethernet tipas. Taip pat galėtume turėti „WiFi“, komandą, ryšį ir kt.
  • DEVICE – su šiuo profiliu susieto tinklo įrenginio pavadinimas.
  • BOOTPROTO – jei jo reikšmė yra “dhcp ”, mūsų ryšio profilis gauna dinaminį IP iš DHCP serverio. Jei jo reikšmė yra „nėra“, tada jame nenaudojamas dinaminis IP ir greičiausiai priskirsime statinį IP.
  • IPADDR – tai statinis IP, kurį priskiriame savo profiliui.
  • PREFIX – potinklio kaukė. Vertė 24 reiškia 255.255.255.0. Galite geriau suprasti potinklio kaukę užrašę dvejetainį formatą. Pavyzdžiui, reikšmės 16, 24 ir 26 reiškia, kad pirmoji 16, 24< arba 26 bitai yra atitinkamai nustatyti į 1, o kiti yra 0. Tai apibrėžia tinklo adresą ir IP adresų, kuriuos galima priskirti, diapazoną.
  • GATEWAY – šliuzo IP.
  • DNS1, DNS2 – du DNS serveriai, kuriuos norime naudoti.
  • ONBOOT – jei jo reikšmė yra "yes", tai reiškia, kad įkrovos metu mūsų kompiuteris perskaitys šį profilį ir bandys priskirti jį savo įrenginiui.

Patikrinkite tinklo ryšį „Linux“.

Dabar eikime toliau ir patikrinkime savo ryšius:

nmcli con show

Paskutinis įrenginių stulpelis padeda suprasti, kuris ryšys yra „UP“ ir veikia, o kuris ne. Aukščiau pateiktame paveikslėlyje galite matyti du aktyvius ryšius: Myoffice1 ir enp0s8.

Patarimas: jei norite matyti tik aktyvius ryšius, įveskite:

nmcli con show -a

Patarimas: kai naudojate nmcli, galite naudoti automatinį užbaigimą paspaudę Tab, bet geriau naudoti minimalus komandos formatas.

Taigi šios komandos yra lygios:

nmcli connection show
nmcli con show
nmcli c s

Patikrinkite IP adresą Linux

Jei patikrinu savo įrenginių IP adresus:

ip a

Matau, kad mano įrenginys enp0s3 paėmė 192.168.1.6 IP iš dhcp serverio, nes prisijungimo profilyje Myoffice1 yra dhcp konfigūracija.

Jei pateiksiu „up ” savo ryšio profilį pavadinimu static1, mano įrenginys naudos statinį IP 192.168.1.40, kaip apibrėžta ryšio profilis.

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

Dar kartą pažiūrėkime IP adresą:

ip a

Galime sukurti pirmąjį ryšio profilį. Minimalios ypatybės, kurias turime apibrėžti, yra type, ifname, ir con-name:

  • tipas – ryšio tipui.
  • ifname – įrenginio pavadinimui, priskirtam mūsų ryšiui.
  • con-name – ryšio pavadinimui.

Naujo eterneto ryšio sukūrimas sistemoje „Linux“.

Užmegzkime naują eterneto ryšį pavadinimu Myhome1, priskirtu įrenginiui enp0s3:

nmcli con add type ethernet con-name Myhome1 ifname enp0s3

Patikrinkite jo konfigūraciją:

cat ifcfg-Myhome1

Kaip matote, jis turi BOOTPROTO=dhcp, nes nenurodėme jokio statinio IP adreso.

Patarimas: galime keisti bet kokį ryšį naudodami komandą „nmcli con mod“. Tačiau, jei pakeisite dhcp ryšį ir pakeisite jį į statinį, nepamirškite jo pakeisti “ipv4.method ”“auto ” į „manual“ . Priešingu atveju gausite du IP adresus: vieną iš dhcp serverio ir statinį.

Sukurkime naują Ethernet ryšio profilį pavadinimu static2, kuris bus priskirtas įrenginiui enp0s3, kurio statinis IP 192.168.1.50, potinklis kaukė 255.255.255.0=24 ir šliuzas 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

Patikrinkite jo konfigūraciją:

cat ifcfg-static2

Keiskite DNS serverius Linux sistemoje

Pakeiskime paskutinį ryšio profilį ir pridėkime du dns serverius.

nmcli con mod static2 ipv4.dns “8.8.8.8 8.8.4.4”

Patarimas: čia yra kažkas, į ką turite atkreipti dėmesį: IP adreso ir šliuzo ypatybės turi skirtingus pavadinimus, kai pridedate ir kai keičiate ryšį. Kai pridedate ryšius, naudojate „ip4 ” ir „gw4 ”, o kai juos modifikuojate, naudojate „ipv4 ” ir “ gwv4 ”.

Sukurkite Ethernet ryšį Linux sistemoje

Dabar parodykime šį ryšio profilį:

nmcli con down static1 ; nmcli con up static2

Kaip matote, įrenginio enp0s3 IP adresas dabar yra 192.168.1.50.

ip a

Patarimas: yra daug ypatybių, kurias galite keisti. Jei neprisimenate jų mintinai, galite padėti sau įvesdami “nmcli con show ” ir po to ryšio pavadinimą:

nmcli con show static2

Galite keisti visas šias ypatybes, parašytas mažosiomis raidėmis.

Pavyzdys: kai paleidžiate ryšio profilį, NetworkManager ieško kito ryšio profilio ir automatiškai jį iškviečia. (Palieku tai kaip pratimą patikrinti). Jei nenorite, kad jūsų ryšio profilis prisijungtų automatiškai:

nmcli con mod static2 connection.autoconnect no

Paskutinis pratimas yra labai naudingas: sukūrėte ryšio profilį, bet norite, kad jį naudotų konkretūs vartotojai. Verta klasifikuoti savo vartotojus!

Nustatykite Ethernet ryšio leidimus naudotojui sistemoje Linux

Šį profilį leidžiame naudoti tik naudotojui stella:

nmcli con mod static2 connection.permissions stella

Patarimas: jei norite suteikti leidimus daugiau nei vienam naudotojui, turite įvesti user:user1,user2 be tuščių tarpų tarp jų:

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

Jei prisijungiate kaip kitas vartotojas, negalėsite „iškelti“ šio ryšio profilio:

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

Klaidos pranešimas sako, kad ryšys „static2“ neegzistuoja, net jei matome, kad jis yra. Taip yra todėl, kad dabartinis vartotojas neturi leidimo sukurti šio ryšio.

Išvada: nedvejodami naudokite nmcli. Tai lengva ir naudinga.