5.3 Konfiguracja TCP/IP

W tym miejscu twoja karta sieciowa powinna byc fizycznie zainstalowana w komputerze, oraz odpowiedni moduł krenela zaladowany. Nie bedziesz jeszcze w stanie komunikować się przy użyciu karty, ale informacje o urzadzeniu sieciowym możesz uzyskać przez ifconfig -a.

# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:A0:CC:3C:60:A4
UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1
RX packets:110081 errors:1 dropped:0 overruns:0 frame:0
TX packets:84931 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:114824506 (109.5 Mb) TX bytes:9337924 (8.9 Mb)
Interrupt:5 Base address:0x8400

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:2234 errors:0 dropped:0 overruns:0 frame:0
TX packets:2234 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:168758 (164.8 Kb) TX bytes:168758 (164.8 Kb)

Jesli poprostu wpiszesz /sbin/ifconfig bez sufixu -a, nie zobaczysz interfejsu eth0, jako że twoja karta sieciowa nie ma jeszcze poprawnego adresu IP.

5.3.1 Ogólnie

Podczas gdy jest wiele róznych sposobów ustawiania sieci, wszystkie z nich moga byc podzielone na 2 typy: statyczne i dynamiczne. Statyczne sieci są budowane tak, że dany węzeł zawsze ma ten sam adres IP. Dynamiczne seci budowane są tak, że adresy IP dla węzłów są kontrolowane przez jeden serwer zwanym serwerem DHCP.

5.3.2 DHCP

DHCP (Dynamic Host Configuration Protocol), jest środkiem, dzięki któremu adres IP może być przydzielony komputerowi na starcie. Kiedy klient DHCP startuje, wysyła żądanie przez sieć lokalną do serwera DHCP o przydzielenie adresu IP. Serwer DHCP ma pulę (lub zakres) dostepnych adresow IP. Serwer odpowie na to żądanie adresem IP z puli razem z czasem dzierżawy. Kiedy czas dzierżawy dla danego adresu IP wygaśnie, klient musi skontaktowac się ponownie z serwerem i powtórzyć negocjacje.

Następnie klient DHCP zaakceptuje adres IP z serwera i skonfiguruje żądany interfejs adresem IP. Jest jeszcze jedena przydatna sztuczka jakiej klienci DHCP używaja przy negocjacjach adresow IP jakie zostana przydzielone. Klient pamieta ostatnio przydzielony adres i prosi serwer o ponowny przydzial tego samego adresu IP przy nastepnych negocjacjach. Jeśli jest to możliwe serwer zrobi to, jeśli nie, przydzielany jest nowy adres. Wiec neogocjacje wygladaja mniej wiecej tak:

    Klient: Czy serwer DHCP jest dostepny w sieci LAN?
    Serwer: Tak, jest. Ja nim jestem
    Klient: Potrzebuje adresu IP
    Serwer: Mozesz wziasc 192.168.10.10 na 19200 sekund.
    Klient: Dziekuje

    Klient: Czy serwer DHCP jest dostępny w sieci LAN?
    Serwer:Tak, jest. Ja nim jestem
    Klient:Potrzebuje adresu IP. Ostatnio jak rozmawialiśmy, miałem 192.168.10.10;  moge go dostać ponownie?
    Serwer:Tam mozesz (lub Nie, nie mozesz: wez w zamian 192.168.10.12).
    Klient: Dziekuje.

Klientem DHCP w Linuxie jest /sbin/dhcpcd. Jeśli otworzysz /etc/rc.d/rc.inet1 w swoim ulubionym edytorze tekstu, zauważysz, że /sbin/dhcpcd jest wywoływany gdzies pośrodku skryptu. dhcpcd śledzi także ilość czasu pozostałego na dzierżawę obecnego adresu IP i automatycznie kontaktuje się z serwerem DHCP żądając jej odnowienia jeśli to konieczne. DHCP może również kontrolować pokrewne informacje, jak na przykład którego serwera ntp użyć, jaka trasę obrać, itp.

Ustawianie DHCP w Slackware jest proste. Należy uruchomić netconfig i wybrać opcję DHCP. Jeśli masz wiecej niż jedną NIC(Network Interface Card - karta sieciowa) i nie życzysz sobie aby eth0 było konfigurowane przez DHCP, poprostu wyedytuj plik /etc/rc.d/rc.inet1.conf i zmień powiązane zmienne dla twojego NIC na “YES”.

5.3.3 Statyczne IP

