Preskoči na sadržaj

Osnovni alati za analizu računalne mreže

Svi alati koje opisujemo ovdje pokreću se u ljusci, a rade jednako dobro na stvarnim i na emuliranim čvorovima.

Alat ping

ping je osnovni alat za slanje ICMP ECHO_REQUEST domaćinima na mreži. Koristimo ga kada želimo provjeriti je li neki domaćin/gateway dostupan na mreži.

Ping je vrlo jednostavno za koristiti. Najjednostavniji oblik korištenja je korištenje bez dodatnih parametara. Ako je domaćin dostupan, te ako se paketi mogu slati bez poteškoća, dobiti ćemo povratnu informaciju o uspješnosti, te informaciju o tome kako nema izgubljenih paketa ("0% packet loss").

Ukoliko želimo provjeriti je li domaćin example dostupan na mreži group.miletic.net jednostavno iza naredbe pišemo ime domaćina i mrežu kojoj pripada:

$ ping example.group.miletic.net
PING example.group.miletic.net (193.198.209.42) 56(84) bytes of data.
64 bytes from 193.198.209.42: icmp_seq=1 ttl=56 time=3.48 ms
64 bytes from 193.198.209.42: icmp_seq=2 ttl=56 time=3.44 ms
64 bytes from 193.198.209.42: icmp_seq=3 ttl=56 time=3.49 ms
64 bytes from 193.198.209.42: icmp_seq=4 ttl=56 time=3.49 ms
64 bytes from 193.198.209.42: icmp_seq=5 ttl=56 time=3.46 ms
^C
--- example.group.miletic.net ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 3.445/3.476/3.497/0.077 ms

Ping bez dodatnih argumenata šalje ICMP zahtjeve u beskonačnost, pa je slanje nužno prekinuti kombinacijom tipki Ctrl+C.

Ukoliko je potrebno, umjesto imena domaćina možemo pisati njegovu IP adresu:

$ ping 193.198.209.42
PING 193.198.209.42 (193.198.209.42) 56(84) bytes of data.
64 bytes from 193.198.209.42: icmp_seq=1 ttl=56 time=3.48 ms
64 bytes from 193.198.209.42: icmp_seq=2 ttl=56 time=3.61 ms
64 bytes from 193.198.209.42: icmp_seq=3 ttl=56 time=4.13 ms
^C
--- 193.198.209.42 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 3.488/3.746/4.135/0.288 ms

Uvođenjem dodatnih parametara, možemo manipulirati načinom i učestalosti slanja ICMP zahtjeva. Parametre možemo međusobno kombinirati, osim u slučajevima kada to izaziva kontradikciju.

Za slanje u određenom intervalu (svakih n sekundi), koristimo parametar -i, te broj sekundi. Ping bez argumenata zahtjev šalje u intervalima od 1 sekunde. Moguće je smanjiti taj interval, npr. na pola sekunde:

$ ping -i 0.5 example.group.miletic.net

Želimo li poslati određen broj zahtjeva (umjesto da sami prekidamo slanje kombinacijom tipki Ctrl+C), koristimo parametar -c i broj paketa. Primjerice, ako želimo poslati 3 zahtjeva:

$ ping -c 3 example.group.miletic.net
PING example.group.miletic.net (193.198.209.42) 56(84) bytes of data.
64 bytes from 193.198.209.42: icmp_seq=1 ttl=56 time=3.82 ms
64 bytes from 193.198.209.42: icmp_seq=2 ttl=56 time=3.45 ms
64 bytes from 193.198.209.42: icmp_seq=3 ttl=56 time=6.35 ms

--- example.group.miletic.net ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 3.454/4.545/6.354/1.290 ms

Također, parametrom -w možemo odrediti ukupno vrijeme u kojem želimo da se zahtjevi šalju. Nakon određenog broja sekundi slanje se prekida (u našem primjeru 3 sekunde).

$ ping -w 3 example.group.miletic.net

Ako ne želimo vidjeti informacije o svakom poslanom zahtjevu posebno, možemo uključiti 'tihi' način rada parametrom -q; u tom slučaju prikazat će se samo završni izvještaj.

$ ping -q -c 10 example.group.miletic.net
PING example.group.miletic.net (193.198.209.42) 56(84) bytes of data.

