Table of Contents
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.