Sieci komputerowe — ćwiczenia 1 (część 1)
Temat zajęć: Podstawowe narzędzia konfiguracji i diagnostyki
sieci.
Podstawowe narzędzia sieciowe w systemie Linux
Uwaga:
Szczegółowe opisy
poleceń znajdują się w man pages systemu. Na przykład, aby
poznać dokładny opis polecenia ping, należy wpisać w
terminalu
man ping
1. ping
Pozwala
sprawdić, czy pakiety z lokalnego hosta docierają do innego
wybranego
hosta. Dodatkowo podaje czas, jaki potrzebuje pakiet na osiągnięcie
hosta docelowego. Składnia:
ping [-c ile_pakietow] [-s rozmiar_pakietu] nazwa_hosta albo adres_ip
2. traceroute
Pozwala
sprawdzić, przez jakie routery (mosty) trasowany jest pakiet z
lokalnego hosta do innego wybranego. Podaje dodatkowo czasy
niezbędne
do osiągnięcia danego routera. Standardowo wyświetla nazwy
mostów pobrane z DNS, można użyć opcji -n aby uzyskać
adresy IP routerów (DNS nie jest wówczas odpytywany). Opcja -a
powoduje przerwanie badania trasy jeśli jakiś most po drodze nie
odpowie w 10 kolejnych próbach. Opcja -m pozwala określić
jaki maksymalny TTL otrzymają pakiety (czyli do ilu przeskoków
badamy trasę). Składnia:
traceroute [-n] [-m max_TTL] [-a] nazwa_hosta albo adres_IP
3. arp
Pozwala sprawdzić (lub dodać/usunąć) adresy znajdujące się aktualnie
w tablicy ARP danego hosta. Zwykle używamy tylko składni arp -a
(sprawdzenie).
4. host i nslookup
Pozwalają
odpytywać serwer DNS. host to prostsze polecenie, piszemy:
host szukany_host
nslookup z kolei pracuje w dwóch trybach:
interaktywnym i z wiersza poleceń. Ten drugi ma zwykle składnię:
nslookup szukany_host [-serwer_dns]
W
trybie interaktywnym (aby go uruchomić nie podajemy parametrów w
wierszu poleceń) wprowadzamy kolejne komendy, a sesję kończymy przez
Ctrl+D. Polecenia można przerywać przez Ctrl+C. Najczęściej używane
polecenia:
- nazwa hosta - nazwa wprowadzona jako polecenie powoduje
odpytanie bieżącego serwera DNS o adres IP hosta o podanej
nazwie
- adres IP - adres IP wprowadzony jako polecenie powoduje
odpytanie bieżącego serwera DNS o nazwę hosta o podanym adresie
- server nazwa lub adres IP - zmienia bieżący serwer
DNS (tylko dla tej sesji nslookup !!!) na host o podanej nazwie
lub adresie IP
- ls nazwa_domeny [> plik]
- wyświetla wszystkie hosty zarejestrowane w danej domenie
(UWAGA:
serwer DNS ma prawo odmówić pokazania całej domeny), dodanie >
plik powoduje zapisanie domeny do pliku
5. ifconfig
Pozwala
na ustawienie adresu IP, maski sieci i adresu rozgłaszania dla
danego
interfejsu sieciowego. Wymaga praw administratora systemu.
Przykładowa
składnia:
- ifconfig eth0 down - wyłącza ("kładzie") wybrany
interfejs (tutaj eth0)
- ifconfig eth0 up netmask n1.n2.n3.n4 broadcast b1.b2.b3.b4
a1.a2.a3.a4 - ustawia parametry interfejsu (tu: eth0):
maskę sieci na n1.n2.n3.n4, adres rozgłaszania na b1.b2.b3.b4
oraz adres IP interfejsu na a1.a2.a3.a4
Przykład:
ifconfig eth0 up netmask 255.255.255.0 broadcast 192.168.1.255 192.168.1.6
Użycie składni
ifconfig
lub
ifconfig interfejs
powoduje
jedynie wyświetlenie informacji o danym interfejsie sieciowym (lub
wszystkich interfejsach na danej maszynie) i nie wymaga uprawnień
administratora systemu.
6. route
Umożliwia
dodawanie/usuwanie hostów i sieci z tablicy trasowania
pakietów. Wymaga uprawnień administratora systemu (chyba, że
wywołujemy bez parametrów - w takim przypadku route
pokazuje jedynie zawartość tablicy trasowania i nie wymaga uprawnień
administratora). Najczęstsze przypadki użycia:
route add -net n1.n2.n3.n4 netmask m1.m2.m3.m4 dev interfejs
Informuje system, że pakiety przeznaczone dla sieci n1.n2.n3.n4
(z maską m1.m2.m3.m4) mają być przesyłane za pośrednictwem
interfejsu interfejs.
route add -host h1.h2.h3.h4 dev interfejs
Podobnie jak poprzednie, ale dotyczy pojedynczych hostów.
route del [-net|-host] a1.a2.a3.a4 dev interfejs
Usuwa wpisy o hostach lub sieciach z tablicy trasowania.
route add default gw g1.g2.g3.g4 dev interfejs
Ustawia domyślny router na g1.g2.g3.g4.
Określenie
routera, przez który mają być przesyłane komunikaty można
również dołączyć przy dodawaniu sieci i hostów do tablicy
trasowania. Zwykle na końcówkach wystarczy dodać własną lokalną
sieć (bez routera, bo jesteśmy do niej wpięci bezpośrednio), sieć
loopback 127.0.0.0 (również bez routera, ale na
interfejsie lo)
oraz domyślny router dla pakietów do wszystkich pozostałych
adresów (czyli spoza naszej sieci lokalnej i spoza loopback).
7. hostname
Pozwala sprawdzić lub ustawić nazwę lokalnego hosta. Nazwa ustawiona
za pomocą hostname
ma wpływ w zasadzie tylko na działanie lokalnej maszyny - inne
komputery podłączone do sieci, chcąc sprawdzić nazwę naszego hosta i
tak skorzystają z DNS.
8. domainname
Pozwala sprawdzić lub ustawić nazwę domeny dla lokalnego hosta.
9. plik /etc/resolv.conf
W
pliku tym określamy serwer(y) DNS, które mają być odpytywane
przez lokalnego hosta w celu zamiany nazwy na IP lub odwrotnie. Aby
określić serwer DNS należy w pliku tym umieścić wiersz:
nameserver adres_IP
Oczywiście
nie możemy podać tutaj nazwy, bo jak system miałby ją zamienić na IP
skoro właśnie określamy sposób tej zamiany (jest pewien wyjątek
- patrz punkt 10).
Plik resolv.conf może zawierać wiele wpisów typu nameserver.
Serwery będą wówczas odpytywane w kolejności, w jakiej pojawiają
się w pliku (w przypadku, gdy pierwszy nie odpowie, pytany jest
drugi,
jeśli on nie odpowie - trzeci itd.). Określenie zbyt wielu
serwerów powoduje długie przestoje przy podaniu nieprawidłowej
(niemapowalnej) nazwy.
Dodatkowo w resolv.conf możemy
podać domyślną(e) domenę(y), czyli nazwę domeny, która będzie
automatycznie "doklejana" do nazw hostów jeśli pominiemy domenę.
Wpis wygląda następująco:
search nazwa_domeny
np.:
search amu.edu.pl
Jeśli np. wykonamy
ping main2
to jeśli serwer DNS odpowie, że nie zna nazwy main2,
system automatycznie ponowi zapytanie, tym razem o main2.amu.edu.pl.
Podawanie
zbyt wielu domen wyszukiwania również nie jest wskazane. W
przypadku omyłkowego wprowadzenia niemapowalnej nazwy, błąd systemu
pojawi się dopiero po stwierdzeniu, że wprowadzona nazwa w
połączeniu z
każdą z domen przeszukiwania również jest niemapowalna.
10. plik /etc/hosts
W pliku tym możemy ręcznie wprowadzić adresy IP hostów i
odpowiadające im nazwy. Wpisy mają postać:
adres_IP nazwa [nazwa_alternatywna1] [nazwa_alternatywna2 ...]
Możemy
więc wprowadzić najczęściej "używane" hosty do tej statycznej
tablicy
aby ograniczyć odpytywanie serwera DNS o nazwy. Aby tablica miała
pierwszeństwo przed serwerem DNS, w pliku /etc/host.conf
musi znaleźć się wpis
order hosts,bind
Wówczas przy zamianie nazwy na adres IP (lub odwrotnie) najpierw
zostanie sprawdzony plik /etc/hosts i dopiero jeśli
nazwa/adres nie zostaną tam odnalezione, zostanie odpytany serwer
DNS. Gdyby w host.conf był wpis
order bind,hosts
to
kolejność byłaby odwrotna: najpierw zostałby odpytany serwer DNS, a
jeśli on nie udzieliłby odpowiedzi, zostałaby sprawdzona lokalna
tablica.
11. plik /etc/services
Zawiera nazwy "dobrze znanych" usług i odpowiadające im numery
portów. Wpisy w tym zbiorze mają postać:
nazwa_usługi numer_portu/protokół
np.
telnet 23/tcp
Plik ten używany jest przez funkcję systemową getservbyname
(daj usługę po nazwie) oraz niektóre narzędzia sieciowe, np. netstat
(patrz niżej), który dzięki temu wyświetla nazwy usług zamiast
wyłącznie numerów portów.
12. netstat
Pokazuje
otwarte gniazda (komunikacyjne i nasłuchujące) wg wybranych
kryteriów oraz procesy, które z tych gniazd korzystają.
Wyświetla tabelę zawierającą m. in. : protokół (TCP/UDP), adres
lokalny i numer lokalnego portu, adres zdalny i numer portu (jeśli
gniazdo nasłuchuje, to pojawia się często *.*) oraz stan połączenia
(np. listen, established itd.). Przykładowa
składnia:
netstat -a
Wyświetla informacje o wszystkich protokołach (również innych niż
TCP i UDP).
netstat -t
Wyświetla informacje o gniazdach TCP.
netstat -u
Wyświetla informacje o gniazdach UDP.
Dodatkowo opcja -n
powoduje wyświetlanie wyłącznie wartości numerycznych (UID zamiast
nazwy użytkownika, numer portu zamiast nazwy usługi, adres IP
zamiast
nazwy hosta).
13. telnet
Telnet
może służyć jako zdalny terminal, tzn. umożliwia pracę w konsoli na
zdalnej maszynie, na której działa usługa telnet (port 23 TCP).
Ta rola telnet jest już jednak w zaniku, ponieważ przy
logowaniu się na zdalną maszynę nazwa użytkownika i hasło przesyłane
są
przez sieć otwartym tekstem. Dlatego jako zdalna konsola
zdecydowanie
lepiej sprawdza się SSH (Secure Shell), który zapewnia
szyfrowanie połączenia.
Telnet nie musi jednak wykonywać
połączenia tylko na port 23, na którym ew. działa serwer usługi
telnet. Możemy za jego pomocą połączyć się z dowolną usługą
pracującą
na TCP i, o ile protokół wymiany danych z tą usługą jest
protokołem tekstowym ASCII, przeprowadzić "rozmowę" z usługą za
pomocą
konsoli. Składnia jest wówczas następująca:
telnet host numer_portu
Program telnet
zapewnia to, że wszystkie znaki wprowadzane z konsoli zostaną
przesłane
do usługi, a wszystkie znaki zwrócone przez usługę zostaną
wyświetlone na konsoli. Oczywiście telnet jako narzędzie
testujące nie sprawdzi się w przypadku usług, które posiadają
protokół binarny (wszystko, co wprowadzamy w konsoli telnet
wysyłane jest w postaci znaków ASCII).
W otwartej sesji
telnet możemy przejść do tzw. wewnętrznej konsoli telnet za pomocą
kombinacji Control-]. Mamy wówczas do dyspozycji kilka poleceń
sterujących transmisją (dostępna lista po wprowadzeniu polecenia help),
z których najczęściej używanym jest prawdopodobnie quit,
wykorzystywane do zamknięcia połączenia jeśli wystąpi problem w
komunikacji z usługą i połączenie nie zamyka się samoczynnie.
14. nc i netcat
nc i netcat to podobne programy służące m.in.
do wysyłania i odbierania danych za pomocą protokołów TCP i UDP.
Aby wysłać dane, piszemy:
nc host numer_portu
Program pobiera dane ze standardowego wejścia.
Aby nasłuchiwać danych z sieci, wydajemy polecenie:
nc -l numer_portu
Program wypisuje odebrane dane na standardowym wyjściu. Kilka
ciekawych przykładów można znaleźć m.in. w podręczniku
systemowym (man nc).
Zadanie 1
Za pomocą pomocą polecenia nc lub netcat zobaczyć wiadomość wysyłaną
przez przeglądarkę internetową. (Pomoc: uruchomić nasłuchiwanie na
dowolnym porcie, a następnie uruchomić przeglądarkę i postarać się
podejrzeć stronę z "localhost" na podanym porcie.
Zadanie 1b
Proszę za pomocą programu telnet zasymulować działanie
przeglądarki WWW. Dokładniej, proszę wykonać połączenie do hosta onet.pl
na port 80 i wydać komendę pobierającą stronę główną.
Zadanie 2
Za pomocą programu nc lub netcat wysłać
komunikat tekstowy
na inny komputer w sieci. Zadanie wykonać w parach
Odpowiedniki omówionych narzędzi na platformie Windows
NT/2000/XP
Zakładamy, że katalogiem systemowym jest C:\WINNT.
- /etc/hosts - C:\WINNT\SYSTEM32\DRIVERS\ETC\HOSTS
- /etc/services - C:\WINNT\SYSTEM32\DRIVERS\ETC\SERVICES
- ping - ping
- traceroute - tracert
- ifconfig - brak
dokładnego odpowiednika, konfigurację ręczną przeprowadza się
we
właściwościach sieci, a pobieraniem automatycznym konfiguracji
z
serwera DHCP steruje polecenie ipconfig
- nslookup - nslookup
- route - brak dokładnego odpowiednika -
konfiguracja interaktywna
- arp - arp
- netstat - netstat
- hostname - hostname (tylko sprawdzanie nazwy)
- domainname - brak odpowiednika
- /etc/resolv.conf - brak odpowiednika (zasada
order hosts,bind)
- telnet - C:\WINNT\SYSTEM32\TELNET.EXE