Użytkownik systemu operacyjnego Linux chce przypisać adres IP 152.168.1.200 255.255.0.0 interfejsowi sieciowemu. Które polecenie powinien wydać, mając uprawnienia root?
A. netsh interface IP 152.168.1.200/16 /add
B. ip addr add 152.168.1.200/16 dev eth1
C. netsh interface IP 152.168.1.200 255.255.0.0 /add
D. ip addr add 152.168.1.200 255.255.0.0 dev eth1
Pytanie z egzaminu CKE, czerwiec 2019 (arkusz EE.08-X-19.06).
Polecenie ip addr add 152.168.1.200/16 dev eth1 jest właściwe, bo używa składni narzędzia ip z pakietu iproute2, czyli obecnie zalecanego sposobu konfiguracji interfejsów sieciowych w Linuksie. Adres 152.168.1.200 ma zostać ustawiony z maską 255.255.0.0, a taka maska odpowiada prefiksowi /16 w notacji CIDR. Czyli zapis 152.168.1.200/16 oznacza dokładnie: adres hosta 152.168.1.200 w sieci o masce 255.255.0.0. Część dev eth1 wskazuje konkretny interfejs sieciowy, na którym adres ma być dodany. W praktyce, przed wykonaniem takiej komendy dobrze sprawdzić nazwę interfejsu poleceniem ip link albo ip addr, bo w nowszych dystrybucjach Linux nazwy typu eth1 nie zawsze występują, często są np. ens33, enp0s3 albo podobne. Moim zdaniem warto zapamiętać też, że ta konfiguracja jest zwykle tymczasowa i po restarcie może zniknąć, jeśli nie zostanie zapisana w NetworkManagerze, netplanie albo plikach konfiguracyjnych danej dystrybucji. Dobra praktyka administracyjna to również sprawdzenie, czy adres nie koliduje z innym hostem oraz czy pasuje do planu adresacji sieci. Samo polecenie jest poprawne technicznie i zgodne ze współczesnym podejściem do administracji siecią w Linuksie.
W tym zadaniu łatwo pomylić składnię różnych systemów operacyjnych oraz dwa sposoby zapisu maski sieci. W Linuksie do ręcznego przypisywania adresu IP interfejsowi używa się obecnie przede wszystkim polecenia ip addr add, należącego do zestawu iproute2. Dawniej często spotykało się ifconfig, ale w wielu dystrybucjach jest już traktowane jako starsze narzędzie. Polecenia zaczynające się od netsh są charakterystyczne dla systemu Windows, a nie dla Linuksa. Netsh służy do konfiguracji m.in. interfejsów sieciowych w Windows, więc nawet jeśli widać tam adres IP i maskę, to nie jest to właściwy kontekst administracyjny dla systemu Linux. To typowy błąd: ktoś kojarzy, że komenda dotyczy sieci, ale nie zwraca uwagi, z którego systemu pochodzi narzędzie. Druga pułapka dotyczy zapisu maski. W poleceniu ip adres podaje się zazwyczaj w notacji CIDR, czyli jako adres/prefix, np. 152.168.1.200/16. Maska 255.255.0.0 oznacza, że pierwsze 16 bitów identyfikuje część sieciową, dlatego odpowiada jej prefiks /16. Zapisanie po adresie oddzielnie 255.255.0.0 nie jest poprawną standardową składnią dla ip addr add w takim użyciu. Program oczekuje prefiksu przy adresie, a nie klasycznej maski wpisanej jako osobny argument. Z mojego doświadczenia to dość częste przy przechodzeniu z konfiguracji graficznej albo z Windowsa do terminala Linuksa: człowiek zna maskę dziesiętną, ale zapomina przeliczyć ją na CIDR. W administracji siecią warto trzymać się jasnej składni i sprawdzać dokumentację poleceniem man ip-address, bo drobna różnica w zapisie może sprawić, że konfiguracja w ogóle się nie wykona albo będzie inna niż zakładano.