#+TITLE: Sprawozdanie z Administracji Systemów Komputerowych nr. 5
#+AUTHOR: Adam Salwowski
#+LATEX_HEADER: \usepackage[top=100pt,bottom=100pt,left=70pt,right=70pt]{geometry}
#+LATEX_HEADER: \usepackage{color}
#+LATEX_HEADER: \definecolor{blue}{rgb}{0,0.5,1}
#+LATEX_HEADER: \hypersetup{colorlinks=true, linkcolor=blue, urlcolor=blue, citecolor=blue}
#+OPTIONS: toc:nil
* Zadania
:PROPERTIES:
:UNNUMBERED: t
:END:
** Zadanie 1
#+begin_quote
/Przy pomocy polecenia =ethtool= sprawdź parametry sieciowe wspierane przez używaną aktualnie NIC./
#+end_quote
*** Jako user
Sprawdzam parametry dla aktualnie używanej karty sieciowej =wlp3s0=.
#+begin_src shell :results output code :wrap src text
ethtool -i wlp3s0
#+end_src
Wynik:
#+RESULTS:
#+begin_src text
driver: ath9k
version: 5.10.0-9-amd64
firmware-version: N/A
expansion-rom-version:
bus-info: 0000:03:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
#+end_src
*** Jako root
Wersja tej komendy, teraz z uprawnieniami =sudo=. Używam flagi =-A= przy komendzie =sudo=, która powoduje wyskoczenie graficznego okienka na podanie hasła root. Pomaga mi to napisać ten dokument sprawniej (używam edytora =Emacs= z trybem =org-mode=), bez potrzeby robienia zrzutów ekranu terminala.
#+begin_src shell :results output code :wrap src text
sudo -A ethtool -i wlp3s0
#+end_src
Wynik:
#+RESULTS:
#+begin_src text
driver: ath9k
version: 5.10.0-9-amd64
firmware-version: N/A
expansion-rom-version:
bus-info: 0000:03:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
#+end_src
Jak widać w tym przypadku, różnic pomiędzy wyjściami nie widać.
** Zadanie 2
#+begin_quote
/Przy pomocy polecenia =ifconfig= sprawdź jakie technologie i rodziny adresów są wspierane przez używaną aktualnie dystrybucję systemu Linux./
#+end_quote
Po pierwsze, instalujemy pakiet zawierający potrzebny program za pomocą polecenia:
#+begin_src shell :results output code :wrap src text
sudo apt install net-tools
#+end_src
Następnie go używamy
#+begin_src shell :results output code :wrap src text
ifconfig -h
#+end_src
Wynik:
#+RESULTS:
#+begin_src text
Usage:
ifconfig [-a] [-v] [-s] [[] ]
[add [/]]
[del [/]]
[[-]broadcast []] [[-]pointopoint []]
[netmask ] [dstaddr ] [tunnel ]
[outfill ] [keepalive ]
[hw ] [mtu ]
[[-]trailers] [[-]arp] [[-]allmulti]
[multicast] [[-]promisc]
[mem_start ] [io_addr ] [irq ] [media ]
[txqueuelen ]
[[-]dynamic]
[up|down] ...
=Hardware Type.
List of possible hardware types:
loop (Local Loopback) slip (Serial Line IP) cslip (VJ Serial Line IP)
slip6 (6-bit Serial Line IP) cslip6 (VJ 6-bit Serial Line IP) adaptive (Adaptive Serial Line IP)
ash (Ash) ether (Ethernet) ax25 (AMPR AX.25)
netrom (AMPR NET/ROM) rose (AMPR ROSE) tunnel (IPIP Tunnel)
ppp (Point-to-Point Protocol) hdlc ((Cisco)-HDLC) lapb (LAPB)
arcnet (ARCnet) dlci (Frame Relay DLCI) frad (Frame Relay Access Device)
sit (IPv6-in-IPv4) fddi (Fiber Distributed Data Interface) hippi (HIPPI)
irda (IrLAP) ec (Econet) x25 (generic X.25)
eui64 (Generic EUI-64)
=Address family. Default: inet
List of possible address families:
unix (UNIX Domain) inet (DARPA Internet) inet6 (IPv6)
ax25 (AMPR AX.25) netrom (AMPR NET/ROM) rose (AMPR ROSE)
ipx (Novell IPX) ddp (Appletalk DDP) ec (Econet)
ash (Ash) x25 (CCITT X.25)
#+end_src
- Typ sprzętu / hardware'u:
+ loop
+ slip6
+ ash
+ netrom
+ ppp
+ arcnet
+ sit
+ irda
+ eui64
- Rodzina adresów:
+ inet (domyślny)
+ unix
+ ax25
+ ipx
+ ash
** Zadanie 3
#+begin_quote
/Opisz znaczenie poszczególnych informacji zawartych w komunikacie wyświetlanym w odpowiedzi na polecenie: =ifconfig eth0=./
#+end_quote
Jako że nie posiadam interfejsu karty sieciowej =eth0= (w większości przypadków nie używam maszyny wirtualnej), pozwolę sobie na użycie innego.
#+begin_src shell :results output code :wrap src text
ifconfig wlp3s0
#+end_src
Wynik:
#+RESULTS:
#+begin_src text
wlp3s0: flags=4163 mtu 1500
inet 192.168.2.160 netmask 255.255.255.0 broadcast 192.168.2.255
inet6 fe80::6c4a:7473:2574:de03 prefixlen 64 scopeid 0x20
ether 18:d6:c7:1b:16:d9 txqueuelen 1000 (Ethernet)
RX packets 66415 bytes 24517629 (23.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 68684 bytes 14952243 (14.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#+end_src
Gdzie:
- *inet* [adres-ipv4] [maska] [adres] broadcast [adres-rozgłoszeniowy]
- *inet6* [adres-ipv6]
- *ether* [adres-mac] txqueuelen [dlugość-kolejki-tx]
Linie RX i TX pokazują, ile pakietów zostało odebranych lub przesłanych bez błędów, ile wystąpiło błędów, ile pakietów zostało odrzuconych (prawdopodobnie z powodu małej ilości pamięci), a ile zostało utraconych z powodu przepełnienia. Przekroczenia odbiornika zwykle występują, gdy pakiety przychodzą szybciej niż jądro jest w stanie obsłużyć ostatnie przerwanie. Wartości flag drukowane przez ifconfig z grubsza odpowiadają nazwom jego opcji wiersza poleceń.
** Zadanie 4
#+begin_quote
/Sprawdź, jak działa polecenie =ifup eth0=./
#+end_quote
Polecenie =ifup= aktywuje interfejs sieciowy, upoważniając go do przesyłania i odbierania danych.
#+begin_src shell :results output code :wrap src text
sudo -A ifup wlp3s0 enp0s31f6 lo
#+end_src
#+RESULTS:
#+begin_src text
ifup: unknown interface wlp3s0
ifup: unknown interface enp0s31f6
ifup: interface lo already configured
#+end_src
Z jakiegoś powodu interfejsy sieciowe =wlp3s0= oraz =enp0s31f6= nie są wykrywane. Interfesj =lo= jak widać, jest już skonfigurowany, wieć nic się nie zmieniło.
** Zadanie 5
#+begin_quote
/Sprawdź, za pomocą polecenia =ip link list= aktualną konfigurację interfejsów sieciowych./
#+end_quote
Polecenie =ip link= służy do konfigurowania urządzeń sieciowych. Parametr =list= wyświetla interfejsy sieciowe, podobnie jak komenda =ifconfig= bez podawania parametrów.
#+begin_src shell :results output code :wrap src text
ip link list
#+end_src
Wynik:
#+RESULTS:
#+begin_src text
1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s31f6: mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether 30:9c:23:07:16:b0 brd ff:ff:ff:ff:ff:ff
3: wlp3s0: mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
link/ether 18:d6:c7:1b:16:d9 brd ff:ff:ff:ff:ff:ff
#+end_src
** Zadanie 6
#+begin_quote
/Porównaj otrzymaną wcześniej konfigurację interfejsów sieciowych z informacją wyświetlaną przez polecenie =ip addr show=./
#+end_quote
#+begin_src shell :results output code :wrap src text
ip addr show
#+end_src
Wynik:
#+RESULTS:
#+begin_src text
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s31f6: mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 30:9c:23:07:16:b0 brd ff:ff:ff:ff:ff:ff
3: wlp3s0: mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 18:d6:c7:1b:16:d9 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.160/24 brd 192.168.2.255 scope global dynamic noprefixroute wlp3s0
valid_lft 79043sec preferred_lft 79043sec
inet6 fe80::6c4a:7473:2574:de03/64 scope link noprefixroute
valid_lft forever preferred_lft forever
#+end_src
Widzimy, że w tym przypadku otrzymaliśmy więcej informacji. Mamy do dyspozycji pola z informacją od adresie IPv4 oraz IPv6.
** Zadanie 7
#+begin_quote
/Sprawdź tablicę sąsiedztwa maszyny wirtualnej./
#+end_quote
Domyślną wartością komendy =ip n= lub wersja długa =ip neigh=, jest parametr =show=. Jeśli nawet go nie podamy wynik będzie taki sam.
#+begin_src shell :results output code :wrap src text
ip neigh show
#+end_src
Wynik:
#+RESULTS:
#+begin_src text
192.168.2.10 dev wlp3s0 lladdr 54:a0:50:75:7c:14 REACHABLE
#+end_src
W moim przypadku stan sąsiedztwa maszyny jest typu =REACHABLE=, czyli adres sąsiada jest ważny i osiągalny.
** Zadanie 8
#+begin_quote
/Sprawdź aktualny stan tablicy ARP maszyny wirtualnej./
#+end_quote
Polecenie =arp= potrafi manipulować lub wyświetlać pamięć podręczną sąsiada sieci IPv4 jądra. Może dodawać wpisy do tabeli, usuwać lub wyświetlać aktualną jej zawartość. ARP to skrót od Address Resolution Protocol, który służy do znajdywania adresu kontroli dostępu do mediów sąsiada sieci dla danego adresu IPv4. =arp= bez sprecyzowania trybu wyświetli aktualną zawartość tabeli. Możliwe jest ograniczenie liczby drukowanych wpisów poprzez określenie typu adresu sprzętowego, nazwy interfejsu lub adresu hosta. =arp -d *adres*= usunie wpis z tablicy ARP. Aby to zrobić, wymagane są uprawnienia =root=. Wpis znajduje się po adresie IP. Jeśli podano nazwę hosta, zostanie ona rozwiązana przed wyszukaniem wpisu w tablicy ARP.
#+begin_src shell :results output code :wrap src text
arp
#+end_src
Wynik:
#+RESULTS:
#+begin_src text
Address HWtype HWaddress Flags Mask Iface
router.asus.com ether 54:a0:50:75:7c:14 C wlp3s0
#+end_src
** Zadanie 9
#+begin_quote
/Skomentuj informację o tablicy routingu maszyny wirtualnej otrzymane przy pomocy poleceń: =ip route show=, oraz =route=./
#+end_quote
*** =ip-route-show=
Podobnie jak w ~Zadanie 7~, jeśli nie podamy żadnych parametrów po komendzie =ip r= (=ip route=, wersja długa), przyjmie ona takie same wartości jak z opcją =list= czy =show=. Komenda =ip route= jest używany do manipulowania wpisami w tablicach routingu jądra. Domyślnie lub z opcjami =show= czy =list=, olecenie wyświetla zawartość tablic routingu lub tras wybranych według pewnych kryteriów.
#+begin_src shell :results output code :wrap src text
ip route
#+end_src
Wynik:
#+RESULTS:
#+begin_src text
default via 192.168.2.10 dev wlp3s0 proto dhcp metric 600
169.254.0.0/16 dev wlp3s0 scope link metric 1000
192.168.2.0/24 dev wlp3s0 proto kernel scope link src 192.168.2.160 metric 600
#+end_src
*** =route=
Głównym zastosowaniem komendy =route= jest konfigurowanie statycznych tras do określonych hostów lub sieci za pośrednictwem interfejsu po skonfigurowaniu go za pomocą programu =ifconfig=. Gdy używane są opcje =add= lub =del=, =route= modyfikuje tablice routingu. Bez tych opcji route wyświetla bieżącą zawartość tablic routingu.
#+begin_src shell :results output code :wrap src text
route
#+end_src
Wynik:
#+RESULTS:
#+begin_src text
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 600 0 0 wlo1
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 wlo1
192.168.43.0 0.0.0.0 255.255.255.0 U 600 0 0 wlo1
#+end_src
Jak widać obie komendy zwracają podobne wyjście. Przy używaniu komendy =route= dane są bardziej czytelne i poformatowane w przystępny sposób, posiadają nagłówki.
** Zadanie 10
#+begin_quote
/Skomentuj aktualną zawartość bazy polityk routingu RPD/
#+end_quote
Niestety nie potrafię rozwiązać tego zadania.
** Zadanie 11
#+begin_quote
/Sprawdź informacje o tablicy routingu dostarczone przez polecenie =netstat= i porównaj wynik z rezultatem działania polecenia =route=./
#+end_quote
Odpuszczę ponowne wykonywanie komendy =route= w tej sekcji, gdyż została wykonana w ~Zadanie 9~. Ograniczam wyjście komendy =netstat= poleceniem =head=, by nie zajęło za dużo miejsca. Domyślnie (bez parametrów) =netstat= zapewni wszystkie ustanowione połączenia zarówno dla gniazd sieciowych, jak i domenowych. Oznacza to, że zobaczymy nie tylko połączenia, które faktycznie działają w sieci, ale także komunikację międzyprocesową (która z punktu widzenia monitorowania bezpieczeństwa jest nieprzydatna).
#+begin_src shell :results output code :wrap src text
netstat | head -n30
#+end_src
Wynik:
#+RESULTS:
#+begin_src text
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 1 deb11-pc:48296 1.2.3.4:http SYN_SENT
tcp 0 198 deb11-pc:53370 193.37.214.12:6969 FIN_WAIT1
tcp 0 1 deb11-pc:48106 ns2.lelux.fi:https SYN_SENT
tcp 0 0 deb11-pc:38626 cerf-reverse.iris:https ESTABLISHED
tcp 0 356 deb11-pc:53394 193.37.214.12:6969 ESTABLISHED
tcp 0 1 deb11-pc:36084 117.84.132.126:2710 SYN_SENT
tcp 0 354 deb11-pc:53396 193.37.214.12:6969 ESTABLISHED
tcp 0 1 deb11-pc:48328 1.2.3.4:http SYN_SENT
tcp 0 0 deb11-pc:46444 172.67.131.114:https ESTABLISHED
tcp 0 0 deb11-pc:52100 lb-140-82-121-5-f:https ESTABLISHED
tcp 0 0 deb11-pc:42610 104.21.49.125:https ESTABLISHED
tcp 0 1 deb11-pc:48018 ns2.lelux.fi:http SYN_SENT
tcp 0 1 deb11-pc:48108 ns2.lelux.fi:https SYN_SENT
tcp 0 0 deb11-pc:53216 104.26.2.212:https TIME_WAIT
udp 0 0 deb11-pc:bootpc router.asus.com:bootps ESTABLISHED
udp 0 0 deb11-pc:54412 router.asus.com:5351 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 23126 /run/user/1000/systemd/notify
unix 2 [ ] DGRAM 24673 @/var/spool/exim4/exim_daemon_notify
unix 2 [ ] DGRAM 23215 /var/run/nvidia-xdriver-5fe01759
unix 3 [ ] DGRAM 12229 /run/systemd/notify
unix 2 [ ] DGRAM 12246 /run/systemd/journal/syslog
unix 19 [ ] DGRAM 12252 /run/systemd/journal/dev-log
unix 8 [ ] DGRAM 12254 /run/systemd/journal/socket
unix 2 [ ] DGRAM 12937 /var/lib/samba/private/msg.sock/1136
unix 2 [ ] DGRAM 668 /var/lib/samba/private/msg.sock/1440
unix 2 [ ] DGRAM 14974 /run/wpa_supplicant/wlp3s0
#+end_src
W danych wyjściowych =netstat= każdy wiersz reprezentuje port sieciowy TCP lub UDP, zgodnie z pierwszą kolumną danych wyjściowych. Kolumna Recv-Q (kolejka odbioru) zawiera liczbę bajtów odebranych przez jądro, ale nie odczytanych przez proces. Następnie kolumna Send-Q (kolejka wysyłania) informuje nas o liczbie bajtów wysłanych na drugą stronę połączenia, ale nie potwierdzonych.
Netstat wyświetla informacje o podsystemie sieciowym Linux. Jeżeli chcemy by wyjście choć trochę przypominało wyjście programu =route=, należy użyć flagi =-r, --route=.
Oraz route
#+begin_src shell :results output code :wrap src text
netstat -r
#+end_src
Wynik:
#+RESULTS:
#+begin_src text
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default router.asus.com 0.0.0.0 UG 0 0 0 wlp3s0
link-local 0.0.0.0 255.255.0.0 U 0 0 0 wlp3s0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 wlp3s0
#+end_src
Tutaj widzimy niewielką zmianę co do komendy =route=. W poprzednie pole ~Metric~, teraz pojawił się nagłówek ~MMS~ wraz z nowymi wartościami.
** Zadanie 12
#+begin_quote
/Korzystając z narzędzia =netstat= opisz aktywne połączenia protokołów TCP i UDP./
#+end_quote
Pozwolę sobie opisać aktywne połączenia protokołów TCP i UDP z poprzedniego zadania.
#+begin_src text
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 1 deb11-pc:48296 1.2.3.4:http SYN_SENT
tcp 0 198 deb11-pc:53370 193.37.214.12:6969 FIN_WAIT1
tcp 0 1 deb11-pc:48106 ns2.lelux.fi:https SYN_SENT
tcp 0 0 deb11-pc:38626 cerf-reverse.iris:https ESTABLISHED
tcp 0 356 deb11-pc:53394 193.37.214.12:6969 ESTABLISHED
tcp 0 1 deb11-pc:36084 117.84.132.126:2710 SYN_SENT
tcp 0 354 deb11-pc:53396 193.37.214.12:6969 ESTABLISHED
tcp 0 1 deb11-pc:48328 1.2.3.4:http SYN_SENT
tcp 0 0 deb11-pc:46444 172.67.131.114:https ESTABLISHED
tcp 0 0 deb11-pc:52100 lb-140-82-121-5-f:https ESTABLISHED
tcp 0 0 deb11-pc:42610 104.21.49.125:https ESTABLISHED
tcp 0 1 deb11-pc:48018 ns2.lelux.fi:http SYN_SENT
tcp 0 1 deb11-pc:48108 ns2.lelux.fi:https SYN_SENT
tcp 0 0 deb11-pc:53216 104.26.2.212:https TIME_WAIT
udp 0 0 deb11-pc:bootpc router.asus.com:bootps ESTABLISHED
udp 0 0 deb11-pc:54412 router.asus.com:5351 ESTABLISHED
#+end_src
gdzie:
- Kolumna /Local Adress/ zawiera nazwę hosta (z pliku =/etc/hostname=) i numer portu serwera. Mój serwer rozpoznaje się jako *deb11-pc*.
- Piąta kolumna, /Foreign Address/, identyfikuje drugą stronę połączenia.
- Szósta kolumna /State/ informuje nas o stanie połączenia. Obecne stany u mnie to: /ESTABLISHED/, /SYN SENT/ oraz /TIME WAIT/, gdzie:
+ /ESTABLISHED/ — nawiązywane jest połączenie między klientem a serwerem.
+ /SYN SENT/ - gniazdo aktywnie próbuje nawiązać połączenie
+ /TIME WAIT/ - gniazdo czeka po zamknięciu, aby obsłużyć pakiety nadal w sieci.
** Zadanie 13
#+begin_quote
/Korzystając z narzędzia =netstat -natp= sprawdź aktywne połączenia internetowe./
#+end_quote
Tak więc w poniższym poleceniu przedstawionym =netstat= jest proszony o:
+ =-a= - pokazanie wszystkich portów
+ =-t= - czy faktycznie są połączone i nasłuchują dla TCP
+ =-u= - czy faktycznie są połączone i nasłuchują dla UDP
+ =-n= - aby nie tracił czasu na przekształcanie adresów IP na nazwy hostów
#+begin_src shell :results output code :wrap src text
netstat -natp
#+end_src
Wynik:
#+RESULTS:
#+begin_src text
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:9091 0.0.0.0:* LISTEN 8290/transmission-d
tcp 0 0 0.0.0.0:51413 0.0.0.0:* LISTEN 8290/transmission-d
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN -
tcp 0 1 192.168.43.235:53440 184.105.151.166:6969 SYN_SENT 8290/transmission-d
tcp 0 0 192.168.43.235:41936 78.30.254.12:2710 ESTABLISHED 8290/transmission-d
tcp 0 1 192.168.43.235:41858 78.30.254.12:2710 SYN_SENT 8290/transmission-d
tcp 0 1 192.168.43.235:53405 82.39.105.203:59481 SYN_SENT 8290/transmission-d
tcp 0 1 192.168.43.235:40068 186.10.181.160:1337 SYN_SENT 8290/transmission-d
tcp 0 1 192.168.43.235:50214 156.234.201.18:80 SYN_SENT 8290/transmission-d
tcp 0 0 192.168.43.235:38349 45.151.107.46:33140 ESTABLISHED 8290/transmission-d
tcp 0 1 192.168.43.235:46041 192.109.205.9:26774 SYN_SENT 8290/transmission-d
tcp 0 1 192.168.43.235:41902 78.30.254.12:2710 SYN_SENT 8290/transmission-d
tcp 0 1 192.168.43.235:44048 208.83.20.20:6969 SYN_SENT 8290/transmission-d
tcp 0 1 192.168.43.235:52682 51.81.46.170:6969 SYN_SENT 8290/transmission-d
tcp 0 1 192.168.43.235:55935 213.110.227.245:49486 SYN_SENT 8290/transmission-d
tcp 0 0 192.168.43.235:35372 157.90.169.123:80 CLOSE_WAIT 8290/transmission-d
tcp 0 0 192.168.43.235:54698 217.30.10.54:6969 CLOSE_WAIT 8290/transmission-d
tcp 0 1 192.168.43.235:32874 107.152.127.9:6969 LAST_ACK -
tcp 0 1 192.168.43.235:40042 186.10.181.160:1337 SYN_SENT 8290/transmission-d
tcp 0 1 192.168.43.235:33939 109.191.130.168:59101 SYN_SENT 8290/transmission-d
tcp 0 1 192.168.43.235:52772 51.81.46.170:6969 SYN_SENT 8290/transmission-d
tcp 0 1 192.168.43.235:51256 208.87.135.55:2052 SYN_SENT 8290/transmission-d
tcp 0 1 192.168.43.235:43437 83.9.132.8:51413 SYN_SENT 8290/transmission-d
tcp 0 0 192.168.43.235:56364 51.15.55.204:1337 CLOSE_WAIT 8290/transmission-d
tcp 0 613 192.168.43.235:50240 156.234.201.18:80 ESTABLISHED 8290/transmission-d
tcp 0 1652 192.168.43.235:50280 156.234.201.18:80 ESTABLISHED 8290/transmission-d
tcp 0 0 192.168.43.235:51982 93.158.213.92:1337 CLOSE_WAIT 8290/transmission-d
tcp 0 1 192.168.43.235:51296 208.87.135.55:2052 SYN_SENT 8290/transmission-d
tcp 0 1 192.168.43.235:41079 213.127.78.252:10373 SYN_SENT 8290/transmission-d
tcp 0 1 192.168.43.235:53480 184.105.151.166:6969 SYN_SENT 8290/transmission-d
tcp 0 1 192.168.43.235:47155 172.16.1.0:51413 SYN_SENT 8290/transmission-d
tcp 0 1 192.168.43.235:39994 186.10.181.160:1337 SYN_SENT 8290/transmission-d
tcp 0 1 192.168.43.235:52716 51.81.46.170:6969 SYN_SENT 8290/transmission-d
tcp 0 0 192.168.43.235:46744 65.21.48.148:6969 CLOSE_WAIT 8290/transmission-d
tcp 0 1 192.168.43.235:55423 162.158.103.199:51413 SYN_SENT 8290/transmission-d
tcp6 0 0 :::51413 :::* LISTEN 8290/transmission-d
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 ::1:631 :::* LISTEN -
tcp6 0 0 ::1:25 :::* LISTEN -
tcp6 0 1 2a00:f41:81d:fbb3:44460 2400:8907::f03c:92:2052 SYN_SENT 8290/transmission-d
tcp6 0 0 2a00:f41:81d:fbb3:47238 2606:4700:3039::6815:80 ESTABLISHED 8290/transmission-d
tcp6 0 1 2a00:f41:81d:fbb3:46324 2001:470:1:189:0:1:6969 SYN_SENT 8290/transmission-d
tcp6 0 0 2a00:f41:81d:fbb3:43512 2606:4700:3036::681:443 ESTABLISHED 8290/transmission-d
tcp6 0 0 2a00:f41:81d:fbb3:40260 2a04:ac00:1:3dd8:::2710 CLOSE_WAIT 8290/transmission-d
tcp6 0 1 2a00:f41:81d:fbb3:57940 2607:f178:0:32::3:6969 SYN_SENT 8290/transmission-d
tcp6 0 1 2a00:f41:81d:fbb3:35933 2a01:e0a:27:4b0:a:19774 SYN_SENT 8290/transmission-d
tcp6 0 1 2a00:f41:81d:fbb3:44484 2400:8907::f03c:92:2052 SYN_SENT 8290/transmission-d
tcp6 0 0 2a00:f41:81d:fbb3:53696 2a01:e0a:3c3:ede0::6969 CLOSE_WAIT 8290/transmission-d
tcp6 0 1 2a00:f41:81d:fbb3:46298 2001:470:1:189:0:1:6969 SYN_SENT 8290/transmission-d
tcp6 0 1 2a00:f41:81d:fbb3:38151 2a00:f41:82e:3587:51413 SYN_SENT 8290/transmission-d
#+end_src
Kolumna /Local Address/ zawiera tym razem adres IP i numer portu serwera. Mój server serwer rozpoznaje się jako 127.0.0.1 i 0.0.0.0, a także mój normalny adres IP. W przypadku wielu interfejsów każdy nasłuchiwany port pojawi się na wszystkich interfejsach, a zatem jako oddzielne adresy IP. Numer portu jest oddzielony od adresu IP dwukropkiem. W danych wyjściowych pokazanego właśnie przykładu netstat urządzenie Ethernet ma adres IP ~192.168.43.235~. W przypadku portu, który jest nasłuchiwany dla nowych połączeń, wartością domyślną kolumny /Foreign Adress/ będzie ~0.0.0.0:*~. Ten adres IP nic nie znaczy, ponieważ wciąż czekamy, aż zdalny host połączy się z nami.\\\\
Obecne wartości kolumny /State/:
+ /LISTEN/ — nawiązywane jest połączenie między klientem a serwerem
+ /CLOSE WAIT/ — zdalny koniec wyłączył się, czekając na zamknięcie gniazda
Kolumna /PID/Program/ tak jak sama mówi, wyświetla PID programu, oraz jego nazwę. Program =transmission-daemon=, jest klientem prtokołu peer-to-peer =bittorrent=, służącym do wymiany plików poprzez sieć.
** Zadanie 14
#+begin_quote
/Korzystając z narzędzia =tracepath= spróbuj prześledzić trasę pakietów do wybranego komputera w Internecie./
#+end_quote
Po pierwsze, musiałem zainstalować pakiet =iputils-tracepath= (taką pakiet nosi nazwę na dystrybucji =Debian 11=), by móc używać polecenia. Komenda śledzi ścieżkę sieciową do miejsca docelowego, wykrywając jednostkę MTU wzdłuż tej ścieżki. Używa portu UDP lub innego losowego. Jego działanie jest podobne do polecenia =traceroute=. Nie wymaga jednak uprawnień superużytkownika i nie ma żadnych wymyślnych opcji. =tracepath -6= także moży być zamiennikiem =traceroute6=.
#+begin_src shell :results output code :wrap src text
tracepath 8.8.8.8
#+end_src
Wynik:
#+RESULTS:
#+begin_src text
1?: [LOCALHOST] pmtu 1500
1: _gateway 3.952ms
1: _gateway 2.686ms
2: _gateway 2.478ms pmtu 1472
2: 255.0.0.0 27.403ms
3: no reply
4: 255.0.0.2 46.581ms
5: 255.0.0.3 28.978ms
6: 255.0.0.4 32.526ms
7: no reply
8: dns.google 34.137ms asymm 9
9: dns.google 40.337ms
10: dns.google 46.694ms asymm 14
11: no reply
12: no reply
13: no reply
14: no reply
15: no reply
16: no reply
17: no reply
18: no reply
19: no reply
20: no reply
21: no reply
22: no reply
23: no reply
24: no reply
25: no reply
26: no reply
27: no reply
28: no reply
29: no reply
30: no reply
Too many hops: pmtu 1472
Resume: pmtu 1472
#+end_src
Pierwsza kolumna pokazuje TTL sondy, a następnie dwukropek. Druga kolumna pokazuje przeskok sieci, który odpowiedział na sondę. W moim przypadku jest to /[LOCALHOST]/. Ostatnia kolumna wyświetla czas w jakim otrzymała odpowiedź. Linie niżej pokazują różne informacje o ścieżce do odpowiedniego przeskoku. Ostatni wiersz podsumowuje informacje o całej ścieżce do miejsca docelowego, pokazuje wykryte MTU ścieżki, ilość przeskoków do miejsca docelowego i nasze przypuszczenia dotyczące liczby przeskoków od miejsca docelowego do nas, które mogą być różne, gdy ścieżka jest asymetryczna.