Narzędzia diagnostyczne w sieciach komputerowych

  1. Diagnostyka i konfiguracja IP - ifconfig

    • Wyświetlenie informacji o wszystkich interfejsach. Przykład:
      test:~# ifconfig
      eth0	Link encap:Ethernet  HWaddr 00:0c:29:03:06:66
      	inet addr:150.254.78.79  Bcast:150.254.78.127  Mask:255.255.255.192
      	inet6 addr: fe80::20c:29ff:fe03:666/64 Scope:Link
      	UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      	RX packets:7593513 errors:0 dropped:0 overruns:0 frame:0
      	TX packets:6300754 errors:0 dropped:0 overruns:0 carrier:0
      	collisions:0 txqueuelen:1000
      	RX bytes:1446276715 (1.3 GiB)  TX bytes:5959993848 (5.5 GiB)
      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:278481 errors:0 dropped:0 overruns:0 frame:0
      	TX packets:278481 errors:0 dropped:0 overruns:0 carrier:0
      	collisions:0 txqueuelen:0
      	RX bytes:31698593 (30.2 MiB)  TX bytes:31698593 (30.2 MiB)
      test:~#
      
    • Konfiguracja dla interfejsu sieciowego eth0 adresu IP 192.168.0.1 z maską sieci 255.255.255.0 adresem broadcast 192.168.0.255 oraz podniesiecie interfejsu (tzn. włączenie go):
      ifconfig eth0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255 up
      
    • Ustawienie rozmiaru ramki ethernetowe na 700bajtów.
      ifconfig eth0 mtu 700
      
    • Włączenie trybu promisc (odbieranie wszystkich ramek ethernet - bez względu czy adres MAC odbiorcy jest równy adresowi MAC interfejsu):
      ifconfig eth0 promisc 
      
    • Wyłączenie i włączenie interfejsu sieciowego:
      ifconfig eth0 down
      ifconfig eth0 up
      
  2. Diagnostyka i konfiguracja IP - ip link

    • Wyświetlenie informacji o interfejsach - "ip link show" (lub też "ip l ls"):
      test:~# ip l sh
      1: lo:  mtu 16436 qdisc noqueue state UNKNOWN
      	link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
      2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
      	link/ether 00:0c:29:03:06:66 brd ff:ff:ff:ff:ff:ff
      
      oraz wyświetlenie tych informacji wraz ze statystykami:
      test:~# ip -s l sh
      1: lo:  mtu 16436 qdisc noqueue state UNKNOWN
      	link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
      	RX: bytes  packets  errors  dropped overrun mcast
      	31701779   278508   0       0       0       0
      	TX: bytes  packets  errors  dropped carrier collsns
      	31701779   278508   0       0       0       0
      2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
      	link/ether 00:0c:29:03:06:66 brd ff:ff:ff:ff:ff:ff
      	RX: bytes  packets  errors  dropped overrun mcast
      	1446447395 7595405  0       0       0       0
      	TX: bytes  packets  errors  dropped carrier collsns
      	1666456696 6302221  0       0       0       0
      
    • Konfiguracja interfejsów - "ip link set" (lub też "ip l s"), możliwe opcje:
      dev NAME 	- konfiguracja dotyczy interfejsu o nazwie NAMe
      up/down 	- włącza/wyłącza interfejs
      arp ON/OFF 	- znacznik informujący czy interfejs wie jak rozwiązywać ARP bez 
      		  konieczności wysyłania zapytań
      multicast ON/OFF - znacznik informujący czy interfejs pozwala na pakiety multicast
      dynamic ON/OFF 	- znacznik pomocniczy oznaczający czy interfejs został utworzony 
      		  dynamicznie
      name NAME 	- zmiana nazwy interfejsu
      mtu NUMBER 	- ustawia parametr MTU dla interfejsu
      address LLADDRESS - zmienia adres MAC interfejsu
      broadcast LLADDRESS - ustawia adres broadcast interfejsu 
      promisc ON/OFF 	- nasłuchiwanie wszystkich ramek niezależnie od adresu odbiorcy
      
      Przykłady:
    • Ustawienie MTU dla interfejsu eth0:
      test:~# ip l s dev eth0 mtu 1300
      
    • Wyłącznie znacznika MULTICAST:
      test:~# ip l s dev eth0 multicast off
      
    • Włączenie trybu promisc:
      test:~# ip l s dev eth0 promisc on
      
    • Ustawianie VLAN 1234 do nowego interfejsu eth0.1234:
      ip link add link eth0 name eth0.1234 type vlan id 1234
      
  3. Diagnostyka i konfiguracja IP - ip a

    • Wyświetlanie informacji o adresach IP - "ip addr show" ("ip a s", "ip a"):
      ip a show dev DEVNAME FLAGA label LABNAME
      
      DEVNAME - nazwa urządzenia 
      LABNAME - nazwa interfejsu
      
      FLAGA:
      permanent - adres statyczny, ustawiony ręcznie lub przez DHCPv6 
      dynamic - adres ustawiony dynamicznie, 
      secondary - adres wtórny - interfejs może mieć więcej niż jeden przypisany 
      primary - adres podstawowy  - interfejs ma jeden adres podstawowy
      tentative - adres próbny, ustawiony przed weryfikacją duplikatów (IPv6)
      deprecated - adres przestarzały - występuje (IPv6)
      dadfailed - nie pomyślna weryfikacji duplikatów (IPv6)
      temporary - adres tymczasowy (IPv6)
      
      test:~# ip a
      1: lo:  mtu 16436 qdisc noqueue state UNKNOWN
      	link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
      	inet 127.0.0.1/8 scope host lo
      	inet6 ::1/128 scope host
      	  valid_lft forever preferred_lft forever
      2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
      	link/ether 00:0c:29:03:06:66 brd ff:ff:ff:ff:ff:ff
      	inet 150.254.78.79/26 brd 150.254.78.127 scope global eth0
      	inet6 fe80::20c:29ff:fe03:666/64 scope link
        	  valid_lft forever preferred_lft forever
      test:~#
      
    • Konfiguracja adresu IP - "ip addr add"
    • Opcje konfiguracyjne:
      ip a a IPADDRESS dev NAME  broadcast BRADDRESS label NAME scope SCOPE_VALUE label LABNAME
      IPADDRESS - adres interfejsu z maską sieci, np. 192.168.0.1/25 (maska 25=255.255.255.128)
      BRADDRESS - adres broadcast np. 192.168.0.127
      SCOPE_VALUE - zasięg:
        global - adres jest poprawny wszędzie 
        host - adres jest poprawny w obrębie hosta (np. 127.0.0.1)
        link - adres jest poprawny w obrębie warstwy fizycznej (tylko IPv6)
        site - adres jest poprawny w obrębie miejsca (tylko IPv6)
      LABNAME - nazwa interfejsu
      
      Dodawanie adresu IP wraz z opcjami
      test:~# ip a a local 192.168.0.123/24 dev eth0 
      test:~# ip a a 192.168.0.123/24 dev eth0 
      
      Dodanie nowego IP i nowej etykiety interfejsu eth0, dodanie adresu broadcast do interfejsu
      test:~# ip a a 192.168.0.123/24 dev eth0 label eth0 
      test:~# ip a a 192.168.0.133/24 dev eth0 label eth0:1 
      
      Dodanie adresu broadcast do interfejsu eth0:
      test:~# ip a a 192.168.0.123/24 dev eth0 broadcast 192.168.0.255 label eth0
      
      Dodanie adresu broadcast do interfejsu eth0:
      test:~# ip a a 192.168.0.123/24 dev eth0 broadcast 192.168.0.255 label eth0
      
      test:~# ip a a 192.168.0.123/24 dev eth0 scope global
      
    • Usuwanie adresu IP - ip addr delete ("ip a d", "ip a del")
      test:~# ip a d 192.168.0.1/25 dev eth0
      
    • Czyszczenie wpisów - "ip addr flush" Wyczyszczenie adresów IPv4 dla interfejsów o nazwie zaczynającej sie od "eth":
      test:~# ip -4 a flush label eth*
      
  4. Diagnostyka IP - ICMP

  5. Protokół IP jest warstwa transportową dla danych przesyłanych przez datagramy UDP, pakiety TCP, lecz również dla protkołu kontroli transmisji ICMP - Internet Control Message Protocol. Protokół ICMP pomaga diagnozować problemy warstwy IP.
    Najrpostszą formą wykorzystania protokłu jest ping, tj. wysłanie wiadomości "ICMP ECHO REQUEST" do konkretnego adresu. Jeśli pod tym adresem znajduje się działający inny komputer, który nie blokuje ruchu ICMP, powinien odpowiedzieć wiadomością "ICMP ECHO REPLY". Polecenie PING
    Pomoc kontektstowa dla polecenia ping:
    test:~# ping -h
    Usage: ping [-LRUbdfnqrvVaA] [-c count] [-i interval] [-w deadline]
    	[-p pattern] [-s packetsize] [-t ttl] [-I interface or address]
    	[-M mtu discovery hint] [-S sndbuf]
    	[ -T timestamp option ] [ -Q tos ] [hop1 ...] destination
    
    Przydatne opcje:
    -b		- pozwala na wysłanie pakietów na adres broadcast
    -c count 	- wysyła odpowiednią ilość pakietów
    -f  		- opcja pozwala na wysyłanie pakietów ICMP ECHO REQUEST nie czekając na 
    		  odpowiedź
    -i interval 	- ustawiany jest czas przerwy między kolejnymi rządania ICMP ECHO REQUEST
    -s size 	- ustawia wielkość pakietu ping
    -t ttl 		- ustawia wartość Time To Live w warstwie IP. 
    -W timeout 	- ustawia czas oczekiwania na odpowiedź ICMP ECHO REPLY
    

    Uwaga:
    Wartość TTL jest to 8-bitowe pole ustawiane przez nadawce datagramu IP. W przypadku IPv4 jest to 9-ty oktet w datagramie IP, a w przypadku IPv6 jest to 8-my oktet. Maksymalna wartość pola TTL wynosi 255.
    Celem tego pola jest ograniczenie ilości urządzeń sieciowych działających w warstwie IP, przez które pakiet jest przekazany dalej. Każdy kolejny router zmniejsza wartość TTL w datagramie IP o 1. Dzięki temu w przypadku braku trasy do adresata pakiet nie będzie krążył nieskończenie między kilkoma ruterami.

  6. Diagnostyka IP - ICMP TTL Exceeded - Traceroute

  7. Komunikacja ICMP nie sprowadza się tylko do wysyłania dwustronnego informacji. W przypadku pakietu UDP lub TCP np. w przypadku osiągnięcia przez pakiet wartości TTL równej 0, ruter do którego trafił pakiet wysyła komunikat ICMP TTL EXCEEDED. Korzystają z tego np. narzędzie traceroute i mtr. Traceroute wysyła pakiety UDP na wskazany adres z ustawionym polem TTL.
    Przydatne opcje traceroute:
    -I 		- wysyłanie pakietu ICMP zamiast UDP
    -T 		- wysyłanie pakietu TCP zamiast UDP
    -m max_ttl 	- ustawienie wartości TTL
    -p port  	- ustawienie portu (domyślnie wysyłany jest datagram UDP na port 33434, 
    	   	  który jest portem ogólnego przeznaczenia dla pakietów traceroute.
    
    Przykład działania traceroute:
    test:~# traceroute wp.pl
    traceroute to wp.pl (212.77.100.101), 30 hops max, 40 byte packets
    1  gw-v5.core.wmi.amu.edu.pl (150.254.78.65)  0.569 ms  0.608 ms  0.657 ms
    2  fw.core.wmi.amu.edu.pl (150.254.76.33)  0.503 ms  0.503 ms  0.494 ms
    3  amur.amu.edu.pl (150.254.115.57)  1.112 ms  1.160 ms  1.211 ms
    4  do-pozman.amu.edu.pl (150.254.116.6)  1.130 ms  1.143 ms  1.154 ms
    5  150.254.115.5 (150.254.115.5)  2.036 ms  2.032 ms  2.064 ms
    6  z-poznania-loc.gdansk.pionier.net.pl (150.254.213.213)  8.074 ms  7.779 ms  7.770 ms
    7  a0-jro4.10ge.task.gda.pl (153.19.254.238)  26.785 ms  26.781 ms  25.295 ms
    8  wp-jro4.10ge.task.gda.pl (153.19.102.6)  8.242 ms  8.282 ms  8.315 ms
    9  rtr2.rtr-int-1.adm.wp-sa.pl (212.77.96.65)  8.287 ms rtr2.rtr-int-2.adm.wp-sa.pl (212.77.96.69)  8.327 ms  8.331 ms
    10  www.wp.pl (212.77.100.101)  8.192 ms  7.959 ms  7.946 ms
    test:~#
    
    W podobny sposób,jednakże wykorzystując wiadomości ICMP ECHO działa program mtr.
    My traceroute  [v0.73]
    amppz (0.0.0.0)                            Mon Feb 13 21:44:52 2012
    Keys:  Help   Display mode   Restart statistics   Order of fields   quit
    Packets               Pings
    Host                                       Loss%   Snt   Last   Avg  Best  Wrst StDev
    1. gw-v5.core.wmi.amu.edu.pl               0.0%    15    0.2   0.3   0.2   0.3   0.0
    2. fw.core.wmi.amu.edu.pl                  0.0%    15    0.3   0.2   0.2   0.3   0.0
    3. amur.amu.edu.pl                         0.0%    15    0.7   0.9   0.7   3.0   0.6
    4. do-pozman.amu.edu.pl                    0.0%    15    0.6   0.7   0.6   0.7   0.0
    5. 150.254.115.5                           0.0%    15    1.4   1.4   1.1   1.8   0.2
    6. z-poznania-loc.gdansk.pionier.net.pl    0.0%    14    7.6   7.8   7.4   8.2   0.2
    7. a0-jro4.10ge.task.gda.pl                0.0%    14   44.4  10.5   7.5  44.4   9.8
    8. wp-jro4.10ge.task.gda.pl                0.0%    14    8.3  17.8   7.9 143.6  36.2
    9. rtr2.rtr-int-1.adm.wp-sa.pl             0.0%    14   14.6   9.3   7.7  14.6   2.5
    10. www.wp.pl                              0.0%    14    8.3   8.1   7.8   8.5   0.3