W starszych wersjach RHEL karty sieciowe nazywane były automatycznie przez system eth (ethernet), em (embedded), wlan (wireless lan) i numeracja zaczynała się od 0 i zwiększana była o 1 wraz z wykrywaniem przez system nowych interfejsów w czasie startu systemu. Jeżeli w serwerze było zainstalowanych kilka kart to istniało prawdopodobieństwo zmiany numeru karty co mogło skutkować problemami. Począwszy od RHEL 7.0 domyślny schemat nazewnictwa interfejsów sieciowych oparty jest o wiele reguł określanych przez systemd i udev, które to przypisują kartom numery na podstawie informacji z BIOSu, topologii i położenia karty.
Zasady wg, których nazywane są karty sieciowe:
- zintegrowane z płytą główną przypisywane mają nazwy np. eno1
- podłączone do magistrali PCI Express przypisywane mają nazwy np. ens2
- podłączone do magistrali PCI przypisywane mają nazwy np. enp3s0
- jeżeli powyższa zasady są wyłączone lub informacje dostarczane przez firmware/BIOS są nieprawidłowe system przydziela karcie standardową nazwę: ethX.
Pliki z konfiguracją sieci – /etc/sysconfig/network-scripts.
Każda karta sieciowa ma w katalogu /etc/sysconfig/network-scripts
swój plik konfiguracyjny, który zawiera konfigurację IP i inne parametry. Ustawienia z tego pliku są przypisywane karcie w momencie jej aktywacji.
Przykład pliku /etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE="eth0"
ONBOOT=yes
NETBOOT=yes
UUID="0764d665-dd86-4001-bdc5-3b280d32a11d"
IPV6INIT=yes
BOOTPROTO=none
TYPE=Ethernet
NAME="eth0"
HWADDR=52:54:00:17:91:8D
IPADDR0=192.168.0.110
PREFIX0=24
GATEWAY0=192.168.0.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
Dyrektywa | Opis |
BOOTPROTO |
Sposób uzyskania konfiguracji IP: dhcp – z serwera dhcp, bootp – bootowanie przez sieć, none lub static – statyczna konfiguracja IP. |
BRIDGE |
Nazwa bridga, który ma zostać użyty. |
BROADCAST0 |
Adres rozgłoszeniowy dla pierwszego adresu IP na konfigurowanym interfejsie. |
DEFROUTE |
Czy interfejs ma być użyty jako trasa domyślna. |
DEVICE |
Nazwa konfigurowanego interfejsu. |
DNS1 |
Jeżeli dyrektywa PEERDNS ustawiona jest na yes to można tutaj ustawić adres serwera DNS, który będzie wpisany do pliku /etc/resolv.conf . |
GATEWAY0 |
Adres bramy dla pierwszego adresu IP na tym interfejsie. |
HWADDR |
Adres sprzętowy (MAC) dla interfejsu. |
IPADDR0 |
Adres IP dla interfejsu. |
IPV6INIT |
Czy włączyć obsługę IPv6 na tym interfejsie. |
NAME |
Opis interfejsu. |
NETMASK0 |
Maska podsieci. |
NM_CONTROLLED |
Czy NetworkManager może modyfikować ten plik konfiguracyjny. |
ONBOOT |
Czy interfejs ma być aktywowany w trakcie uruchamiania systemu. |
PEERDNS |
Jeżeli BOOTPROTO=dhcp to czy można modyfikować plik /etc/resolv.conf . Domyślnie yes. |
USERCTL |
Czy zwykli użytkownicy mogą aktywować ten interfejs. |
UUID |
UUID powiązany z tym interfejsem. |
TYPE |
Typ interfejsu. |
Zarządzanie interfejsami sieciowymi.
Domyślnym narzędziem do zarządzania interfejsami sieciowymi w RHEL 7.0 jest NetworkManager. Demon ten dba aby skonfigurowane interfejsy były podniesione i aktywne. Posiada takie programy klienckie jak nmcli i nmtui. Pozostałe narzędzia do administrowania interfejsami sieciowymi przedstawia tabela poniżej.
Komenda | Opis |
ifconfig |
Stara komenda do zarządzania interfejsami sieciowymi. |
ifup / ifdown |
Aktywuje / deaktywuje interfejs. |
ip |
Komenda do zarządzania interfejsami i routingiem. Zastępuje przestarzałe ifconfig. |
nm-connection-editor |
Graficzne narzędzie do zarządzania interfejsami. |
Network Settings |
Graficzne narzędzie do obserwowania statusu połączenia i zarządzania interfejsami. |
Narzędzia NetworkManager | |
nmcli |
Komenda do zarządzania interfejsami. |
nmtiu |
Komenda tekstowa do zarządzania interfejsami |
Narzędzia nmcli operuje na pięciu obiektach: connection, device, general, networking, radio. Używane wraz z komendą nmcli nazwy obiektów mogą być skracane, np. obiekt connection może być skrócony do ‘c‘, a obiekt device do ‘d‘. Tabela poniżej przedstawia opcje dwóch najważniejszych dla nas obiektów.
Obiekt | Opis |
connection – aktywuje, deaktywuje i administruje połączeniami sieciowymi. | |
show |
Listuje profile połączenia. |
up / down |
Aktywuje / deaktywuje połączenie. |
add |
Dodaje połączenie. |
edit |
Edytuje istniejące połączenie lub dodaje nowe. |
modify |
Modyfikuje jedno lub więcej właściwości w profilu połączenia. |
delete |
Kasuje połączenie. |
reload |
Czyta ponownie pliki konfiguracyjne wszystkich interfejsów. |
load |
Czyta ponownie plik konfiguracyjny konkretnego interfejsu. |
device – wyświetla informacje i administruje interfejsem sieciowym | |
status |
Wyświetla status urządzenia. |
show |
Wyświetla dokładne informacje o wszystkich lub o wybranych interfejsach. |
Ćwiczenie 1. Ręczna konfiguracja i aktywacja interfejsu sieciowego.
Szukamy nowego interfejsu sieciowego, który nie ma przypisanego adresu IP:
# ip addr
…… . .
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:39:16:9a brd ff:ff:ff:ff:ff:ff
The output indicates the presence ofa new interface by the name eth1.
Karcie sieciowej eth1 przypisujemy addres IP 192.168.0.111/24:
# ip addr add 192.168.0.111/24 broadcast 192.168.0.255 dev eth1
Sprawdzamy czy adres IP został przypisany:
# ip addr
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:39:16:9a brd ff:ff:ff:ff:ff:ff
inet 192.168.0.111/24 brd 192.168.0.255 scope global eth1
valid_lft forever preferred_lft forever
At this point, ifyou reboot server1, this IP information will be lost. You need to configure the
settings in a file for persistence.
Kopiujemy plik ifcfg-eth0
jako plik ifcfg-eth1
w katalogu /etc/sysconfig/network-scripts
:
# cd /etc/sysconfig/network-scripts
# cp ifcfg-eth0 ifcfg-eth1
Otwieramy i edytujemy plik ifcfg-eth1
:
# vi ifcfg-eth1
DEVICE="eth1"
ONBOOT=yes
NETBOOT=yes
IPV6INIT=yes
BOOTPROTO=none
TYPE=Ethernet
NAME="eth1"
IPADDR0=192.168.0.111
PREFIX0=24
GATEWAY0=192.168.0.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
HWADDR=52:54:00:39:16:9A
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
Deaktywujemy i aktywujemy interfejs:
# ifdown eth1
# ifup eth1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
Restartujemy system:
# reboot
Weryfikujemy konfigurację:
# ip addr
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:39:16:9a brd ff:ff:ff:ff:ff:ff
inet 192.168.0.111/24 brd 192.168.0.255 scope global eth1
valid_lft forever preferred_lft forever
Do pliku /etc/host dodajemy nazwę domenową naszego nowo skonfigurowanego hosta:
# vi /etc/hosts
192.168.0.111 server1ipv4.example.com server1ipv4
Ćwiczenie 2. Konfiguracja i aktywacja karty sieciowej przy pomocy NetworkManagera.
Sprawdzamy status NetworkManagera:
# systemctl status NetworkManager
NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled)
Active: active (running) since Mon 2014-11-17 11:00:52 EST; 28min ago
…… . .
Szukamy nowego interfejsu bez adresu IP:
# ip addr
…… . .
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:96:13:58 brd ff:ff:ff:ff:ff:ff
The output indicates the presence ofa new interface by the name eth1.
Listujemy wszystkie skonfigurowane interfejsy na serwerze:
# nmcli con show
Sprawdzamy status wszystkich dostępnych interfejsów na serwerze:
# nmcli dev show
Konfigurujemy kartę eth1, addres IP 192.168.0.121/24, brama 192.168.0.1:
# nmcli con add type Ethernet ifname eth1 con-name eth1 ip4 192.168.0.121/24 \ gw4
192.168.0.1
Connection 'eth1' (7f365451-fd33-44f0-bffb-45de70d06fe0) successfully added.
The nmcli command has added the new interface and has activated it. In addition, it has created
the ifcfg-eth1 file in the /etc/sysconfig/network-scripts directory with all necessary directives.
Sprawdzamy nowe połączenie i konfigurację IP:
# ip addr
…… . .
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:96:13:58 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.121/24 brd 192.168.0.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe96:1358/64 scope link
valid_lft forever preferred_lft forever
Sprawdzamy zawartość pliku ifcfg-eth1:
# cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=none
IPADDR0=192.168.0.121
PREFIX0=24
GATEWAY0=192.168.0.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth1
UUID=7f365451-fd33-44f0-bffb-45de70d06fe0
DEVICE=eth1
ONBOOT=yes
Informacje o połączeniu dla karty eth1:
# nmcli con show | grep eth1
eth1 7f365451-fd33-44f0-bffb-45de70d06fe0 802-3-ethernet eth1
Wyświetlamy status połączenia eth1:
# nmcli dev status | grep eth1
eth1 ethernet connected eth1
Deaktywujemy i ponownie aktywujemy eth1:
# nmcli con down id eth1
# nmcli con up id eth1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
restartujemy system
# reboot
Spradzamy po restarcie konfigurację IP:
# ip addr
…… . .
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:96:13:58 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.121/24 brd 192.168.0.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe96:1358/64 scope link
valid_lft forever preferred_lft forever
Edytujemy plik /etc/hosts
# vi /etc/hosts
192.168.0.121 server2-eth1.example.com server2-eth1