--- example.group.miletic.net ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9014ms
rtt min/avg/max/mdev = 3.472/3.931/5.105/0.540 ms

Parametrom -s možemo mijenjati veličinu paketa kojeg šaljemo. Zadana veličina paketa je 56 bajta. Veličini koju odredimo se dodaje još 28 byteova, zbog veličine zaglavlja paketa (u nastavku kolegija naučit ćemo zašto baš 28 bajta). U primjeru šaljemo pakete čije je tijelo veličine 200 bajta, što zajedno sa zaglavljem čini ukupno 228 bajta.

$ ping -s 200 example.group.miletic.net
PING example.group.miletic.net (193.198.209.42) 200(228) bytes of data.
208 bytes from 193.198.209.42: icmp_seq=1 ttl=56 time=3.49 ms
208 bytes from 193.198.209.42: icmp_seq=2 ttl=56 time=3.75 ms
^C
--- example.group.miletic.net ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 3.493/3.626/3.759/0.133 ms

Pregled parametara za alat ping:

  • -i : slanje paketa u određenom vremenskom intervalu
  • -c : slanje određenog broja paketa
  • -w : određivanje timeouta
  • -q : tihi način rada
  • -s : mijenjanje veličine paketa za slanje

Za informacije o ostalim mogućnostima proučite man ping.

Alati traceroute i tracepath

Alati traceroute i tracepath prate putanju kretanja paketa od slanja do odredišta. Iako postoje netrivijalne razlike između alata traceroute i tracepath, za naše potrebe oni su jednako dobri. U nastavku opisujemo korištenje naredbe tracepath; traceroute se koristi na vrlo sličan način.

tracepath koristimo navođenjem imena ili IP adrese čvora u mreži. Primjerice, želimo li pratiti putanju kretanja paketa s privatnog domaćina (T-Com ISP) do poslužitelja example:

$ tracepath example.group.miletic.net
 1:  host.lan                                         0.191ms pmtu 1500
 1:  dsldevice.lan                                        84.268ms
 1:  dsldevice.lan                                        95.075ms
 2:  dsldevice.lan                                        98.775ms pmtu 1492
 2:  no reply
 3:  172.29.49.245                                        56.365ms
 4:  gtr11-hdr01.ip.t-com.hr                              53.908ms
 5:  193.192.15.65                                        80.398ms
 6:  CN-Srce-03-RO.core.carnet.hr                         59.637ms asymm 12
 7:  CN-Riteh-01-RO.core.carnet.hr                        66.910ms asymm 12
 8:  CN-Riteh.01-ES.core.carnet.hr                        67.485ms
 9:  kbf03-ro.access.carnet.hr                            72.179ms
10:  example.group.miletic.net                                        78.724ms
11:  example.group.miletic.net                                        82.123ms reached
     Resume: pmtu 1492 hops 11 back 54

Ukoliko želimo vidjeti putanju kretanja isključivo po IP adresama, koristimo parametar -n:

$ tracepath -n example.group.miletic.net
 1:  192.168.1.2                                           0.209ms pmtu 1500
 1:  192.168.1.1                                          14.326ms
 1:  192.168.1.1                                         300.088ms
 2:  192.168.1.1                                         217.613ms pmtu 1492
 2:  no reply
 3:  172.29.49.245                                        54.245ms
 4:  195.29.240.210                                       66.783ms
 5:  193.192.15.65                                        58.056ms
 6:  193.198.228.154                                      57.958ms asymm 12
 7:  193.198.237.54                                       56.744ms asymm 12
 8:  193.198.235.2                                        56.589ms
 9:  193.198.235.174                                      57.391ms
10:  161.53.45.42                                         58.736ms
11:  161.53.45.42                                         60.637ms reached
     Resume: pmtu 1492 hops 11 back 54

Također, ako želimo vidjeti ispis i imena domaćina/gatewaya i njihovih IP adresa, koristimo parametar -b:

$ tracepath -b example.group.miletic.net

Pregled parametara za alat tracepath:

  • -n : pregled putanje po IP adresama
  • -b : pregled putanje po IP adresama i nazivima domaćina

Za informacije o ostali parametrima proučite man tracepath (ili man traceroute).

Alat netstat

Alat netstat pruža nam raznolike informacije o konfiguraciji i aktivnostima na mreži.

