Ci sono molti casi in cui potremmo voler impostare un IP statico per un'interfaccia di rete. In RHEL 8 / CentOS 8, le connessioni di rete sono gestite dal demone NetworkManager, quindi in questo tutorial vediamo come possiamo eseguire tale attività modificando direttamente un file di interfaccia, utilizzando un'utilità della riga di comando, nmcli
o tramite un'interfaccia utente di testo, nmtui
.
In questo tutorial imparerai:
- Come impostare un indirizzo IP statico modificando direttamente un file di interfaccia
- Come impostare un indirizzo IP statico utilizzando l'utilità nmcli
- Come impostare un indirizzo IP statico utilizzando nmtui

Il file dell'interfaccia di rete modificato
Requisiti e convenzioni software utilizzati
Categoria | Requisiti, convenzioni o versione del software utilizzata |
---|---|
Sistema | RHEL 8 / CentOS 8 |
Software | Tutto il software menzionato in questo tutorial è incluso in un'installazione minima di RHEL 8 o CentOS 8. |
Altro | Autorizzazione a eseguire il comando con privilegi di root. |
Convenzioni | # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato |
Introduzione
In Red Hat Enterprise Linux 8, le interfacce di rete sono gestite da NetworkManager
demone, quindi per modificare le impostazioni di un'interfaccia di rete dobbiamo in qualche modo interagire con esso. In questo tutorial vedremo come impostare un indirizzo IP statico, un gateway e un server DNS per una scheda di rete utilizzando tre diversi metodi.
Identificare la nostra interfaccia
La prima cosa che vogliamo fare è trovare l'interfaccia che vogliamo modificare. Per elencare tutte le interfacce del nostro sistema, possiamo usare ip addr
comando:
$ ip addr 1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp1s0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.168.122.189/24 brd 192.168.122.255 scope global dynamic noprefixroute enp1s0 valid_lft 3004sec preferred_lft 3004sec inet6 fe80::9ab6:ba48:1ddd:a8e1/64 scope link noprefixroute valid_lft forever preferred_lft forever </broadcast,multicast,up,lower_up></loopback,up,lower_up>
Nell'output sopra, che è il risultato dell'esecuzione del comando sulla mia macchina virtualizzata rhel8, possiamo vedere due interfacce:lo
e enp1s0
. La prima è un'interfaccia “virtuale”, che viene utilizzata dal sistema per “parlare” con se stesso. Il secondo è quello che ci interessa, e attualmente il suo indirizzo IPv4 è 192.168.122.189:vogliamo cambiarlo.
Metodo 1:modifica manuale del file di configurazione dell'interfaccia
Per ogni interfaccia di rete gestita dal demone NetworkManager, viene creato un file di configurazione all'interno di /etc/sysconfig/network-scripts
directory. Il nome del file è composto da ifcfg-
prefisso più il nome dell'interfaccia. Se esaminiamo il file relativo alla nostra NIC, possiamo vedere la sua configurazione effettiva:
$ cat /etc/sysconfig/network-scrIPts/ifcfg-enp1s0 TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="dhcp" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="enp1s0" UUID="d5f41bf4-de0a-43b3-b633-7e2ec6212e58" DEVICE="enp1s0" ONBOOT="yes"
Il BOOTPROTO
l'opzione è impostata su dhcp
:l'opzione imposta il protocollo da utilizzare all'avvio per impostare l'indirizzo IP dell'interfaccia. Le possibili opzioni da utilizzare sono:
- none:non utilizzare alcun protocollo
- bootp – Usa il protocollo bootp
- dhcp – Usa il protocollo DHCP
Poiché vogliamo impostare un indirizzo IPv4 statico, vogliamo cambiare il valore di BOOTPROTO in none
e configurare staticamente il nostro IP, il prefisso di percorso, il gateway e il server DNS. Possiamo farlo usando rispettivamente IPADDR
, PREFIX
, GATEWAY
e DNS
opzioni. Poiché è possibile specificare molti server DNS, il DNS
l'opzione deve essere riportata insieme ad un numero progressivo, a partire da 1. Dopo le modifiche necessarie, il nostro file dovrebbe apparire come
questo:
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="enp1s0" UUID="d5f41bf4-de0a-43b3-b633-7e2ec6212e58" DEVICE="enp1s0" ONBOOT="yes" IPADDR=192.168.122.66 PREFIX=24 GATEWAY=192.168.122.1 DNS1=192.168.122.1
Impostiamo il nostro IP statico su 192.168.122.66
e imposta sia il nostro gateway che il nostro server DNS su 192.168.122.1
. Ora, per rendere effettive le nostre modifiche, dobbiamo disattivare e riattivare l'interfaccia di rete. Tieni presente che ciò interromperà le connessioni ssh esistenti tramite detta interfaccia:
$ sudo nmcli connection down enp1s0 && sudo nmcli connection up enp1s0
Eseguendo ip addr
comando di nuovo possiamo verificare che l'IP sia cambiato:
IP addr|grep enp1s0|grep inet inet 192.168.122.66/24 brd 192.168.122.255 scope global noprefix
Metodo 2:utilizzo di nmcli
Nmcli
è uno strumento da riga di comando utilizzato per controllare NetworkManager. Usandolo possiamo, tra l'altro, modificare le impostazioni di rete per un'interfaccia specifica. Nel nostro caso dobbiamo usare nmcli con la connection
sottocomando con il modify
o il modify
azione. Il primo ci consente di modificare direttamente le impostazioni, mentre il secondo lancia la shell nmcli, dove possiamo operare in modo interattivo.
Utilizzare direttamente nmcli
Per modificare l'indirizzo IP dell'interfaccia "enp1s0" con un comando nmcli diretto, eseguiamo:
$ sudo nmcli connection modify enp1s0 IPv4.address 192.168.122.66/24
Si noti che abbiamo specificato il prefisso di routing insieme all'IP utilizzando il cosiddetto CIDR
notazione (Classes Inter-Domain Routing). Usiamo una sintassi simile per cambiare il gateway e le impostazioni del dns:
$ sudo nmcli connection modify enp1s0 IPv4.gateway 192.168.122.1 $ sudo nmcli connection modify enp1s0 IPv4.dns 192.168.122.1
Infine, impostiamo il metodo su manual
per evitare di utilizzare qualsiasi altro protocollo di avvio per l'interfaccia. Questo comando imposta l'opzione BOOTPROTO su none nel file di configurazione dell'interfaccia:
$ sudo nmcli connection modify enp1s0 IPv4.method manual
Utilizzo della shell nmcli
Come accennato in precedenza, possiamo anche utilizzare un metodo interattivo per eseguire le stesse modifiche. Per accedere alla nmcli shell
usiamo il modify
azione, seguito dal nome dell'interfaccia che vogliamo modificare:
$ sudo nmcli connection edit enp1s0 ===| nmcli interactive connection editor |=== Editing existing '802-3-ethernet' connection: 'enp1s0' Type 'help' or '?' for available commands. Type 'print' to show all the connection properties. Type 'describe [.]' for detailed property descrIPtion. You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, IPv4, IPv6, tc, proxy nmcli>
Il cursore lampeggiante ci dice che la shell sta accettando comandi:possiamo digitare help
per ottenere un elenco di quelli disponibili, print
per vedere tutte le proprietà della connessione o describe
seguito da un'impostazione e da una delle sue proprietà (rappresentate con una notazione a punti), per ottenere una descrizione di quest'ultima. Ad esempio:
nmcli> nmcli> describe IPv4.address === [addresses] === [NM property descrIPtion] Array of IP addresses. [nmcli specific descrIPtion] Enter a list of IPv4 addresses formatted as: IP[/prefix], IP[/prefix],... Missing prefix is regarded as prefix of 32. Example: 192.168.1.5/24, 10.0.0.11/24
Per modificare l'indirizzo della nostra interfaccia:
nmcli> set IPv4.address 192.168.122.66/24
Lo stesso principio viene utilizzato per modificare le altre proprietà:
nmcli> set IPv4.gateway 192.168.122.1 nmcli> set IPv4.dns 192.168.122.1 nmcli> set IPv4.method manual
Per salvare le modifiche apportate, dobbiamo dare un ultimo comando:
nmcli> save Connection 'enp1s0' (d5f41bf4-de0a-43b3-b633-7e2ec6212e58) successfully updated.
Per uscire dalla shell nmcli digita semplicemente quit
e premi invio:
nmcli> quit
Anche in questo caso, per rendere effettive le modifiche, dovremmo ricaricare l'interfaccia con lo stesso comando che abbiamo usato prima.
Metodo 3:utilizzo di nmtui
Oltre a modificare i parametri di un'interfaccia di rete modificandone il file manualmente o utilizzando l'utilità nmcli, possiamo anche controllare NetworkManager utilizzando un'interfaccia utente di testo. Per lanciarlo invochiamo semplicemente nmtui
nel nostro terminale:
$ sudo nmtui

L'interfaccia utente di testo nmtui
Selezioniamo Edit a connection
e poi il nome dell'interfaccia che vogliamo manipolare; si procede quindi alla modifica dei valori desiderati. Ad esempio:

Modifica delle impostazioni di connessione con nmtui
Dopo che siamo soddisfatti, selezioniamo OK
e premiamo invio:torneremo al menu di selezione dell'interfaccia. Questa volta selezioniamo back
, quindi scegli quit
uscire. Per applicare le impostazioni dobbiamo ricaricare la connessione dell'interfaccia:
$ sudo nmcli connection down enp1s0 && sudo nmcli connection up enp1s0
Conclusioni
In questo tutorial abbiamo visto tre metodi che possiamo usare per impostare un indirizzo IP statico su Red Hat Enterprise Linux 8. Vediamo quali opzioni dovremmo cambiare e cosa dovremmo aggiungere nel file di configurazione dell'interfaccia quando lo modifichiamo manualmente, e come eseguire il stesse modifiche usando nmcli e nmtui, che sono rispettivamente un'utilità da riga di comando e un'interfaccia utente di testo:entrambe sono usate per controllare il demone NetworkManager.