Jak skonfigurować statyczny adres IP i dlaczego
Ogłoszenie! Nie mówię o innych sposobach konfiguracji sieci, takich jak NetworkManager. Żadne urządzenie wymienione w /etc/network/interfaces
nie jest dotknięte przez NM
Aby móc komunikować się przez sieć IP (IPv4 i IPv6), komputer musi wiedzieć, jaki ma adres IP. Dlatego address
potrzebna jest dyrektywa, aby powiedzieć komputerowi.
Gdy komputer chce następnie rozmawiać z innym komputerem, używa adresu IP innych komputerów, aby sprawdzić, czy ten komputer jest w tej samej sieci, LAN. Jeśli tak, komputer może komunikować się bezpośrednio z drugim komputerem.
Skąd więc komputer wie, kiedy komunikuje się z komputerem w tej samej sieci LAN? Korzystając z sieci netmask
, w których część netto adresu jest ustawiona na jedynki, a część hosta na zera. Tak więc, wykonując bitową operację AND między każdym bitem adresu IP a maską sieci, otrzymamy adres sieciowy adresu IP, gdzie część hosta wynosi zero. Jeśli więc zrobimy to na adresie IP komputerów i na innych komputerach, otrzymamy każdy adres sieciowy. Jeśli są równe, oznacza to, że komputery są w tej samej sieci i mogą rozmawiać bezpośrednio ze sobą.
Jeśli adresy sieciowe nie są równe, znajdują się w innej sieci LAN i nie mogą się ze sobą bezpośrednio komunikować. Następnie komputer musi użyć specjalnego komputera podłączonego do innych sieci LAN. Ten komputer jest routerem (który może mieć także zaporę i NAT). Kiedy więc komputer chce rozmawiać z innymi komputerami poza siecią LAN, musi znać adres tego komputera ustawiony w gateway
dyrektywie. Jeśli inny interfejs ustawił już gateway
wartość, nie należy i nie należy ustawiać kolejnej dyrektywy bramy dla tego interfejsu. Do gateway
dyrektywa ustawia domyślną trasę do komputera, więc trzeba tylko jeden dla IPv4 i IPv6 tylko jeden dla każdej maszyny. Ten adres sieciowy można ustawić ręcznie za pomocą network
dyrektywy.
Czasami komputer chce komunikować się ze wszystkimi komputerami w sieci LAN i używa adresu rozgłoszeniowego. Ten adres jest nasłuchiwany przez wszystkie komputery w tej samej sieci LAN. Jest to w zasadzie taki sam jak adres sieciowy, z tą różnicą, że część hosta to nie wszystkie zera i zamiast nich wszystkie. Ten adres rozgłoszeniowy jest ustawiany przez dyrektywę broadcast
w interfejsie.
network
Adres interfejsu musi być obliczony tylko raz i zwykle jest obliczany poprawnie na podstawie tego address
i netmask
dyrektyw. To samo z broadcast
adresem. Więc nie musisz ich ustawiać. W rzeczywistości, jeśli ustawisz jedną lub obie na niewłaściwe wartości, możesz utracić połączenie z Internetem i innymi komputerami w twojej sieci LAN. Więc jeśli nie masz na nich dziwnych wartości, pozwól komputerowi je obliczyć.
Tak więc minimalne ustawienia statyczne lub zwrotki /etc/network/interfaces
mogą wyglądać tak dla urządzenia eth1
w sieci prywatnej:
iface eth1 static inet
address 192.168.44.10
netmask 255.255.255.0
gateway 192.168.44.1
Jak działa rozpoznawanie nazw i jak jest powiązane z DNS.
Nazwy domen służą do konwersji między łatwymi do odczytania i zapamiętania nazwami domen a komputerami, które nie są tak łatwe do zapamiętania, wspomniane powyżej adresy IP. Nazywa się to rozpoznawaniem nazw .
Zwykle jest to kontrolowane przez plik /etc/nsswitc.conf
i linię zaczynającą się od hosts:
. Jeśli poprosisz komputer o połączenie z komputerem my.example.com
, przejrzy ten plik i spróbuje rozwiązać adres IP z nazwy my.example.com
. Ten plik nie odpowiada na pytanie „jakie adresy IP ma mój.przyklad.com”, po prostu informuje komputer, gdzie może znaleźć odpowiedź.
Zwykle /etc/hosts
najpierw próbuje pliku w celu uzyskania statycznych nazw lokalnych, następnie avahi w mDNS
przypadku dynamicznych nazw lokalnych, a następnie programu do zmiany nazw domen DNS, aby uzyskać nazwę z Internetu.
Jeśli niektóre z nich nie odpowiadają na pytania, może to wyglądać, jakby komputer utknął na chwilę. Jeśli to otrzymasz, najpierw sprawdź rozwiązywanie nazw.
Tak więc dodając adresy statyczne, możesz po prostu dodać go do swojego /etc/hosts
pliku. Nawiasem mówiąc, jeśli masz adres statyczny, prawdopodobnie powinieneś zmienić tam adres IP swojego urządzenia na swój adres IP, a nie domyślny 127.0.1.1
(który znajduje się w sieci localnet, gdzie jest localhost 127.0.0.1
). Działa to tylko w przypadku klientów, a nie serwerów.
Dynamiczne adresy, które otrzymujesz z komputerów z systemem Linux wraz z avahi
pakietem oraz z komputerów Apple (i MS Windows z iTunes?). Jest to obsługiwane przez „magię” i nie trzeba tego naprawiać.
DNS jest używany do łączenia się z Internetem i musisz powiedzieć komputerowi, gdzie są te serwery DNS, których chcesz użyć, jaki adres IP użyć i jaka jest domyślna domena DNS.
Odbywa się to w pliku /etc/resolv.conf
i można je ustawić statycznie. To nie działa tak dobrze w naszym nie tak statycznym świecie, więc zazwyczaj masz resolvconf
zainstalowany pakiet o nazwie . To pozwala skonfigurować te ustawienia w /e/n/interfaces
pliku.
Jeśli więc założymy, że chcemy dodać jeden z serwerów DNS Googles 8.8.8.8
oraz serwer DNS twojego dostawcy usług internetowych 192.0.2.1
i domenę my.example.org
domeny jako domyślną, po prostu edytuj /etc/network/interfaces
plik i dodaj te dwie linie w sekcji dla urządzenia statycznego.
dns-nameservers 8.8.8.8 192.0.2.10
dns-search my.example.org
Możesz również zauważyć, że program rozpoznawania nazw DNS będzie używał maksymalnie trzech serwerów DNS. Proszę spojrzeć na to w man
-page dnia resolv.conf
. Jak zwykle, można użyć polecenia man nsswitch.conf
, man resolv.conf
a man resolvconf
po więcej informacji.
Zauważ też, że używam domeny example.com i example.org oraz sieci IP 192.0.2.0/24 dla przykładowego serwera DNS ISP. Są one wyraźnie zdefiniowane do użycia w przykładach. Zobacz http://example.com/ lub http://tools.ietf.org/html/rfc2606 i rfc5735
Jak zatem sprawdzić, czy to działa?
Możesz to zrobić na wiele sposobów, ale zwykle używam
getent hosts my.test.com
przetestować całą konfigurację pod kątem rozpoznawania nazw. Jeśli chcę tylko sprawdzić, czy DNS działa, używam jednego z następujących poleceń:
host my.test.com
dig my.test.com
Pamiętaj jednak, że te testują DNS tylko poprzez ustawienia w /etc/resolv.conf
pliku, a nie /etc/nsswitch.conf
część. To może być to, czego chcesz lub nie.