0 Linux – konfiguracja sieci
Tomasz Zaworski edited this page 2020-11-15 02:28:24 +01:00
  1. Wprowadzenie
  2. Zadania do wykonania na zajęciach
    1. Podstawowe narządzia
  3. Zadania domowe
  4. Materiały uzupełniające

Wprowadzenie

Większość współczesnych systemów operacyjnych, w tym wiele dystrybucji Linuksa, w chwili instalacji ma pewien domyślny zestaw aktywnych usług i podstawową konfigurację umożliwiającą rozpoczęcie pracy.

System taki oferuje najczęściej wykonywanie najbardziej popularnych zadań (podłączenie do istniejącej sieci, przeglądanie zasobów Internetu, edycję dokumentów, etc.). Czasami jednak domyślna konfiguracja nie jest wystarczająca i konieczne są dodatkowe modyfikację.

Na dzisiejszych zajęciach poznamy podstawy konfiguracji sieci oraz kilka narzędzi, służących do diagnostyki problemów.

Uwaga: większość przedstawionych komend będzie modyfikować wyłącznie bieżącą konfigurację systemu tak, by w przypadku pomyłki, restart przywracał poprzednią. Zasada ta nie dotyczy konfiguracji z wykorzystaniem narzędzi graficznych.

Zadania do wykonania na zajęciach

Podstawowe narządzia

Zadanie 1

Na początku należy zainstalować kilka programów (część z nich jest domyślnie zainstalowana w większości dystrybucji Linuksa), poznając przy okazji sposób pracy na koncie o mniejszych uprawnieniach. Aby skonfigurować dostęp i przygotować środowisko pracy logujemy się na konto administratora (root) i wykonujemy następujące polecenia:

apt-get update                                   # aktualizuje informacje o pakietach
apt-get install net-tools iproute2 sudo dnsutils # instaluje podane programy
usermod -aG sudo sop                             # dodaje użytkownika sop (utworzonego na poprzednich zajęciach) do grupy sudo

W tym momencie możemy wylogować się z konta root i zalogować na konto sop.

Uwaga: w przypadku prośby o hasło (dla sudo) podajemy hasło użytkownika sop, a nie administratora!

Zadanie 2

Na początku wyświetlmy listę wszystkich (-a) połączeń w systemie:

netstat -a | less

Większość pokazywanych połączeń, to tzw. gniazda uniksa, służące do komunikacji pomiędzy aplikacjami (trochę podobne do potoków poleceń). Aby wyświetlić wyłącznie połączenia sieciowe ograniczamy nieco zakres:

netstat -a46 # to opcje jednoliterowe a (wszyskie połączenia), 4 (TCP/IPv4) i 6 (TCP/IPv6)
Zadanie 3

Możemy sprawdzić jaką trasą mogą być przesyłane pakiety wysyłane z naszego komputera:

traceroute adresDoSprawdzenia

W niektórych przypadkach skanowanie ICMP (domyślne) jest zablokowane, można wtedy wykorzystać opcję

sudo traceroute -T adresDoSprawdzenia

wykorzystującą pakiety SYN protokołu TCP (pakiet wygląda jak próba nawiązania połączenia z serwerem). polecenie takie narusza trochę logikę połączenia TCP, więc potrzebne są uprawnienia administratora.

Zadanie 4

Do sprawdzenia adresu IP podanego adresu domenowego (lub w niektórych przypadkach także mapowania odwrotnego) możemy użyć poleceń: host lub nslookup, np.

host www.amu.edu.pl
nslookup www.amu.edu.pl

konfiguracja adresów domyślnych serwerów DNS znajduje się w pliku /etc/resolv.conf (podczas konfiguracji adresu IP przez protokół DHCP plik ten jest odpowiedni modyfikowany, w przypadku konfiguracji ręcznej należy tam wpisać sensowne wartości!). Uwaga: polecenie nslookup może znacznie więcej, np. może nam podać serwer pocztowy obsługujący daną domenę:

$ nslookup 
> set type=MX
> amu.edu.pl
Server:		150.254.78.30
Address:	150.254.78.30#53

Non-authoritative answer:
amu.edu.pl	mail exchanger = 10 mx1.amu.edu.pl.
amu.edu.pl	mail exchanger = 10 mx2.amu.edu.pl.

inne dostępne typy zapytań to np.: NS (serwery DNS), SOA, TXT.

Zadanie 5

Wszystkie powyższe polecenia dotyczyły warstwy trzeciej modelu OSI. System jednak musi posiadać informacje o bezpośrednim sąsiedztwie sieciowym dla warstw niższych (by mógł odpowiednio zaadresować pakiet w sieci lokalnej). Do sprawdzania aktualnych wpisów można wykorzystać polecenie

/usr/sbin/arp -n # opcja n podaje tylko adresy numeryczne

W domyślnej konfiguracji mapowanie to jest tworzone automatycznie przy pierwszej próbie połączenia z danym hostem w sieci lokalnej.

Uwaga: ciekawsze rezultaty można uzyskać wykonując to polecenie na komputerze lokalnym lub 'lts.wmi.amu.edu.pl'.

Zadanie 6

