Nota: questo è un obiettivo d’esame RHCSA 7.
Presentazione
Sebbene sia ancora possibile definire la configurazione di rete attraverso i file nella directory /etc/sysconfig/network-scripts, non è più il modo preferito (non dimenticare di eseguire #nmcli con reload se modifichi manualmente i file! ).
Con RHEL 7, tutta la configurazione di rete viene ora eseguita principalmente tramite NetworkManager (il log delle modifiche di NetworkManager è disponibile qui).
Puoi usare:
* il comando nmtui (Text User Interface),
* il comando nmcli (Command Line Interface),
* o l’interfaccia grafica.
Per il resto di questo tutorial, è l’opzione nmcli che è stata scelta perché è il metodo più veloce e probabilmente meno incline agli errori.
Le modifiche apportate tramite il comando nmcli sono permanenti.
Attenzione: per praticare questo tutorial nelle migliori condizioni, connettersi alla macchina tramite la sua console (altrimenti si potrebbe perdere la connessione!).
Configurazione di rete
Per visualizzare la configurazione di rete, digitare:
# nmcli con show NAME UUID TYPE DEVICE ethernet-eth0 8d83684f-cd22-42cc-9fff-7704945a5c36 802-3-ethernet eth0
Nota: con è una scorciatoia per la connessione (puoi persino digitare solo c).
In alternativa, puoi digitare:
# nmcli dev status DEVICE TYPE STATE CONNECTION eth0 ethernet connected ethernet-eth0 lo loopback unmanaged --
Per rimuovere una connessione (qui ethernet-eth0), digitare:
# nmcli con del ethernet-eth0
Nota 1: se uno spazio appare nel nome dell’interfaccia (come System eth0), metti tutto tra virgolette: nmcli con del “System eth0”.
Nota 2: del è una abbreviazione di delete.
o
# nmcli con del 8d83684f-cd22-42cc-9fff-7704945a5c36
Gestione della connessione
Per creare una connessione con il nome ethernet-eth0, l’indirizzo IPv4 192.168.1.10/24 e il gateway predefinito 192.168.1.1, digitare:
# nmcli con add con-name net-eth0 ifname eth0 type ethernet ip4 192.168.1.10/24 gw4 192.168.1.1 Connection 'net-eth0' (441085a4-4155-417b-ad8f-78a888d89988) successfully added.
Nota 1: se non si specifica con-name net-eth0, la connessione viene chiamata ethernet-eth0.
Nota 2: Se non si specifica la parte ip4 192.168.1.10/24 gw4 192.168.1.1, si finisce con una connessione configurata automaticamente tramite DHCP.
Nota3: nmcli con up net-eth0 non è necessario quando si configura inizialmente una connessione.
Nota4: ip4 e gw4 sono utilizzati rispettivamente per l’indirizzo IP e il gateway predefinito. Di seguito, vedrete che la sintassi quando si modifica una connessione è diversa: è quindi utilizzando ipv4.addresses c’e uno spazio tra l’indirizzo IP e il gateway predefinito.
Per verificare la configurazione, digitare:
# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::0000:00:0000:0000/64 scope link valid_lft forever preferred_lft forever # ip r default via 192.168.1.1 dev eth0 proto static metric 1024 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10
Nota 1: ip a è una scorciatoia di ip address show, ip r una scorciatoia di ip route show.
Nota 2: non si utilizza più il comando ifconfig. Questo comando è deprecato e non mostra più la configurazione di rete corretta (indirizzi IP secondari, ecc.).
Per ottenere tutte le informazioni su una connessione (qui net-eth0), digitare:
# nmcli con show net-eth0 connection.id: net-eth0 connection.uuid: 441085a4-4155-417b-ad8f-78a888d89988 connection.interface-name: eth0 connection.type: 802-3-ethernet connection.autoconnect: yes connection.timestamp: 1427832564 connection.read-only: no connection.permissions: connection.zone: -- connection.master: -- connection.slave-type: -- connection.secondaries: connection.gateway-ping-timeout: 0 802-3-ethernet.port: -- 802-3-ethernet.speed: 0 802-3-ethernet.duplex: -- 802-3-ethernet.auto-negotiate: yes 802-3-ethernet.mac-address: -- 802-3-ethernet.cloned-mac-address: -- 802-3-ethernet.mac-address-blacklist: 802-3-ethernet.mtu: auto 802-3-ethernet.s390-subchannels: 802-3-ethernet.s390-nettype: -- 802-3-ethernet.s390-options: ipv4.method: manual ipv4.dns: ipv4.dns-search: ipv4.addresses: { ip = 192.168.1.10/24, gw = 192.168.1.1 } ipv4.routes: ipv4.ignore-auto-routes: no ipv4.ignore-auto-dns: no ipv4.dhcp-client-id: -- ipv4.dhcp-send-hostname: yes ipv4.dhcp-hostname: -- ipv4.never-default: no ipv4.may-fail: yes ipv6.method: auto ipv6.dns: ipv6.dns-search: ipv6.addresses: ipv6.routes: ipv6.ignore-auto-routes: no ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.ip6-privacy: -1 (unknown) ipv6.dhcp-hostname: -- GENERAL.NAME: net-eth0 GENERAL.UUID: 441085a4-4155-417b-ad8f-78a888d89988 GENERAL.DEVICES: eth0 GENERAL.STATE: activated GENERAL.DEFAULT: yes GENERAL.DEFAULT6: no GENERAL.VPN: no GENERAL.ZONE: -- GENERAL.DBUS-PATH: /org/freedesktop/NetworkManager/ActiveConnection/0 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/Settings/0 GENERAL.SPEC-OBJECT: -- GENERAL.MASTER-PATH: -- IP4.ADDRESS[1]: ip = 192.168.1.10/24, gw = 192.168.1.1 IP6.ADDRESS[1]: ip = fe80::0000:00:0000:0000/64, gw = ::
In alternativa si può utilizzare:
# nmcli dev show eth0 GENERAL.DEVICE: eth0 GENERAL.TYPE: ethernet GENERAL.HWADDR: 00:00:00:00:00:00 GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: net-eth0 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/0 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: 192.168.1.10/24 IP4.GATEWAY: 192.168.4.10 IP4.DNS[1]: 192.168.4.1 IP6.ADDRESS[1]: fe80::0000:00:0000:0000/64 IP6.GATEWAY:
Per stoppare la connessione di rete (qui net-eth0), digitare:
# nmcli con down net-eth0 # nmcli con show NAME UUID TYPE DEVICE net-eth0 441085a4-4155-417b-ad8f-78a888d89988 802-3-ethernet --
Nota1: il segno — indica che la connessione non è più attiva (aggiungere l’opzione –active si visualizzano solo le connessioni attive).
Nota 2: è possibile specificare l’UUID (in questo caso 441085a4-4155-417b-ad8f-78a888d89988) anziché il nome della connessione di rete.
Nota 3: Dopo il riavvio, la connessione si riavvia automaticamente, la proprietà connection.autoconnect viene impostata su yes, equivalente a ONBOOT=yes.
Per avviare una connessione di rete (qui net-eth0), digitare:
# nmcli con up net-eth0 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)
Nota: come in precedenza, è possibile specificare l’UUID (in questo caso 441085a4-4155-417b-ad8f-78a888d89988) anziché il nome della connessione di rete.
Per impedire il riavvio della connessione (qui net-eth0) dopo il riavvio, digitare:
# nmcli con mod net-eth0 connection.autoconnect no
Nota: mod è una scorciatoiadi modify.
Per modificare l’indirizzo IP e il gateway predefinito della connessione net-eth0 rispettivamente a 192.168.2.10/24 e 192.168.2.1, digitare:
In RHEL 7.0:
# nmcli con mod net-eth0 ipv4.addresses "192.168.2.10/24 192.168.2.1" # nmcli con mod net-eth0 ipv4.method manual # nmcli con up net-eth0 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
Da RHEL 7.1 a:
# nmcli con mod net-eth0 ipv4.addresses 192.168.2.10/24 # nmcli con mod net-eth0 ipv4.gateway 192.168.2.1 # nmcli con mod net-eth0 ipv4.method manual # nmcli con up net-eth0 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
Attenzione: il comando nmcli con mod net-eth0 ipv4.addresses “192.168.2.10/24 192.168.2.1” con uno spazio tra l’indirizzo IP e il gateway predefinito, tutto tra virgolette, funzionava in RHEL 7.0 / CentOS 7.0 ma non funziona in RHEL 7.1 / CentOS 7.1 e successive a causa delle modifiche effettuate a NetworkManager (v0.9.9.1 -> v1.0.0).
Nota 1: è possibile utilizzare la sintassi +ipv4.addresses o -ipv4.addresses rispettivamente per aggiungere altri indirizzi IP o rimuovere alcuni precedentemente impostati (quello iniziale incluso).
Nota 2: la sintassi è diversa da quella utilizzata inizialmente per configurare la connessione con ip4 e gw4.
Nota3: secondo la documentazione di nmcli RedHat, la proprietà ipv4.method può avere valori diversi: auto significa che verrà utilizzato un metodo automatico appropriato (DHCP, PPP, ecc.) Per l’interfaccia, link-local si riferisce ad un indirizzo link-local in nell’intervallo 169.254/16 che verrà assegnato all’interfaccia, manual significa che viene utilizzato l’indirizzamento IP statico e deve essere fornito almeno un indirizzo IP nella proprietà degli indirizzi, shared indica che la connessione fornirà l’accesso di rete ad altri computer e l’interfaccia sarà assegnata ad un indirizzo nell’intervallo 10.42.x.1/24 con un server DHCP e di inoltro DNS avviato e l’interfaccia è NAT-ed alla connessione di rete predefinita corrente, disabled significa che IPv4 non verrà utilizzato su questa connessione.
Con la release RHEL 7.3, NetworkManager esegue ora un controllo per rilevare gli indirizzi IPv4 duplicati quando si attiva una nuova connessione. Se l’indirizzo nella LAN è già assegnato, l’attivazione della connessione fallisce. Questa funzione è disabilitata per impostazione predefinita, ma è possibile attivarla tramite la proprietà ipv4.dad-timeout o la variabile ARPING_WAIT nei file ifcfg.
Per assegnare la connessione net-eth0 all’area di lavoro(work), digitare:
# firewall-cmd --permanent --zone=work --change-interface=eth0 success # nmcli con mod net-eth0 connection.zone work # nmcli con up net-eth0 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
Nota 1: invece di usare il comando nmcli con mod, puoi anche modificare il file /etc/sysconfig/network-scripts/ifcfg-eth0 (qui per l’interfaccia di rete eth0), aggiungere ZONE=work e riavviare l’interfaccia di rete con nmcli con up net-eth0.
Nota 2: per ulteriori dettagli sul comando firewall-cmd e sul concetto di zona(zone), consultare la pagina iniziale di Firewalld.
Configurazione del nome host
In RHEL 7 ci sono tre tipi di nomi host: static, pretty, e transient.
“Il nome host static è il nome host tradizionale, che può essere scelto dall’utente, ed è memorizzato nel file /etc/hostname. Il nome host transient (temporaneo) è un nome host dinamico gestito dal kernel. Viene inizializzato sul nome host statico per impostazione predefinita, il cui valore è predefinito su localhost. Può essere modificato da DHCP o mDNS in fase di runtime. L’hostname pretty (simpatico) è un nome host UTF8 in formato libero per la presentazione verso l’utente. “Fonte: RHEL 7 Networking Guide.
Per ottenere i nomi host del server, digitare:
# hostnamectl Static hostname: centos7.example.com Icon name: computer Chassis: n/a Machine ID: 8f56e45764474b668b0db97b4127a01b Boot ID: 2ae7e6c78331414b82aa89a0ffcfa9fa Virtualization: kvm Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-123.el7.x86_64 Architecture: x86_64
In alternativa, è possibile utilizzare il comando hostname per ottenere solo il nome host (questo legge il file /etc/hostname):
# hostname centos7.example.com
Nota: è possibile ottenere lo stesso risultato anche con il comando nmcli gen host.
Per assegnare in modo permanente il nome host rhel7 al server, digitare:
# hostnamectl set-hostname rhel7
Nota 1: Con questa sintassi, tutti e tre i nomi host (static, pretty, e transient) assumono il valore rhel7 allo stesso tempo. Tuttavia, è possibile impostare separatamente i tre nomi host utilizzando le opzioni -pretty, -static e -transient.
Nota 2: Il comando nmcli gen host rhel7 ti darà lo stesso risultato.
Attenzione: con la release RHEL 7.3, NetworkManager ora utilizza il servizio systemd-hostnamed per leggere e scrivere il nome host statico, che è memorizzato nel file /etc/hostname. A causa di questo cambiamento, le modifiche manuali apportate al file /etc/hostname non vengono più rilevate automaticamente da NetworkManager. Gli utenti devono modificare il nome host del sistema tramite l’utilità hostnamectl. Inoltre, l’uso della variabile HOSTNAME nel file /etc/sysconfig/network è ora deprecata.
Risoluzione del nome host
La risoluzione del nome host si basa sul file /etc/nsswitch.conf in cui è possibile trovare la seguente riga per impostazione predefinita:
hosts: files dns
Ciò significa che la risoluzione del nome host viene dapprima effettuata tramite file (risoluzione statica), successivamente tramite dns (risoluzione dinamica).
La risoluzione statica del nome host passa attraverso il file /etc/hosts:
192.168.1.10 centos7.example.com centos7
Nota: scrivi sempre l’indirizzo IP, il nome di dominio completo e opzionalmente alcuni alias in questo ordine, altrimenti alcuni servizi come Kerberos non funzioneranno!
La risoluzione dinamica del nome host si basa sul file /etc/resolv.conf:
# Generated by NetworkManager search example.com nameserver 192.168.1.1
Nota: è possibile configurare fino a 3 server dei nomi. Poiché i nomi dei server vengono chiamati nell’ordine indicato (il secondo viene chiamato se il primo non risponde e così via), inserire sempre il server dei nomi principale per primo nell’elenco.
Per aggiungere un server DNS (qui 8.8.8.8) alla configurazione della connessione (qui net-eth0), digitare:
# nmcli con mod net-eth0 +ipv4.dns 8.8.8.8 # nmcli con up net-eth0 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4) # more /etc/resolv.conf # Generated by NetworkManager search example.com nameserver 192.168.1.1 nameserver 8.8.8.8
Nota 1: utilizzare +ipv4.dns per aggiungere un nuovo server DNS, -ipv4.dns per rimuovere un server DNS e ipv4.dns per sostituire il server DNS corrente.
Nota 2: la modifica si verifica solo dopo il riavvio della connessione.
Nota3: utilizzare l’opzione ipv4.dns-search per modificare il nome del dominio, se necessario. Fai attenzione a impostare il nome di dominio completo completo prima con il comando hostnamectl set-hostname.
Per aggiungere un nome di dominio nell’elenco di ricerca (qui esempio2.com), digitare:
# nmcli con mod net-eth0 +ipv4.dns-search example2.com # nmcli con up net-eth0 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5) # more /etc/resolv.conf # Generated by NetworkManager search example2.com example.com nameserver 192.168.1.1 nameserver 8.8.8.8
Non è possibile rimuovere un server DNS fornito tramite DHCP con il comando precedente (con l’opzione -ipv4.dns per esempio), si otterrà questo messaggio di errore: “Error: failed to remove a value from ipv4.dns: the property doesn’t contain DNS server ‘192.168.1.1’.”.
Se si desidera impostare la propria configurazione DNS in questo contesto, digitare:
# nmcli con mod net-eth0 ipv4.ignore-auto-dns yes
Nota: si ottiene lo stesso risultato specificando PEERDNS=no nei file di configurazione di rete.
Con RHEL 7.3 arriva la proprietà ipv4.dhcp-timeout o l’opzione IPV4_DHCP_TIMEOUT nei file ifcfg. Di conseguenza, NetworkManager attende una risposta dal server DHCP solo per un determinato periodo di tempo.
Risorse addizionali
Oltre agli obiettivi dell’esame, potresti essere interessato ad effettuare un tuning di 10G all’interfaccia di rete.
IBM ha scritto un documento su come disabilitare IPv6 in RHEL 7.