Linux: Zmiana adresu IP v4 na statyczny

8-gru-2021

Skoro już masz Linuxa i skoro ten Linux ma świadczyć w sieci jakieś usługi, to może warto byłoby przypisać mu stały adres IP? Oto, jak to zrobić:

Ustal aktualną adresację sieci

Twój system teraz już pracuje w jakieś sieci, pewnie dostaje adres IP przez DHCP. Jeśli ta sieć jest zarządzana przez administratora,  który sam decyduje o adresacji, to zatrzymaj się ze swoją zmianą i skontaktuj się z administratorem. Zazwyczaj admini określają jakie adresy IP są rozdzielane przez serwer DHCP, a jakie można sobie ukraść i przypisać ręcznie do swojego komputera. Tutaj jednak, tym problemem się nie przejmuję, ale Ty musisz.

Poleceniem

ip addres

można wyświetlić informację o aktualnie przypisanym adresie IP

W wyświetlonym wyniku powinno się udać odnaleźć aktualnie wykorzystywany adres IP:

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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:01:0b:05 brd ff:ff:ff:ff:ff:ff
    inet 192.168.137.220/24 brd 192.168.137.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::8adb:ccf3:d4ed:4331/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Tutaj jest to 192.168.137.220. Dodatkowy zapis /24 określa maskę sieci. W tym przypadku początkowy adres 192.168.137.0 to adres sieci, maską jest 255.255.255.0 a sam komputer otrzymał 192.168.137.220. Twój admin może np. powiedzieć, że możesz używać adresu 192.168.137.100, cała reszta, czyli sieć i maska sieci pozostaną prawdopodobnie takie same.

Warto też znać adres gateway, przez który odbywa się komunikacja z całą siecią zewnętrzną, w tym z Internetem. Wyświetlisz go poleceniem

ip route

U mnie wynik wygląda tak:

default via 192.168.137.1 dev eth0 proto static metric 100 
192.168.137.0/24 dev eth0 proto kernel scope link src 192.168.137.100 metric 100

Gateway to adres wskazywany w pierwszej linijce czyli 192.168.137.1

Co się jeszcze może przydać to adres DNS. Często jest to ten sam adres, co gateway, ale żeby uzyskać pewność, należałoby zajrzeć do pliku /etc/resolv.conf. Jeśli adresu nie znamy, to pomijając pewne zagrożenia security można zaryzykować używanie adresu serwera Google: 8.8.8.8

Mając te informacje możemy przejść do zmian:

Zmiana adresu IP

Za koordynacje konfiguracji sieci odpowiada network manager. Komenda, która pracuje z tym serwisem to między innymi nmcli. Poniższe polecenie wyświetli aktualną konfiguracje:

nmcli connection show

wynik może wyglądać mniej więcej tak:

NAME                UUID                                  TYPE      DEVICE 
Wired connection 1  29e65197-3719-33a1-bd37-5b4bb35e4ba1  ethernet  eth0

Co tu jest ważne. Ta konfiguracja ma swoją nazwę i jest to „Wired connection 1”. Jest ona przypisana do konkretnej karty sieciowej i jest to eth0. W kolejnych krokach będziemy zmieniać konfigurację, więc trzeba się poslużyć nazwą „Wired connection 1”. Poniższe polecenie zmieni adres IPv4 na 192.168.137.100:

sudo nmcli connection modify Wired\ connection\ 1 ipv4.method manual ipv4.address 192.168.137.100/24 ipv4.gateway 192.168.137.1 ipv4.dns 8.8.8.8

Co tu się dzieje?

  • sudo – bo to czynność zarezerwowana dla administratora
  • nmcli – bo to jest polecenie sterujące network managerem
  • connection modify – bo chodzi o modyfikację połączenia
  • Wired\ connection\ 1 – bo to jest to połączenie, które chcemy zmienić. Zauważ, że spacje w nazwie są „cytowane” przy pomocy znaku backslash. (Hint – wpisując polecenie można napisać Wired i nacisnać tabulator – reszta nazwy, wraz z cytowaniem uzupełni się sama)
  • ipv4.method manual – bo adres IP ma być nadawany ręcznie
  • 192.168.137.100/24 –  bo taki adres dał nam administrator, albo też samodzielnie odkryliśmy, że będzie dobry wykonując kroki z początku tego artykułu
  • ipv4.gateway 192.168.137.1 – bo taki ma być przypisany adres gateway w tej konfiguracji
  • ipv4.dns 8.8.8.8 – bo zdecydowałem się tu użyć serwera DNS od Google

Po uruchomieniu polecenia nic się jeszcze nie stanie. Dopiero wyłączenie i włączenie konfiguracji sprawi, że zostanie ona aplikowana:

sudo nmcli connection down Wired\ connection\ 1

sudo nmcli connection up Wired\ connection\ 1

Od tej pory polecenie

ip address

oraz

ip route

powinny zwracać wartości zdefiniowane w poleceniu nmcli.

Komentarze są wyłączone

Autor: Rafał Kraik