Najbardziej popularnym poleceniem służącym do konfiguracji sieci w systemach uniksowych (i nie tylko) jest ifconfig (/sbin/ifconfig), wywołane bez parametrów wyświetla aktualną konfigurację i stan interfejsów w systemie. My wykorzystamy trochę nowsze polecenie (i tak ma ponad 20 lat), poznane na poprzednich ćwiczeniach.

Polecenie ip obsługuje dużą część konfiguracji sieci w systemi Linux (poza konfiguracją niektórych urządzeń i sieci bezprzewodowych).

ip address show   # interfejsy wraz z adresami (porównaj wynik z poleceniem ifconfig)
ip link show      # interfejsy
ip route show     # skonfigurowane trasy routingu

(opcje można skracać, o ile nie są wieloznaczne, np. ip a s, czy ip link sh - nie może być samo s, gdyż link ma także parametr set). Możliwości jest znacznie więcej, dla wygody opis został podzielony na wiele stron podręcznika, m.in.:

man ip
man ip-address
man ip-link

Dodaj adres IP, sprawdź routing, usuń dodany adres i sprawdź konfigurację.

Uwaga: w miejsce eth0 należy wpisać nazwę istniejącego interfejsu w systemie!

sudo ip a a 192.168.1.1/24 dev eth0
ip r s
sudo ip a d 192.168.1.1/24 dev eth0
ip a s

Uwaga: w tej podsieci (192.168.1.0/24) znajdują się adresy zakresu 192.168.1.1 - 192.168.1.254.

Zadanie 7

Jeżeli zależy nam na spawdzeniu dostępności pojedynczego hosta w sieci Internet, możemy wykorzystać polecenie ping, które wykorzystuje (domyślnie) komunikaty ICMP echo i ICMP reply, np.

ping laboratoria.wmi.amu.edu.pl

Polecenie kończymy wysyłając sygnał TERM (Ctrl-C). Po zakończeniu wyświetlane jest podsumowanie (m.in. liczba wysłanych pakietów, liczba utraconych pakietów, średni, najdłuższy i najkrótszy czas dostarczennia pakietu do podanej lokalizacj). Więcej informacji znajduje się na stronie podręcznika (man ping).

Zadanie 8

Bardzo użytecznym narzędziem jest także programik nc, mogący być zarówno serwerem, jak i klientem połączeń TCP i UDP. Np. wywołanie sudo nc -l -p 80 (sudo ze względu na to, że port 80 należy do zakresu zarezerwowanego dla administratora systemu) uruchamia "fałszywy" serwer WWW. Możemy się do niego dostać wpisując w przeglądarce adres IP naszej maszyny wirtualnej (jak przy logowaniu przez ssh). W ten sposób możemy przechwycić zapytanie wysłane przez przeglądarkę.

Polecenie to może także służyć do przesyłania danych przez sieć. Np. uruchomienie na jednym terminalu (np. na lokalnym komputerze o adresie IP IPSerwera) serwera:

nc -l -p 10001

a na drugim (np. na maszynie "Proxmox")

echo "Test" | nc IPSerwera 10001

prześle tekst "Test" na terminal, na którym został uruchomiony serwer (szczegóły man nc).

Zadania domowe

Zadanie domowe 1

Wyświetl tablicę routingu maszyny wirtualnej uruchomionej na Proxmox (jak w Zadaniu 6). Następnie dodaj adres 192.168.1.10/24 do interfejsu eth0 i sprawdź jak zmieniła się tablica routingu (zmianę z krótkim wyjaśnieniem zapisz w pliku raportu).

Zadanie domowe 2

Wykorzystując informację z poprzedniego zadania, określ jaki adres IP ma domyślny router na tym systemie (inaczej: gdzie kierowane są wszystkie pakiety do komputerów spoza sieci lokalnej). Wynik zapisz w pliku raportu.

Zadanie domowe 3

Napisz polecenia tworzące serwer i klienta prostego komunikatora (dla dwóch użytkowników), wykorzystując polecenie nc. Polecenia zapisz w pliku raportu.

Zadanie domowe 4

Wykorzystując polecenie ping zmierz średnie czasy przesłania pakietu do: domyślnego routra, serwera pocztowego (MX) domeny amu.edu.pl, dowolnego innego komputera w Internecie. Wyniki z co najmniej 20 pomiarów (tzn. średnia dla co najmniej 20 pakietów) umieść w raporcie wraz z adresami IP testowanych komputerów (np. 1.1.1.1 10ms).

Zadanie domowe 5

Napisz polecenia (potoki), które umożliwią przesłanie katalogu /home wraz z zawartością pomiędzy dwoma komputerami (wykorzystując polecenia tar i nc; podpowiedź: tar może czytać ze standardowego wejścia lub pisać na standardowe wyjście). Zapisz polecenia w pliku raportu.

Zadanie domowe 6

Zainstaluj program mtr i sprawdź jego działanie np. poprzez polecenie mtr wp.pl. Zapoznaj się z opisem działania tego programu.

Materiały uzupełniające

Więcej informacji o konfiguracji sieci można znaleźć na stronie Linux Journey w sekcji Networking Nomad.