Last Updated on 04/07/2023 by administrator
Nastavení statické IP adresy v Linuxu
Nastavení statické IP adresy
OS:
Implementace byla prováděna na Ubuntu 22.04 LTS, Ubuntu 20.04 LTS a Ubuntu 18.04 LTS postup není aplikovatelný na Ubuntu 17.04 a níže.
Implementace:
Nejdříve je nutné zjistit jméno síťového rozhraní na kterém se bude nastavovat statická IP adresa:
ip a
Výpis konfigurace ip a:
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 00:27:0e:0e:c6:e5 brd ff:ff:ff:ff:ff:ff inet 192.168.88.185/24 brd 192.168.88.255 scope global dynamic noprefixroute enp1s0 valid_lft 172706sec preferred_lft 172706sec inet6 fe80::b91a:5e9c:6043:5645/64 scope link noprefixroute valid_lft forever preferred_lft forever
Jméno síťového rozhraní je zde označeno jako enp1s0 a s tím se bude dále pracovat. IP adresa 192.168.88.185 je získána z DHCP serveru, což se pozná z valid_lft (Valid Lifetime) a preferred_lft (Preferred Lifetime).
Pozn. Nemusí se vypínat network-manager.
Nastavení statické IPv4 adresy
Níže budou popsány 4 varianty nastavení IP adresy. Pro servery doporučuji použít nejmodernější variantu 4.
Varianta 1:
Byť je tato varianta nejméně časové náročná, nevýhoda je ta, že při rebootu Ubuntu se IP adresa ztratí:
Vyčištění všech IPv6 a IPv4 a rout na rozhraní enp1s0:
ip addr flush dev enp1s0 ip route flush dev enp1s0
Ověření pomocí:
ip a ip route show
Příklad nastavení statické IP adresy pro rozhraní enp1s0:
ip addr add 192.168.88.15/24 dev enp1s0
Příklad nastavení výchozí brány pro rozhraní enp1s0:
ip route add default via 192.168.88.1 dev enp1s0
Příklad nastavení Google DNS serverů (nameserver) a doménového jména (search):
sudo vi /etc/resolv.conf
a zkopírovat do resolv.conf řádky níže:
#primary DNS server nameserver 8.8.8.8 #secondary DNS server nameserver 8.8.4.4 #domain name search martinuvzivot.cz
Po rebootu Ubuntu se nakonfigurace v resolv.conf neztratí, kdežto IP adresa a defaultní brána ztratí.
Varianta 2 – přes nmcli:
Konfigurace přes nmcli (Network Manager Command Line Inteface)
Nainstalovat network manager:
apt install network-manager
Nejdříve se definuje libovolné jméno connection profilu, v tomto případě my-config a ten se namapuje s rozhraním enp1s0:
sudo nmcli con add con-name my-config ifname enp1s0 type ethernet
Příklad nastavení statické IP adresy pod profilem my-config
sudo nmcli con mod my-config ipv4.addresses 192.168.88.15/24
Příklad nastavení výchozí brány pod profilem my-config
sudo nmcli con mod my-config gw4 192.168.88.1
Příklad konfigurace Google DNS serverů pod profilem my-config:
sudo nmcli con mod my-config ipv4.dns "8.8.8.8 8.8.4.4"
Příklad konfigurace doménového jména martinuvzivot.cz pod profilem my-config:
sudo nmcli con mod my-config ipv4.dns-search martinuvzivot.cz
Aktivace connection profilu my-config:
sudo nmcli con up my-config
Poznámky ke konfiguraci nmcli:
1. Po restartu se zachovají nakonfigurované změny.
2. Změny v konfiguraci po aplikaci příkazu sudo nmcli con up my-config lze vidět z výstupu ip -a a v souboru /etc/resolv.conf.
3. Jen jeden connection profile v tomto případě my-config, může být použitý jen pro jedno rozhraní což je v tomto případě enp1s0.
Zobrazení všech connection profilů:
nmcli con show
Řešení problémů je uvedeno níže.
Výpis příkazu nmcli con show může vypadat následovně:
NAME UUID TYPE DEVICE my-config 69ae656d-ee1c-4c6e-95db-fb89ce8b9f8a ethernet enp1s0
Detailní informace o nově nakonfigurovaném connection profilu my-config:
nmcli -p con show my-config
Případné vymazání celého connection profilu my-config se provede příkazem:
sudo nmcli con del con-name my-config
Případné nastavení DHCP na síťovém rozhraní enp1s0 a connection profilu my-config se provede příkazem:
sudo nmcli con add con-name my-config ifname enp1s0 type ethernet ipv4.method auto
Pozn. Před aplikací příkazu výše doporučuji vymazat původní connection profil my-config
Varianta 3 – přes nmtui:
Konfigurace přes nmtui (Network Manager Text User Interface), je náhradou konfigurace přes nmcli.
Nainstalovat network manager:
apt install network-manager
Spustit nmtui:
nmtui
Kliknout na Add a vybrat typ rozhraní, které se bude konfigurovat, v tomto případě to bude Ethernet a kliknout na Create.
Zvolit libovolné jméno Profil name. Jako Device je potřeba zadat jméno ethernetového rozhraní, což se dá zjistit z výpisu ip a. IPv4 Configuration je potřeba přepnout na Manual a to dovolí nakonfigurovat statickou IP adresu na rozhraní včetně ostatní parametrů. Nakonci je nutné potvrdit změny kliknutím na OK.
Nyní lze videt nakonfigurovaný profil my-config. Kliknout na ESC a kliknout na Activate a connection a následně na Activate. Tímto bude rozhraní aktivováno s nakonfigurovanými parametry.
Je možné že se zobrazí chyba při aktivaci rozhraní: Could not activate connection: Connection ‚my-config‘ is not available on device enp0s3 because device is strictly unmanaged, v tomto tento odstavec řeší problém. [3]
Varianta 4 – přes netplan:
Konfigurační soubor Netplanu je ve formátu YAML a je relativně jednoduchý na čtení a zápis.
Instalace netplan:
apt install netplan.io
Vygeneruje konfiguraci pro renderer do adresáře /etc/netplan:
sudo netplan generate
Vytvořit 50-cloud-init.yaml jako nový soubor:
sudo vim /etc/netplan/50-cloud-init.yaml
Pokud soubor již existuje, celý ho přepíšeme z příkladu níže. Trvalo mi to chvíli, než jsem si uvědomil, že je potřeba STRIKTNĚ dodržovat mezery. Je NUTNÉ řádně zachovat mezery, tak jak ukázáno níže v příkladu! Také nezarovnávat pomocí tlačítka TAB! Doporučuji zkopírovat konfiguraci přímo do souboru a následně editovat IP adresy a rozhraní:
Nastavení pro Ubuntu 22.04 LTS:
network: renderer: networkd ethernets: enp0s3: addresses: [192.168.88.15/24] routes: - to: 0.0.0.0/0 via: 192.168.88.1 nameservers: addresses: [8.8.8.8,8.8.4.4] search: [martinuvzivot.cz] dhcp4: no version: 2
Nastavení pro Ubuntu 18.04 LTS a Ubuntu 20.04 LTS:
network: renderer: networkd ethernets: enp1s0: addresses: [192.168.88.15/24] gateway4: 192.168.88.1 nameservers: addresses: [8.8.8.8,8.8.4.4] search: [martinuvzivot.cz] dhcp4: no version: 2
Legenda:
renderer – v podstatě existují dva – v tomto případě je to networkd rendeder, který se používá pro servery a NetworkManager renderer, který se používá pro desktopové počítače
enp1s0 – jméno síťového rozhraní
addresses – statická IP adresa
gateway4 – výchozí brána
routes – definice rout, jak defautlních tak statických
nameservers – primární a sekundární DNS server
search – doménové jméno
dhcp4 – podpora získávání IP adresy z DHCP (zde zakázána)
version – aktuální verze konfiguračního souboru
Příkazem níže aplikujeme konfigurační změny. Avšak spustí se 120sekundový časovač, který vrátí konfiguraci do původního stavu po jeho vypršení v případě konfigurační chyby.
sudo netplan try
Potvrzení změn bez časovače:
sudo netplan apply
Případně potvrzení změn s debuggem:
sudo netplan --debug apply
Řešení problémů je uvedeno níže.
Výpis příkazu sudo netplan –debug apply:
** (generate:1464): DEBUG: 15:02:29.804: Processing input file //etc/netplan/01-network-manager-all.yaml.. ** (generate:1464): DEBUG: 15:02:29.804: starting new processing pass ** (generate:1464): DEBUG: 15:02:29.804: Processing input file //etc/netplan/50-cloud-init.yaml.. ** (generate:1464): DEBUG: 15:02:29.805: starting new processing pass ** (generate:1464): DEBUG: 15:02:29.805: enp1s0: setting default backend to 1 ** (generate:1464): DEBUG: 15:02:29.806: Generating output files.. ** (generate:1464): DEBUG: 15:02:29.806: NetworkManager: definition enp1s0 is not for us (backend 1) DEBUG:netplan generated networkd configuration exists, restarting networkd DEBUG:no netplan generated NM configuration exists DEBUG:device enp1s0 operstate is up, not replugging DEBUG:netplan triggering .link rules for enp1s0 DEBUG:device lo operstate is unknown, not replugging DEBUG:netplan triggering .link rules for lo
Hotovo. Po restartu se zachovají nakonfigurované změny.
Ověření:
Ověření nakonfigurované IP adresy:
ip a
Výpis konfigurace ip a:
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 enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:27:0e:0e:c6:e5 brd ff:ff:ff:ff:ff:ff inet 192.168.88.15/24 brd 192.168.88.255 scope global noprefixroute enp1s0 valid_lft forever preferred_lft forever inet6 fe80::227:eff:fe0e:c6e5/64 scope link valid_lft forever preferred_lft forever
Nyní je také valid_lft (Valid Lifetime) a preferred_lft (Preferred Lifetime) nastaven na forever, což značí statickou konfiguraci IP.
Ověření výchozí brány:
ip route
Výpis příkazu ip route:
default via 192.168.88.1 dev enp1s0 proto static 192.168.88.0/24 dev enp1s0 proto kernel scope link src 192.168.88.15
Ověření nastavení DNS serverů a doménového jména:
systemd-resolve --status
Výpis příkazu systemd-resolve –status:
Link 2 (enp1s0) Current Scopes: DNS LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no DNS Servers: 8.8.8.8 8.8.4.4 DNS Domain: ~. martinuvzivot.cz
Nastavení statické IPv6 adresy
Varianta 1:
Byť je tato varianta nejméně časové náročná, nevýhoda je ta, že při rebootu Ubuntu se IP adresa ztratí:
Vyčištění všech IPv6 a IPv4 adres a rout na rozhraní enp1s0:
ip addr flush dev enp1s0 ip -6 route flush dev enp1s0
Ověření pomocí:
ip a ip -6 route show
Příklad nastavení statické IP adresy pro rozhraní enp1s0:
ip addr add 2001:cafe:cafe:cafe::2/64 dev enp1s0
Příklad nastavení výchozí brány pro rozhraní enp1s0:
ip route add default via 2001:cafe:cafe:cafe::1 dev enp1s0
Příklad nastavení Google IPv6 DNS serverů (nameserver) a doménového jména (search):
sudo vi /etc/resolv.conf
a zkopírovat do resolv.conf řádky níže:
#primary DNS server nameserver 2001:4860:4860::8888 #secondary DNS server nameserver 2001:4860:4860::8844 #domain name search martinuvzivot.cz
Varianta 2:
Konfigurace přes nmcli (Network Manager Command Line Inteface)
Nainstalovat network manager:
apt install network-manager
Příkaz níže neaplikovat, pokud byl connection profil vytvořený:
sudo nmcli con add con-name my-config ifname enp1s0 type ethernet
Již vytvořený connection profilem my-config, který byl konfigurován výše, je možné editovat a donastavit statickou IPv6 adresu na profil a to příkazem:
sudo nmcli con mod my-config ip6 2001:cafe:cafe:cafe::2/64
Příklad konfigurace IPv6 výchozí brány pod profilem my-config:
sudo nmcli con mod my-config ipv6.gateway 2001:cafe:cafe:cafe::1
Příklad konfigurace IPv6 Google DNS serverů pod profilem my-config:
sudo nmcli con mod my-config ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"
Příklad konfigurace doménového jména martinuvzivot.cz pod profilem my-config:
sudo nmcli con mod my-config ipv6.dns-search martinuvzivot.cz
Aktivace connection profilu my-config:
sudo nmcli con up my-config
Řešení problémů je uvedeno níže.
Poznámky ke konfiguraci nmcli:
1. Po restartu se zachovají nakonfigurované změny.
2. Změny v konfiguraci po aplikaci příkazu sudo nmcli con up my-config lze vidět z výstupu ip -a a v souboru /etc/resolv.conf.
3. Jen jeden connection profile v tomto případě my-config, může byt použitý jen pro jedno rozhraní což je v tomto případě enp1s0.
Zobrazení všech connection profilů:
nmcli con show
Výpis příkazu nmcli con show může vypadat následovně:
NAME UUID TYPE DEVICE my-config 69ae656d-ee1c-4c6e-95db-fb89ce8b9f8a ethernet enp1s0
Detailní informace o nově nakonfigurovaném connection profilu my-config:
nmcli -p con show my-config
Případné vymazání celého connection profilu my-config se provede příkazem:
sudo nmcli con del con-name my-config
Případné nastavení DHCP na síťovém rozhraní enp1s0 a connection profilu my-config se provede příkazem:
sudo nmcli con add con-name my-config ifname enp1s0 type ethernet ipv6.method auto
Pozn. Před aplikací příkazu výše doporučuji vymazat původní connection profil my-config
Varianta 3:
Konfigurace přes nmtui (Network Manager Text User Interface), je náhradou konfigurace přes nmcli.
Nainstalovat network manager:
apt install network-manager
Spustit nmtui:
nmtui
Kliknout na Add a vybrat typ rozhraní, které se bude konfigurovat, v tomto případě to bude Ethernet a kliknout na Create.
Zvolit libovolné jméno Profil name (je možné pod stejným Profile name konfigurovat jak IPv4 tak IPv6 adresu zároveň). Jako Device je potřeba zadat jméno ethernetového rozhraní, což se dá zjistit z výpisu ip a. IPv6 Configuration je potřeba přepnout na Manual a to dovolí nakonfigurovat statickou IP adresu na rozhraní včetně ostatní parametrů. Nakonci je nutné potvrdit změny kliknutím na OK.
Nyní lze videt nakonfigurovaný profil my-config. Kliknout na ESC a kliknout na Activate a connection a následně na Activate. Tímto bude rozhraní aktivováno s nakonfigurovanými parametry.
Je možné že se zobrazí chyba při aktivaci rozhraní: Could not activate connection: Connection ‚my-config‘ is not available on device enp0s3 because device is strictly unmanaged, v tomto tento odstavec řeší problém. [3]
Varianta 4:
Bude navázáno na postup konfigurace varianty 2 výše a v již vytvořeném souboru 50-cloud-init.yaml:
sudo vim /etc/netplan/50-cloud-init.yaml
Opět doporučuji zkopírovat konfiguraci přímo do souboru a následně editovat IP adresy a rozhraní.
Nastavení pro Ubuntu 18.04 LTS a Ubuntu 20.04 LTS:
network: renderer: networkd ethernets: enp1s0: addresses: [192.168.88.15/24, "2001:cafe:cafe:cafe::2/64"] gateway4: 192.168.88.1 gateway6: 2001:cafe:cafe:cafe::1 nameservers: addresses: [8.8.8.8,8.8.4.4, "2001:4860:4860::8888", "2001:4860:4860::4444"] search: [martinuvzivot.cz] dhcp4: no version: 2
Nastavení pro Ubuntu 22.04 LTS:
network: renderer: networkd ethernets: enp0s3: addresses: [192.168.88.15/24, "2001:cafe:cafe:cafe::2/64"] routes: - to: 0.0.0.0/0 via: 192.168.88.1 - to: ::/0 via: 2001:cafe:cafe:cafe::1 nameservers: addresses: [8.8.8.8,8.8.4.4, "2001:4860:4860::8888", "2001:4860:4860::4444"] search: [martinuvzivot.cz] dhcp4: no version: 2
Potvrzení změn:
sudo netplan apply
Hotovo. Po restartu se zachovají nakonfigurované změny.
Řešení problémů je uvedeno níže.
Ověření:
Ověření nakonfigurované IPv6 adresy:
ip a
Výpis konfigurace ip a:
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 00:27:0e:0e:c6:e5 brd ff:ff:ff:ff:ff:ff inet 192.168.88.15/24 brd 192.168.88.255 scope global enp1s0 valid_lft forever preferred_lft forever inet6 2001:cafe:cafe:cafe::2/64 scope global noprefixroute valid_lft forever preferred_lft forever inet6 fe80::227:eff:fe0e:c6e5/64 scope link noprefixroute valid_lft forever preferred_lft forever
Hotovo. Po restartu se zachovají nakonfigurované změny.
Ověření výchozí IPv6 brány:
ip -6 route show
Výpis příkazu ip -6 route show:
2001:cafe:cafe:cafe::/64 dev enp1s0 proto kernel metric 100 pref medium 2001:cafe:cafe:cafe::/64 dev enp1s0 proto kernel metric 256 pref medium fe80::/64 dev enp1s0 proto kernel metric 100 pref medium fe80::/64 dev enp1s0 proto kernel metric 256 pref medium default via 2001:cafe:cafe:cafe::1 dev enp1s0 proto static metric 1024 pref medium
Ověření nastavení DNS serverů:
systemd-resolve --status
Výpis souboru systemd-resolve –status:
Link 2 (enp1s0) Current Scopes: DNS LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no DNS Servers: 8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::4444
Řešení problémů:
1. Při aplikování příkazu sudo „nmcli con up my-config“ se zobrazila hláška níže:
Error: Connection activation failed: No suitable device found for this connection (device enp1s0 not available because profile is not compatible with device (mismatching interface name)).
Zobrazit všechny connection profily:
nmcli con show
Z výpisu nmcli con show, je vidět, že rozhraní enp1s0 je již přiřazeno k Wired connection 1:
NAME UUID TYPE DEVICE Wired connection 1 de040542-8e45-38ad-a9c7-cc196e50c407 ethernet enp1s0 my-config 3aee3850-da18-4e2e-91d4-08cd090e7e73 ethernet --
Doporučuji odstranit jak Wired connection 1 tak my-config, pomocí příkazu níže:
sudo nmcli con delete "Wired connection 1" sudo nmcli con delete "my-config"
a znovu překonfigurovat pomocí nmcli celý my-config.
2. Při potvrzení změn „sudo netplan apply“ nefungují DNS servery a doménové jméno:
I když se nastavení DNS serverů a doménového jména zobrazuje pomocí příkazu systemd-resolve –status, tak stále nefungují.
Otevřít resolv.conf:
sudo vim /etc/resolv.conf
a dopsat do resolv.conf řádky níže:
#primary DNS server nameserver 8.8.8.8 #secondary DNS server nameserver 8.8.4.4 #domain name search martinuvzivot.cz
Po rebootu Ubuntu se nakonfigurace v resolv.conf neztratí.
3. Soubor resolv.conf se přepisuje:
Může se stát, že soubor resolv.conf bude přepisován díky dhcpcd, což je dhcp client. Stačí tuto službu stopnout a zamaskovat.
sudo service dhcpcd stop sudo systemctl mask dhcpcd
Tímto by nemělo docházet k přepisu ani po rebootu Ubuntu.
4. Nelze aktivovat rozhraní přes nmtui nebo nmcli:
Je možné že se přes nmtui, nebo nmcli zobrazí chyba při aktivaci rozhraní: Could not activate connection: Connection ‚my-config‘ is not available on device enp0s3 because device is strictly unmanaged.
NMTUI:
NMCLI:
Po aktivaci rozhraní přes sudo nmcli con up my-config se zobrazí:
Error: Connection activation failed: No suitable device found for this connection (device lo not available because device is strictly unmanaged).
To, zda je rozhraní unmanaged, lze vidět i z výpisu příkazu nmcli:
enp0s3: unmanaged
"Intel 82540EM"
ethernet (e1000), 08:00:27:A1:30:F8, hw, mtu 1500
Stačí upravit soubor 10-globally-managed-devices.conf:
sudo vi /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf
, kde je nutné vložit řetězec except:type:ethernet, a tímto vyloučit ethernet z unmanaged devices. Výsledný soubor pak vypadá takto:
[keyfile] unmanaged-devices=*,except:type:wifi,except:type:gsm,except:type:cdma,except:type:ethernet
Provést reload pro network manager:
service network-manager restart
Alternativně pomocí (Ubuntu 22.04):
sudo systemctl restart NetworkManager
Nyní my měla aktivace přes nmtui fungovat.
Výpis příkazu nmcli by již měl ukázat, že je rozhraní enp0s3 připojené k vytvořenému profilu my-config.
enp0s3: connected to my-config "Intel 82540EM" ethernet (e1000), 08:00:27:A1:30:F8, hw, mtu 1500
Zdroje:
[1] http://manpages.ubuntu.com/manpages/xenial/man7/nmcli-examples.7.html
[2] https://www.tecmint.com/configure-network-connections-using-nmcli-tool-in-linux/
[3] https://jbit.net/NetworkManager_Strictly_Unmanaged/