Zoeken op website

Hoe IP-netwerken te configureren met 'nmcli' in Linux


Als Linux-beheerder beschikt u over verschillende tools die u kunt gebruiken om uw netwerkverbindingen te configureren, zoals nmtui, uw NetworkManager met GNOME grafische gebruikersinterface, en natuurlijk nmcli (opdrachtregelprogramma voor netwerkbeheer).

Ik heb veel beheerders gezien die nmtui gebruiken vanwege de eenvoud ervan. Het gebruik van nmcli bespaart u echter tijd, vergroot uw zelfvertrouwen, maakt integratie in scripts mogelijk en is het belangrijkste hulpmiddel voor het oplossen van problemen met Linux-servernetwerken, waardoor de functionaliteit ervan snel wordt hersteld.

Nadat ik talloze reacties had opgemerkt die hulp zochten bij nmcli, besloot ik dit artikel te schrijven. Natuurlijk moet u de manpagina's altijd aandachtig lezen (zij zijn de nummer 1 bron voor u). Mijn doel is om u tijd te besparen en u enkele nuttige tips te geven.

nmcli-opdrachtsyntaxis

De syntaxis van nmcli is:

nmcli [OPTIONS] OBJECT {COMMAND | help}

Waarbij OBJECT een van algemeen, netwerken, radio, verbinding, apparaat en agent is.

Controleer de netwerkapparaatstatus in Linux

Een goed startpunt zou zijn om onze apparaten te controleren:

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

Zoals we in de eerste kolom kunnen zien, is er een lijst met onze netwerkapparaten. We hebben één netwerkkaart met de naam enp0s3. Op uw computer ziet u mogelijk verschillende namen.

De naamgeving is afhankelijk van het type netwerkkaart (onboard, een PCI-kaart, enz.). In de laatste kolom zien we onze configuratiebestanden, die door onze apparaten worden gebruikt om verbinding te maken met het netwerk

Het is eenvoudig te begrijpen dat onze apparaten op zichzelf niets kunnen doen. Ze hebben ons nodig om een configuratiebestand te maken om hen te instrueren hoe ze netwerkconnectiviteit kunnen realiseren. Deze bestanden worden ook wel ‘verbindingsprofielen‘ genoemd en we vinden ze in de map /etc/sysconfig/network-scripts.

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

Zoals je hier kunt zien, zijn de bestanden met namen die beginnen met 'ifcfg-' (interfaceconfiguratie) verbindingsprofielen. Wanneer we een nieuwe verbinding maken of een bestaande wijzigen met nmcli of nmtui, worden de resultaten hier opgeslagen als verbindingsprofielen.

Ik zal je er twee laten zien vanaf mijn machine, één met een DHCP-configuratie en één met een statisch IP-adres.

cat ifcfg-static1
cat ifcfg-Myoffice1

We realiseren ons dat sommige eigendommen verschillende waarden hebben, en dat andere niet bestaan als ze niet nodig zijn.

Laten we een korte blik werpen op de belangrijkste.

  • TYPE – we hebben hier het type Ethernet. We zouden ook WiFi, team, bond en anderen kunnen hebben.
  • DEVICE – de naam van het netwerkapparaat dat aan dit profiel is gekoppeld.
  • BOOTPROTO – als het de waarde “dhcp” heeft, verkrijgt ons verbindingsprofiel een dynamisch IP-adres van de DHCP-server. Als het de waarde “none” heeft, gebruikt het geen dynamisch IP-adres en wijzen we waarschijnlijk een statisch IP-adres toe.
  • IPADDR – is het statische IP-adres dat we aan ons profiel toewijzen.
  • PREFIX – het subnetmasker. Een waarde van 24 betekent 255.255.255.0. U kunt het subnetmasker beter begrijpen door het binaire formaat ervan op te schrijven. Waarden van 16, 24 en 26 betekenen bijvoorbeeld dat de eerste 16, 24< of 26 bits zijn respectievelijk ingesteld op 1 en de rest is 0. Dit definieert het netwerkadres en het bereik van IP-adressen die kunnen worden toegewezen.
  • GATEWAY – het gateway-IP.
  • DNS1, DNS2 – twee dns-servers die we willen gebruiken.
  • ONBOOT – als het de waarde “yes” heeft, betekent dit dat onze computer bij het opstarten dit profiel zal lezen en proberen het aan zijn apparaat toe te wijzen.

Controleer de netwerkverbinding in Linux

Laten we nu verder gaan en onze verbindingen controleren:

nmcli con show

De laatste kolom met apparaten helpt ons te begrijpen welke verbinding 'UP' is en actief is en welke niet. In de bovenstaande afbeelding zie je de twee actieve verbindingen: Myoffice1 en enp0s8.

Hint: als je alleen de actieve verbindingen wilt zien, typ dan:

nmcli con show -a

