Nastavení statické IP adresy v Linuxu

By | 08/06/2019

Last Updated on 22/01/2022 by administrator

Nastavení statické IP adresy v Linuxu

Nastavení statické IP adresy

OS:

Implementace byla prováděna na Ubuntu 18.04 LTS a Ubuntu 20.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

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 IP adres 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
#primary 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:

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:

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

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

nameserver 8.8.8.8
nameserver 8.8.4.4
search martinuvzivot.cz

Varianta 2:

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:

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

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

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 “mcli 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.c

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.

Zdroje:

http://manpages.ubuntu.com/manpages/xenial/man7/nmcli-examples.7.html
https://www.tecmint.com/configure-network-connections-using-nmcli-tool-in-linux/

Dobrovolný dar

Pokud Vám tento článek pomohl a rádi byste podpořili tento web a mou tvorbu, můžete tak provést zasláním libovolné částky na číslo účtu 1558701011/3030

Nebo můžete dar poslat kliknutím na tento odkaz Podpořit tento WEB , který Váš přesměruje na mou platební bránu Revolut.

Dar je také možné poslat ve formě Bitcoinu na BTC peněženku bc1qqdf5fp42a7srwwhh2rut8zr9x4jm5c8fqc9qw6

Veškeré peněžní prostředky budu používat na zlepšení kvality své webové tvorby a na psaní nových technických návodů. Za každý dar předem děkuji.

Leave a Reply

Your email address will not be published. Required fields are marked *