Statyczne adresy IP to niezmienne adresy, które można zmienić “recznie”. Użyawne są wszędzie tam gdzie administrator nie chce by informacja IP się zmieniała, jak w przypadku wewnetrznych serwerów w LANach, wszystkich serwerów podpietych do Internetu i routerów sieciowych. W przypadku statycznego adresowania IP jest przydzielany i tak pozostawiany. Pozostałe maszyny wiedzą, że zawsze masz określony adres IP i zawsze mogą się z tobą skontaktować używając go.

5.3.4 /etc/rc.d/rc.inet1.conf

Jeśli planujesz przypisać adres IP do swojej nowej platformy ze Slackware na pokładzie, mozesz to uczynić zarówno przez skrypt netconfig, jak i edycję /etc/rc.d/rc.inet1.conf. W tym ostatnim znajdziesz:

    # Primary network interface card (eth0)
    IPADDR[0]=""
    NETMASK[0]=""
    USE_DHCP[0]=""
    DHCP_HOSTNAME[0]=""

I na końcu:

    GATEWAY=""

W tym przypadku twoim zadaniem jest jedynie wpisanie poprawnych informacji pomiedzy znaki cudzysłowia. Zmienne te są wywoływane przez /etc/rc.d/rc.inet1 na starcie systemu aby ustawic sieciówki. Dla kazdej NIC, poporostu wprowadź właściwą informację IP lub przypisz “YES” zmiennej USE_DHCP. Slackware podniesie interfejsy uwzględniając parametramy jakie zostały wpisane w takiej kolejnosci w jakiej je znajdzie.

Zmienna DEFAULT_GW ustawia domyślną trasę (ang. route) dla Slackware. Cała komunikacja pomiędzy twoim a innymi komputerami w Internecie musi przejść przez bramkę (gateway) o ile żadna inna trasa nie jest dla nich określona. Jesli używasz DHCP zazwyczaj nie musisz wpisywac niczego ponieważ DHCP określi jakiej bramki użyć.

5.3.5 /etc/resolv.conf

Ok, jeśli masz adres IP, domyślną bramkę, może masz też milion dolarów (podziel sie z nami), ale co z tego skoro nie możesz przypisać nazwy do adresu IP? Nikt nie chce wpisywać 72.9.234.112 do przeglądarki aby odwiedzić www.slackbook.org. No i kto poza autorami zapamięta ten adres IP? Należy ustawić DNS, ale jak? Z pomoca przychodzi /etc/resolv.conf.

Istnieje prawdopodobieństwo, że masz poprawne opcje w /etc/resolv.conf. Jeśli ustawiasz swoje połączenie sieciowe używając DHCP, serwer DHCP powinien zając się aktualizacją tych plikow za ciebie. (Technicznie serwer DHCP poporstu informuje dhcpcd co ma tam wpisac.) Jeśli mimo wszystko trzeba ręcznie zaktualizowac swoją listę DNS, należy wyedytowć plik /etc/resolv.conf. Poniżej znajduje się przykład:

# cat /etc/resolv.conf
nameserver 192.168.1.254
search lizella.net

Pierwsza linijka jest prosta. Dyrektywa nameserver mowi nam o jaki serwer DNS pytac. Z koniecznosci jest tam zawsze adres IP. Możesz miec ich tam tyle ile sobie zażyczysz. Slackware sprawdzi jeden po drugim aż wynik będzie zadowalający.

Druga linia jest trochę bardziej interesująca. Dyrektywa szukania daje liste nazw domen objetych zawsze kiedy DNS wysyła żądanie. Umożliwia to porozumienie się z maszyną tylko dzięki pierwszej części jej FQDN (Fully Qualified Domain Name). Na przykład, jeśli “slackware.com” jest w scieżce wyszukiwania, można dotrzeć do http://store.slackware.com przez wpisanie samego http://store.

# ping -c 1 store
PING store.slackware.com (69.50.233.153): 56 data bytes
64 bytes from 69.50.233.153 : icmp_seq=0 ttl=64 time=0.251 ms
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.251/0.251/0.251 ms


5.3.6 /etc/hosts

Tak więc DNS działa poprawnie. Co jesli chcemy ominąć nasz serwer DNS, lub dodać wpis DNS dla mszyny, której nie ma na liście DNSa? Slackware dostarcza plik /etc/hosts, który zawiera lokalną listę nazw DNS i adresow IP, do których powinny one pasować.

# cat /etc/hosts
127.0.0.1           localhost  locahost.localdomain
192.168.1.101       redtail
172.14.66.32        foobar.slackware.com

Jak widać powyżej localhost ma adres IP 127.0.0.1 (zawsze zarezerwowany dla localhosta), redtail przypisany jest do 192.168.1.101, a foobar.slackware.com odpowiada IP 172.14.66.32.

Grenlandia 2012