Hint: je kunt de automatische aanvulling op Tab gebruiken als je nmcli gebruikt, maar het is beter om te gebruiken minimaal formaat van de opdracht.

De volgende opdrachten zijn dus gelijk:

nmcli connection show
nmcli con show
nmcli c s

Controleer het IP-adres in Linux

Als ik de IP-adressen van mijn apparaten controleer:

ip a

Ik zie dat mijn apparaat enp0s3 het 192.168.1.6 IP-adres van de DHCP-server heeft overgenomen, omdat het verbindingsprofiel Myoffice1 dat actief is een DHCP-configuratie heeft.

Als ik “up” mijn verbindingsprofiel met de naam static1 open, zal mijn apparaat het statische IP-adres 192.168.1.40 gebruiken zoals gedefinieerd in de verbindingsprofiel.

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

Laten we het IP-adres nog eens bekijken:

ip a

We kunnen ons eerste verbindingsprofiel maken. De minimale eigenschappen die we moeten definiëren zijn type, ifname, en con-name:

  • type – voor het type verbinding.
  • ifname – voor de apparaatnaam die aan onze verbinding is toegewezen.
  • con-name – voor de verbindingsnaam.

Een nieuwe Ethernet-verbinding maken in Linux

Laten we een nieuwe ethernetverbinding maken met de naam Mijnhuis1, toegewezen aan een apparaat enp0s3:

nmcli con add type ethernet con-name Myhome1 ifname enp0s3

Controleer de configuratie:

cat ifcfg-Myhome1

Zoals je kunt zien heeft het BOOTPROTO=dhcp, omdat we geen statisch IP-adres hebben opgegeven.

Hint: We kunnen elke verbinding wijzigen met het “nmcli con mod“ commando. Als u echter een DHCP-verbinding wijzigt en deze wijzigt naar statisch, vergeet dan niet om deze “ipv4.method ” te wijzigen van “auto ” naar “manual ” . Anders krijg je twee IP-adressen: één van de DHCP-server en de statische.

Laten we een nieuw Ethernet-verbindingsprofiel maken met de naam static2, dat wordt toegewezen aan een apparaat enp0s3, met statisch IP 192.168.1.50, subnet masker 255.255.255.0=24, en 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

Controleer de configuratie:

cat ifcfg-static2

Wijzig DNS-servers in Linux

Laten we het laatste verbindingsprofiel wijzigen en twee DNS-servers toevoegen.

nmcli con mod static2 ipv4.dns “8.8.8.8 8.8.4.4”

Tip: Er is iets waar u op moet letten: de eigenschappen voor IP-adres en gateway hebben verschillende namen wanneer u een verbinding toevoegt en wanneer u deze wijzigt. Wanneer u verbindingen toevoegt, gebruikt u “ip4 ” en “gw4 ”, terwijl u bij het wijzigen “ipv4 ” en “ gebruikt gwv4 ”.

Breng Ethernet-verbinding ter sprake in Linux

Laten we nu dit verbindingsprofiel naar voren brengen:

nmcli con down static1 ; nmcli con up static2

Zoals u kunt zien, heeft het apparaat enp0s3 nu het IP-adres 192.168.1.50.

ip a

Tip: er zijn veel eigenschappen die u kunt wijzigen. Als u ze niet meer uit uw hoofd kent, kunt u uzelf helpen door “nmcli con show” in te typen en daarna de verbindingsnaam:

nmcli con show static2

U kunt al deze eigenschappen, geschreven in kleine letters, wijzigen.

Bijvoorbeeld: wanneer u een verbindingsprofiel naar beneden haalt, zoekt de Netwerkmanager naar een ander verbindingsprofiel en brengt dit automatisch naar voren. (Ik laat het als een oefening om het te controleren). Als u niet wilt dat uw verbindingsprofiel automatisch verbinding maakt:

nmcli con mod static2 connection.autoconnect no

De laatste oefening is erg handig: je hebt een verbindingsprofiel gemaakt, maar je wilt dat dit door specifieke gebruikers wordt gebruikt. Het is goed om uw gebruikers te classificeren!

Stel Ethernet-verbindingsrechten in op Gebruiker in Linux

We laten alleen gebruiker stella dit profiel gebruiken:

nmcli con mod static2 connection.permissions stella

Hint: als je rechten wilt geven aan meer dan één gebruiker, moet je user:user1,user2 typen zonder spaties ertussen:

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

Als u inlogt als een andere gebruiker, kunt u dit verbindingsprofiel niet “up” plaatsen:

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

Een foutmelding geeft aan dat de verbinding 'static2' niet bestaat, ook al zien we dat deze wel bestaat. Dat komt omdat een huidige gebruiker geen toestemming heeft om deze verbinding tot stand te brengen.

Conclusie: aarzel niet om nmcli te gebruiken. Het is gemakkelijk en nuttig.