NFsec Logo

Dynamic Host Configuration Protocol Daemon bez DHCPd

Wczoraj w Administracja, Hacks & Scripts Możliwość komentowania Dynamic Host Configuration Protocol Daemon bez DHCPd została wyłączona

A

gdybym Ci powiedział, że Linux nie potrzebuje żadnego zewnętrznego klienta DHCP, menedżera sieciowego ani innego narzędzia do konfiguracji sieci, aby skutecznie przeprowadzić proces konfiguracji jednego interfejsu sieciowego na dowolnym serwerze? Wystarczy tylko jądro i bootloader. W dodatku metoda ta jest kompatybilna wstecz aż do wersji Linuksa 2.0 z 1996 roku. Mowa tutaj o mechanizmie nfsroot, który pierwotnie został stworzony dla stacji bezdyskowych, a zawarty w nim parametr jądra ip= to przydatne narzędzie, które może w różnych sytuacjach pomóc skonfigurować sieć bez dodatkowego oprogramowania. Jeśli dobrze się wczytamy to dokumentacja nfsroot definiuje składnię parametru ip=, który poinstruuje jądro, jak skonfigurować wybrany interfejs sieciowy podczas startu systemu. Choć nazwa sugeruje powiązanie z NFS (ang. Network File System), mechanizm ten działa niezależnie od tego, czy ostatecznie zamontujemy system plików przez sieć. Jego składnia jest bardzo prosta:

ip=[klient]:[server]:[brama]:[maska]:[host]:[interfejs]:[autokonf]:[dns0]:[dns1]:[ntp0]

Gdzie:

  • klient – to adres IP jaki chcemy przypisać interfejsowi sieciowemu.
  • server – adres IP serwera NFS (możemy pominąć, jeśli nie montujemy systemu plików).
  • brama – adres IP bramy sieciowej odpowiedzialnej za dostęp do sieci / internetu.
  • maska – maska sieciowa definiująca do jakiej podsieci należy adres IP z pola klient.
  • host – nazwa hosta / serwera.
  • interfejs – nazwa interfejsu sieciowego, dla którego chcemy skonfigurować adresację sieciową.
  • autokonf – określa jakim protokołem skonfigurować interfejs: dhcp, bootp, rarp lub off (statycznie).
  • dns0 – adres pierwszego serwera DNS (działa tylko serwerem NFS), który pojawi się w /proc/net/pnp.
  • dns1 – adresu drugiego serwera DNS (działa tylko serwerem NFS), który pojawi się w /proc/net/pnp.
  • ntp0 – adres serwera NTP, który pojawi się w /proc/net/ipconfig/ntp_servers.

Przykłady:

GRUB_CMDLINE_LINUX="ip=192.168.254.2::192.168.254.1:255.255.255.0:darkstar:enp0s8:off:::"

Ustawi na interfejsie enp0s8 statyczny adres IP: 192.168.254.2/24, którego bramą sieciową jest: 192.168.254.1. Jeśli nie podamy nazwy interfejsu sieciowego zostanie wybrany pierwszy interfejs w systemie.

GRUB_CMDLINE_LINUX="ip=:::::enp0s8:dhcp:::"

Skonfiguruje interfejs enp0s8 za pomocą protokołu DHCP. Jeśli nie podamy nazwy interfejsu sieciowego zostanie wybrany pierwszy interfejs w systemie. Natomiast jeśli posiadamy tylko jeden interfejs to sprawa uproszcza się do krótkiego wpisu:

GRUB_CMDLINE_LINUX="ip=dhcp"

Fraza GRUB_CMDLINE_LINUX w powyższych przykładach pojawia się nie bez powodu, ponieważ zastosowanie tej metody w systemie (np. Debian / Ubuntu) wymaga zmodyfikowania parametrów startowych w programie rozruchowym GRUB. Poprzez edycję pliku: /etc/default/grub i dopisanie do linii GRUB_CMDLINE_LINUX odpowiednio dobranego parametru ip= aktywujemy mechanizm przy starcie systemu. Po edycji i zapisie w/w pliku wymagana jest aktualizacja konfiguracji GRUB:

sudo update-grub

Należy tylko pamiętać, że sterownik karty sieciowej musi być wkompilowany w jądro systemu lub dostępny w obrazie initrd/initramfs.

Więcej informacji: Setting a Static IP Address Using the Kernel Command Line, Kernel-only network configuration on Linux