Kako bi vidjeli informacije i statistike vezane uz pojednino mrežno sučelje na našem računalu, koristimo parametar -i:

$ netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500 0         0      0      0 0             0      0      0      0 BMU
lo        16436 0       931      0      0 0           931      0      0      0 LRU
wlan0      1500 0   1074438      0      0 0       1000130      0      0      0 BMRU

U ovoj tablici stupci koje možemo sa sadašnjim znanjem čitati su redom:

  • Iface: ime mrežnog sučelja (eth* su obično Ethernet mrežne kartice, wlan* su WiFi mrežne kartice)
  • RX*: informacije o primljenim paketima
  • TX*: informacije o poslanim paketima

Ukoliko želimo detaljniji prikaz informacija o sučeljima, potrebno je nadodati parametar -e:

$ netstat -ie
Kernel Interface table
eth0      Link encap:Ethernet  HWaddr 00:26:9e:78:3e:36
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:30 Base address:0xc000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:946 errors:0 dropped:0 overruns:0 frame:0
          TX packets:946 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:55873 (54.5 KiB)  TX bytes:55873 (54.5 KiB)

wlan0     Link encap:Ethernet  HWaddr 00:24:d6:0b:61:26
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::224:d6ff:fe0b:6126/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1074857 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1000600 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:383343384 (365.5 MiB)  TX bytes:143158985 (136.5 MiB)

Za prikaz routing tablice, koristimo parametar -r:

$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     *               255.255.255.0   U         0 0          0 wlan0
link-local      *               255.255.0.0     U         0 0          0 wlan0
default         dsldevice.lan   0.0.0.0         UG        0 0          0 wlan0

Dodamo li i parametar -n, dobit ćemo prikaz IP adresa umjesto imena domaćina i mreža:

$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     *               255.255.255.0   U         0 0          0 wlan0
192.168.0.0     *               255.255.0.0     U         0 0          0 wlan0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0

Parametrom -t možemo pregledati aktivne TCP konekcije (otvorene utičnice). Dodatkom parametra -a (all), prikazujemo i poslužitelje:

$ netstat -ta
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:http                  *:*                     LISTEN
tcp        0      0 *:domain                *:*                     LISTEN
tcp        0      0 *:ssh                   *:*                     LISTEN
tcp        0      0 localhost:postgres      *:*                     LISTEN
tcp        0      0 *:smtp                  *:*                     LISTEN
tcp        0      0 *:https                 *:*                     LISTEN
tcp        0      0 10.11.22.238:49921      93.152.160.101:6697     ESTABLISHED
tcp        0      0 10.11.22.238:48270      HUBBARD.CLUB.CC.CM:6697 ESTABLISHED
tcp        0    368 10.11.22.238:ssh        78-2-77-250.adsl.:54528 ESTABLISHED
tcp6       0      0 [::]:domain             [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 [::]:ipp                [::]:*                  LISTEN
tcp6       0      0 localhost:postgres      [::]:*                  LISTEN

Također, moguće je vidjeti i UDP konekcije (otvorene utičnice), parametrom -u:

$ netstat -ua
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
udp        0      0 *:domain                *:*
udp        0      0 10.11.22.238:ntp        *:*
udp        0      0 localhost:ntp           *:*
udp        0      0 *:ntp                   *:*
udp        0      0 *:38069                 *:*
udp        0      0 *:mdns                  *:*
udp        0      0 *:ipp                   *:*
udp6       0      0 [::]:domain             [::]:*
udp6       0      0 fe80::218:f3ff:fe6c:ntp [::]:*
udp6       0      0 localhost:ntp           [::]:*
udp6       0      0 [::]:ntp                [::]:*
udp6       0      0 localhost:58156         localhost:58156         ESTABLISHED

Za detaljan prikaz svih otvorenih utičnica, koristimo kombinaciju parametara -utae:

$ netstat -utae
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode
tcp        0      0 *:http                  *:*                     LISTEN      root       14299
tcp        0      0 *:domain                *:*                     LISTEN      root       13609
tcp        0      0 *:ssh                   *:*                     LISTEN      root       14062
tcp        0      0 localhost:postgres      *:*                     LISTEN      postgres   15239
tcp        0      0 *:smtp                  *:*                     LISTEN      root       14435
tcp        0      0 *:https                 *:*                     LISTEN      root       14306
tcp        0      0 10.11.22.238:49921      93.152.160.101:6697     ESTABLISHED lukav      18851
tcp        0      0 10.11.22.238:48270      HUBBARD.CLUB.CC.CM:6697 ESTABLISHED vedranm    68450
tcp        0    384 10.11.22.238:ssh        78-2-77-250.adsl.:54528 ESTABLISHED root       202243
tcp6       0      0 [::]:domain             [::]:*                  LISTEN      root       13611
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      root       14070
tcp6       0      0 [::]:ipp                [::]:*                  LISTEN      root       11021
tcp6       0      0 localhost:postgres      [::]:*                  LISTEN      postgres   15238
udp        0      0 *:domain                *:*                                 root       13608
udp        0      0 10.11.22.238:ntp        *:*                                 ntp        14078
udp        0      0 localhost:ntp           *:*                                 root       12545
udp        0      0 *:ntp                   *:*                                 root       12406
udp        0      0 *:38069                 *:*                                 avahi      12946
udp        0      0 *:mdns                  *:*                                 avahi      12945
udp        0      0 *:ipp                   *:*                                 root       11022
udp6       0      0 [::]:domain             [::]:*                              root       13610
udp6       0      0 fe80::218:f3ff:fe6c:ntp [::]:*                              ntp        14079
udp6       0      0 localhost:ntp           [::]:*                              root       12546
udp6       0      0 [::]:ntp                [::]:*                              root       12407
udp6       0      0 localhost:58156         localhost:58156         ESTABLISHED postgres   15246

Otvorene utičnice možemo parametrom -l filtrirati samo na one koje slušaju, tj. na one koje su u stanju LISTEN:

$ netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:http                  *:*                     LISTEN
tcp        0      0 *:domain                *:*                     LISTEN
tcp        0      0 *:ssh                   *:*                     LISTEN
tcp        0      0 localhost:postgres      *:*                     LISTEN
tcp        0      0 *:smtp                  *:*                     LISTEN
tcp        0      0 *:https                 *:*                     LISTEN
tcp6       0      0 [::]:domain             [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 [::]:ipp                [::]:*                  LISTEN
tcp6       0      0 localhost:postgres      [::]:*                  LISTEN
udp        0      0 *:domain                *:*
udp        0      0 10.11.22.238:ntp        *:*
udp        0      0 localhost:ntp           *:*
udp        0      0 *:ntp                   *:*
udp        0      0 *:38069                 *:*
udp        0      0 *:mdns                  *:*
udp        0      0 *:ipp                   *:*
udp6       0      0 [::]:domain             [::]:*
udp6       0      0 fe80::218:f3ff:fe6c:ntp [::]:*
udp6       0      0 localhost:ntp           [::]:*
udp6       0      0 [::]:ntp                [::]:*
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     14510    private/error
unix  2      [ ACC ]     STREAM     LISTENING     11017    /var/run/cups/cups.sock
unix  2      [ ACC ]     STREAM     LISTENING     14513    private/retry
unix  2      [ ACC ]     STREAM     LISTENING     15240    /tmp/.s.PGSQL.5432
unix  2      [ ACC ]     STREAM     LISTENING     12302    /var/run/acpid.socket
unix  2      [ ACC ]     STREAM     LISTENING     11029    /var/run/avahi-daemon/socket
unix  2      [ ACC ]     STREAM     LISTENING     18721    /var/run/screen/S-lukav/1998.pts-0.ares
unix  2      [ ACC ]     STREAM     LISTENING     11041    /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     14472    private/defer
unix  2      [ ACC ]     STREAM     LISTENING     14516    private/discard
unix  2      [ ACC ]     STREAM     LISTENING     14466    private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     14443    public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     7494     /run/systemd/private
unix  2      [ ACC ]     STREAM     LISTENING     14478    private/verify
unix  2      [ ACC ]     STREAM     LISTENING     14475    private/trace
unix  2      [ ACC ]     STREAM     LISTENING     14451    /var/run/wsgi.729.0.1.sock
unix  2      [ ACC ]     STREAM     LISTENING     14519    private/local
unix  2      [ ACC ]     STREAM     LISTENING     14525    private/lmtp
unix  2      [ ACC ]     STREAM     LISTENING     14458    /var/run/wsgi.729.0.2.sock
unix  2      [ ACC ]     STREAM     LISTENING     14467    /var/run/wsgi.729.0.3.sock
unix  2      [ ACC ]     SEQPACKET  LISTENING     7563     /run/udev/control

Parametrom -s prikazuje se skup statistika za pojedine protokole:

$ netstat -s
Ip:
    228437 total packets received
    8393 with invalid addresses
    0 forwarded
    ...
Icmp:
    188 ICMP messages received
    0 input ICMP message failed.
    ...
IcmpMsg:
        InType3: 38
        InType8: 99
        InType13: 51
        OutType0: 99
        OutType3: 12
        OutType14: 51
Tcp:
    688 active connections openings
    4374 passive connection openings
    8 failed connection attempts
    ...
Udp:
    4932 packets received
    12 packets to unknown port received.
    0 packet receive errors
    ...
TcpExt:
    4 invalid SYN cookies received
    8 resets received for embryonic SYN_RECV sockets
    2191 TCP sockets finished time wait in fast timer
    ...
IpExt:
    InMcastPkts: 504
    OutMcastPkts: 23
    InBcastPkts: 21972
    ...

Pregled parametara za alat netstat:

  • -i : ispis informacija o mrežnim sučeljima
  • -e : detaljniji ispis
  • -r : prikaz routing tablice
  • -n : prikaz IP adresa umjesto imena domaćina i mreža
  • -t : pregled tcp konekcija (utičnica)
  • -u : pregled udp konekcija (utičnica)
  • -a : prikaz svih (poslužiteljskih) konekcija
  • -l : filtriranje utičnica u stanju slušanja
  • -s : prikaz statistika za pojedine protokole

Za više informacija proučite man netstat.

Dodatak: alat clockdiff

Alatom clockdiff možemo mjeriti satnu razliku između domaćina na mreži, koristeći ICMP TIMESTAMP pakete. clockdiff koristimo navođenjem imena ili IP adrese domaćina.

$ clockdiff example.group.miletic.net
...................................................
host=example.group.miletic.net rtt=15(0)ms/15ms delta=-2844ms/-2843ms Wed Jun 13 20:21:57 2012

Za informacije o ostalim parametrima proučite man clockdiff.

Dodatak: alat arping

arping je alat za slanje ARP REQUEST susjedinim domaćinima na mreži. arping koristimo navođenjem mrežnog sučelja (parametrom -I), te IP adrese domaćina kojem želimo poslati ARP zahtjev.

Warning

Alat arping zahtijeva administratorske privilegije, odnosno dostupan je samo root korisniku.

Primjerice, želimo li poslati ARP zahtjev domaćinu na adresi 192.168.1.4 s mrežnog sučelja wlan0, radimo to na idući način:

# arping -I wlan0 192.168.1.4
ARPING 192.168.1.4 from 192.168.1.2 wlan0
Unicast reply from 192.168.1.4 [00:0F:EA:54:B7:2C]  2.306ms
Unicast reply from 192.168.1.4 [00:0F:EA:54:B7:2C]  1.591ms
Unicast reply from 192.168.1.4 [00:0F:EA:54:B7:2C]  1.568ms
^CSent 3 probes (1 broadcast(s))
Received 3 response(s)

Parametrom -c određujemo količinu poslanih ARP zahtjeva. Nakon određenog broj poslanih zahtjeva, slanje se prekida:

# arping -c 3 -I wlan0 192.168.1.4
ARPING 192.168.1.4 from 192.168.1.2 wlan0
Unicast reply from 192.168.1.4 [00:0F:EA:54:B7:2C]  2.176ms
Unicast reply from 192.168.1.4 [00:0F:EA:54:B7:2C]  1.476ms
Unicast reply from 192.168.1.4 [00:0F:EA:54:B7:2C]  2.026ms
Sent 3 probes (1 broadcast(s))
Received 3 response(s)

Pregled parametara za alat arping:

  • -I : određivanje mrežnog sučelja
  • -c : slanje određenog broja paketa

Za više informacija o dostupnoj funkcionalnosti proučite man arping.

Author: Domagoj Margan, Vedran Miletić