Home / Şəbəkə / ping, traceroute – şəbəkə yoxlama alətləri

ping, traceroute – şəbəkə yoxlama alətləri

Şəbəkədə problemin səbəbi çox ola bilər, adi fiziki bağlantıdan tutmuş, provayder səviyyəsinə qədər. Problemin hardan qaynaqlandığını tapmaq üçün şəbəkədə çalışan bütün avadanlıqlarda təməl alətlər var. Bunlar ping və traceroute tətbiqləridir.

Nədən danışacağıq:

ping

Açıqlaması Packet InterNet Grooper olan kiçik tətbiq 1983-cü ildə yazılıb. Müəllif tətbiqin adını sonar sistemin çıxardığı səsdən götürüb. Elə ping tətbiqinin iş prinisipi də sonar cihazlarla oxşardır. Ping şəbəkədə hər hansı ünvanın əlçatan olub-olmadığını yoxlamaq üçün ICMP (Internet Control Message Protocol) paketləri göndərir. ICMP OSI şəbəkə modelinin 3-cü pilləsində (Network) çalışır.

C:\Users\Root>ping google.com

Pinging google.com [216.58.208.206] with 32 bytes of data:
Reply from 216.58.208.206: bytes=32 time=20ms TTL=58
Reply from 216.58.208.206: bytes=32 time=20ms TTL=58
Reply from 216.58.208.206: bytes=32 time=21ms TTL=58
Reply from 216.58.208.206: bytes=32 time=20ms TTL=58

Ping statistics for 216.58.208.206:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 20ms, Maximum = 21ms, Average = 20ms

ping tətbiqi bütün ƏS-lərdə var, lakin hər ƏS-də bir qədər fərqli çalışır. Məsələn, Windows ƏS-də ping varsayılan olaraq 4 paket göndərir. Unix əsasında çalışan sistemlərdə isə proses Ctrl+C kombinasiyası basılana qədər davam edir. Varsayılan olaraq sistem 32 baytlıq (Unix/Linux-da 56 baytlıq) bir paket göndərir. Paketin tərkibində isə latın əlifbasının hərflərindən ibarət bir məlumat var(mavi rənglə seçilib).

ping

Qarşı tərəfi uğurla pingləyə bilsək cavabında Echo Reply paketi alırıq. Bu paketdə bizə ping sorğuları göndərdiyimiz sistemin IP ünvanı (Reply from 216.58.208.206), cavab paketinin həcmi (bytes=32), paketin səyahət müddəti (time=20ms) – bu paketin bizim kompüterdən çıxıb geri gəlməyə sərf etdiyi vaxtı göstərir. Bu dəyər nə qədər aşağı olsa, o qədər yaxşıdır. Time-to-Live (TTL=58) – bu paketin ömrünü göstərir. IP şəbəkələrdə sonsuz dövrənin qarşısını almaq məqsədi ilə paketə maksimum 255 ola bilən TTL dəyəri tətbiq olunur. Bu o deməkdir ki, əgər 255 cihazdan keçdikdən sonra paketə cavab alınmazsa paket məhv edilir.

TTL dəyərinə görə hətta ƏS-ni müəyyən etmək olar. Məsələn, əgər pinglənən cihaz Windows-dursa TTL dəyəri 128 olacaq. Linux əsaslı sistemdirsə – 64.

Paket hər dəfə router-dən keçən zaman TTL dəyəri 1 vahid azalır. Əgər sonuncu əməliyyatdan sonra TTL dəyəri 0-a bərabər olsa, router belə paketi məhv edir və bu haqda məlumatı sorğulayan sistemə göndərir:

C:\Users\Root>ping -i 2 google.com

Pinging google.com [142.250.186.206] with 32 bytes of data:
Reply from 84.116.254.140: TTL expired in transit.
Reply from 84.116.254.140: TTL expired in transit.
Reply from 84.116.254.140: TTL expired in transit.
Reply from 84.116.254.140: TTL expired in transit.

Ping statistics for 142.250.186.206:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Yuxarıdakı nümunədə -i parametri vasitəsi ilə TTL dəyərini 2 təyin etmişik. Bu o deməkdir ki, paket ünvana çatmaq üçün cəmi iki routerdən keçməlidir, əks halda paket məhv ediləcək. TTL expired in transit mesajı bizə məhz bu haqda məlumat verir. Reply from hissəsində isə cavabı göndərən routerin IP ünvanını görə bilərik.

ping sorğuları sonunda kiçik bir statistika verir. Göndərilən (Sent = 4), qəbul edilən (Received = 4) və yolda itən paketlərin sayı (Lost=0). Növbəti nümünədə ixtiyarı bir domeni pingləməyə cəhd etdim:

C:\Users\Root>ping goog.com

Pinging goog.com [35.163.48.255] with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 35.163.48.255:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss)

Request timed out mesajı o deməkdir ki, sorğu ünvana çatıb, lakin qarşı tərəf tələb olunan müddət ərzində cavab vermyib. Nəticədə biz 100%-lik paket itkisi görürük. Windows ƏS sorğuya cavab üçün 5 saniyə gözləyir.

C:\Users\Root>ping 192.168.0.2

Pinging 192.168.0.2 with 32 bytes of data:
Reply from 192.168.0.10: Destination host unreachable.
Reply from 192.168.0.10: Destination host unreachable.
Reply from 192.168.0.10: Destination host unreachable.
Reply from 192.168.0.10: Destination host unreachable.

Ping statistics for 192.168.0.2:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Əgər ping zamanı cavabda Destination host unreachable alırıqsa, bu o deməkdir ki, ping göndərdiyimiz ünvan əlçatan deyil.

ping paremetrləri

ping tətbiqi bizə varsayılan parametrləri dəyişməyə imkan verir. Hər əməliyyat sistemində bu paremetrlər və açar sözləri fərqlidir. ping /? komandası ilə mümkün paremetrləri görmək olar:

C:\Users\Root>ping /?

Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
            [-r count] [-s count] [[-j host-list] | [-k host-list]]
            [-w timeout] [-R] [-S srcaddr] [-c compartment] [-p]
            [-4] [-6] target_name

Options:
    -t             Ping the specified host until stopped.
                   To see statistics and continue - type Control-Break;
                   To stop - type Control-C.
    -a             Resolve addresses to hostnames.
    -n count       Number of echo requests to send.
    -l size        Send buffer size.
    -f             Set Don't Fragment flag in packet (IPv4-only).
    -i TTL         Time To Live.
    -v TOS         Type Of Service (IPv4-only. This setting has been deprecated
                   and has no effect on the type of service field in the IP
                   Header).
    -r count       Record route for count hops (IPv4-only).
    -s count       Timestamp for count hops (IPv4-only).
    -j host-list   Loose source route along host-list (IPv4-only).
    -k host-list   Strict source route along host-list (IPv4-only).
    -w timeout     Timeout in milliseconds to wait for each reply.
    -R             Use routing header to test reverse route also (IPv6-only).
                   Per RFC 5095 the use of this routing header has been
                   deprecated. Some systems may drop echo requests if
                   this header is used.
    -S srcaddr     Source address to use.
    -c compartment Routing compartment identifier.
    -p             Ping a Hyper-V Network Virtualization provider address.
    -4             Force using IPv4.
    -6             Force using IPv6.

ping -t

Vacib olan bir neçə parametrin üzərindən keçək. -t parametri varsayılan 4 paket əvəzinə sonsuz icmp sorğular göndərir və Ctrl+C klaviş kombinasiyası ilə prosesi dayandırmaq mümkündür. Bu adətən uzaqda olan cihazların yenidən başladılması və ya şəbəkədə hər hansı bir dəyişiklik edən zaman istifadə olunur ki, paket itsə dərhal xəbərdar olaq.

C:\Users\Root>ping -t google.com

Pinging google.com [2a00:1450:401b:810::200e] with 32 bytes of data:
Reply from 2a00:1450:401b:810::200e: time=20ms
Reply from 2a00:1450:401b:810::200e: time=17ms
Reply from 2a00:1450:401b:810::200e: time=15ms
Reply from 2a00:1450:401b:810::200e: time=15ms
Reply from 2a00:1450:401b:810::200e: time=16ms
Reply from 2a00:1450:401b:810::200e: time=18ms
Reply from 2a00:1450:401b:810::200e: time=14ms

Ping statistics for 2a00:1450:401b:810::200e:
    Packets: Sent = 7, Received = 7, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 14ms, Maximum = 20ms, Average = 16ms
Control-C
^C

ping -4 -6

Yuxarıdakı nümunəyə fikir versəniz, sorğuların IPv6 formatlı ünvana göndərildiyini görə bilərsiniz. Səbəb mənim istifadə etdiyim provayderlə bağlıdır. Amma bu davranışı dəyişmək olar ki, IPv4 istifadə edilsin. Bunun üçün ping -4 komandasında istifadə edə bilərik. IPv6 üçün isə müvafiq olaraq -6 parametri yazılır:

C:\Users\Root>ping -4 google.com

Pinging google.com [216.58.208.206] with 32 bytes of data:
Reply from 216.58.208.206: bytes=68 (sent 32) time=20ms TTL=58
Reply from 216.58.208.206: bytes=68 (sent 32) time=20ms TTL=58
Reply from 216.58.208.206: bytes=68 (sent 32) time=20ms TTL=58
Reply from 216.58.208.206: bytes=68 (sent 32) time=21ms TTL=58

ping -a

Bu parametr pinglədiyimiz IP ünvanın domen adını göstərmək üçün istifadə olunur. Bunun adına RARP Reverse ARP deyilir.

C:\Users\Root>ping -a 84.116.254.140

Pinging pl-ktw01a-rt1.aorta.net [84.116.254.140] with 32 bytes of data:
Reply from 84.116.254.140: bytes=32 time=14ms TTL=63
Reply from 84.116.254.140: bytes=32 time=14ms TTL=63
Reply from 84.116.254.140: bytes=32 time=15ms TTL=63
Reply from 84.116.254.140: bytes=32 time=16ms TTL=63

Ping statistics for 84.116.254.140:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 14ms, Maximum = 16ms, Average = 14ms

ping -n

Əvvəldə qeyd etmişdik ki, Windows ƏS varsayılan olaraq cəmi 4 paket göndərir, Unix əsaslı sistemlər isə fərqli davranır və uzunmüddətli ping göndərir. Bu davranışı dəyişmək üçün -n (Unix-də -c ) paremetrindən istifadə olunur:

C:\Users\Root>ping -n 2 google.com

Pinging google.com [2a00:1450:401b:810::200e] with 32 bytes of data:
Reply from 2a00:1450:401b:810::200e: time=17ms
Reply from 2a00:1450:401b:810::200e: time=19ms

Ping statistics for 2a00:1450:401b:810::200e:
    Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 17ms, Maximum = 19ms, Average = 18ms

ping -l -f

Bəzən şəbəkədə 32 baytdan daha çox paket göndərmək lazım olur. Bu problemin MTU-dan qaynaqlanıb qaynaqlanmadığını aşkarlamağa imkan verir.

MTU dəyəri router və ya svitç tərəfindən emal edilə bilən paketin maksimal həcmini müəyyən edir. Bu dəyər iki veriləndən cəmlənir: MSS (Maximum Segment Size) + Headers (IP (20 bayt) və TCP (20 bayt) başlıqları – 40 bayt). Adətən MTU 1500 bayt olur və daha böyük paketlər 1500 baytlıq kiçik paketlərə bölünür. Prosesin adı fraqmentasiyadır.

-l (kiçik L) və -f parametrləri birgə çalışaraq şəbəkədə ən kiçik MTU dəyərini tapmağa imkan verir. -f parametri Don’t fragment yəni paketi hissələrə bölmə deməkdir. -l isə paketin həcmini dəyişməyə imkan verir:

C:\Users\Root>ping -l 1432 google.com -f

Pinging google.com [142.250.203.206] with 1432 bytes of data:
Reply from 142.250.203.206: bytes=68 (sent 1432) time=21ms TTL=58
Reply from 142.250.203.206: bytes=68 (sent 1432) time=19ms TTL=58
Reply from 142.250.203.206: bytes=68 (sent 1432) time=23ms TTL=58
Reply from 142.250.203.206: bytes=68 (sent 1432) time=20ms TTL=58

Ping statistics for 142.250.203.206:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 19ms, Maximum = 23ms, Average = 20ms

C:\Users\Root>ping -l 1433 google.com -f

Pinging google.com [142.250.203.206] with 1433 bytes of data:
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.

Ping statistics for 142.250.203.206:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

Yuxarıdakı nümunədə şəbəkədə maksimum MTU-nun 1432 + 28 = 1460 bayt olduğunu görə bilərik (IP (20) və ICMP(8) başlıq). Çünki 1432 bytlıq paket uğurla ünvana çatır, lakin bir bayt artıq olan paketin isə fraqmentlərə bölünməli olduğu haqqında məlumat alırıq: Packet needs to be fragmented but DF set.

ping -w

Varsayılan olaraq Windows ƏS hər paketə cavab üçün 5 saniyə gözləyir. Lakin bu dəyəri artırmaq və ya azalmaq olar. Bunun üçün -w parametrindən istifadə edirik. Parametrin dəyəri millisaniyələrdə göstərilir. Yəni gözləmə müddətini 10 saniyə etmək üçün ping -w 10000 yazmaq lazımdır.

traceroute

Tutaq ki, hər-hansı bir hosta ping sorğuları göndərdik, amma cavab almadıq. Hostun işlədiyindən əminik. Belə olan halda sorğunun ünvana gedən yolda olan hansı cihazda ilişdiyinə baxmaq lazım ola bilər. Bunun üçün traceroute (Windows-da tracert) tətbiqindən istifadə edilir. traceroute da ping kimi müxtəlif ƏS-lərdə fərqli çalışır. Məsələn, Unix/Linux əsaslı sistemlərdə ƏS sorğuları 33434-dən başlayaraq ixtiyarı UDP portuna göndərir. Windows-da isə adi ping sorğulardan istifadə olunur. traceroute-dan istifadə qaydası elə ping ilə eynidir. Dəstək menyusunun çağırmaq üçün tracert /? (Linux/Unix traceroute -h) komandasından istifadə edilir:

C:\Users\Root>tracert /?

Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout]
               [-R] [-S srcaddr] [-4] [-6] target_name

Options:
    -d                 Do not resolve addresses to hostnames.
    -h maximum_hops    Maximum number of hops to search for target.
    -j host-list       Loose source route along host-list (IPv4-only).
    -w timeout         Wait timeout milliseconds for each reply.
    -R                 Trace round-trip path (IPv6-only).
    -S srcaddr         Source address to use (IPv6-only).
    -4                 Force using IPv4.
    -6                 Force using IPv6.

traceroute-nin parametrləri ping ilə demək olar eynidir. Fərqli olan -d parametridir ki, bu da IP ünvanları domen adlarına çevirməmək komandasını verir. Aşağıda tracert komandasının nəticəsini görə bilərik:

C:\Users\Root>tracert -4 google.com

Tracing route to google.com [216.58.208.206]
over a maximum of 30 hops:

  1     3 ms     4 ms     3 ms  192.168.0.1
  2    15 ms    13 ms    15 ms  pl-ktw01a-rt1.aorta.net [84.116.254.140]
  3     *        *        *     Request timed out.
  4    24 ms    19 ms    21 ms  pl-waw26b-rc1-ae-4-0.aorta.net [84.116.137.30]
  5    20 ms    20 ms    19 ms  pl-waw26b-ri1-ae-24-0.aorta.net [84.116.138.73]
  6    20 ms    20 ms    20 ms  72.14.203.234
  7    20 ms    20 ms    21 ms  142.250.227.13
  8    21 ms    26 ms    22 ms  142.250.224.89
  9    22 ms    20 ms    20 ms  waw07s02-in-f14.1e100.net [216.58.208.206]

Trace complete.

Gördüyümüz kimi, burada domen adları və IP ünvanlar göstərilib. -d komandasını əlavə etsək yalnız IP ünvanlar əks olunacaq. Nəticəyə nəzər salaq:

  • Nəticənin 1-ci sütünü paketin keçdiyi routerlərin sıra nömrəsini göstərir.
  • 2-4 sütünlar paketin səyahət üçün sərf etdiyi vaxtı göstərir. Bəs niyə üç? Çünki traceroute bir sorğuda 3 paket göndərir. Bunun səbəbi paketə cavab alınmadığı halda problemin zamanla bağlı olmadığını müəyyən etməkdir. Cavab alınan hər bir paketin isə səyahət vaxtı qeyd edilir. Diqqət etsəniz 3-cü cihazda hər üç sütun üçün * işarəsi qeyd olunub. Bu o deməkdir ki, 3-cu cihaz bizə cavab verməyib. Bu adətən firewall kimi təhlükəsizlik avadanlıqları olur.
  • 5-ci sütünda sorğuya cavab verən cihazın IP ünvanı qeyd olunub.

Əslində traceroute işləmə məntiqi ping-ə əsaslanıb. ƏS traceroute paketini göndərəndə ilkin olaraq TTL dəyərini 1 qoyur. Şəbəkədə olan birinci router TTL dəyirini bir vahid azaldır və TTL dəyəri 0 olduğu üçün TTL Exceeded tipli mesaj göndərir. traceroute tətbiqi bu məlumatı görür və TTL dəyərini 1 vahid artıraraq yeni sorğu göndərir. Bu dəfə ikinci cihaz TTL dəyərinin 0 olduğunu görüb oxşar mesajı göndərir. Bu proses sorğu təyinat ünvanına çatana qədər davam edir. Bizim nümunədə sorğu 8 cihazdan keçir 9-cu isə istədiyimiz ünvandır.

tracroute Wireshark-ın gözü ilə

Wireshark tətbiqi ilə traceroute paketlərinə baxsaq qeyd etdiyim məqamları aydın şəkildə görə bilərik:

Şəkildəki dumpda ilk 6 sətr bir sorğuya aiddir. Şəkilə böyüdün baxsanız sorğuya cavab olaraq Time-to-live exceeded mesajı görəcəksiniz. Bu mənim evdəki routerimdən gələn cavabdır. Birinci paketin detallarına baxaq:

Internet Protocol Version 4, Src: 192.168.0.10, Dst: 216.58.208.206
    0100 .... = Version: 4
    .... 0101 = Header Length: 20 bytes (5)
    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
        0000 00.. = Differentiated Services Codepoint: Default (0)
        .... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
    Total Length: 92
    Identification: 0x0db7 (3511)
    000. .... = Flags: 0x0
        0... .... = Reserved bit: Not set
        .0.. .... = Don't fragment: Not set
        ..0. .... = More fragments: Not set
    ...0 0000 0000 0000 = Fragment Offset: 0
    Time to Live: 1
        [Expert Info (Note/Sequence): "Time To Live" only 1]
            ["Time To Live" only 1]
            [Severity level: Note]
            [Group: Sequence]
    Protocol: ICMP (1)
    Header Checksum: 0x422f [validation disabled]
    [Header checksum status: Unverified]
    Source Address: 192.168.0.10
    Destination Address: 216.58.208.206

Time to Live (TTL) dəyərinə baxın 1-ə bərabərdir. Növbəti üç paketə baxaq:

Bu dəfə cavab 84.116.254.140 IP-li cihazdan gəlib. Bu paketin TTL dəyərinə baxaq:

Internet Protocol Version 4, Src: 192.168.0.10, Dst: 216.58.208.206
    0100 .... = Version: 4
    .... 0101 = Header Length: 20 bytes (5)
    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
        0000 00.. = Differentiated Services Codepoint: Default (0)
        .... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
    Total Length: 92
    Identification: 0x0dba (3514)
    000. .... = Flags: 0x0
        0... .... = Reserved bit: Not set
        .0.. .... = Don't fragment: Not set
        ..0. .... = More fragments: Not set
    ...0 0000 0000 0000 = Fragment Offset: 0
    Time to Live: 2
        [Expert Info (Note/Sequence): "Time To Live" only 2]
            ["Time To Live" only 2]
            [Severity level: Note]
            [Group: Sequence]
    Protocol: ICMP (1)
    Header Checksum: 0x412c [validation disabled]
    [Header checksum status: Unverified]
    Source Address: 192.168.0.10
    Destination Address: 216.58.208.206

Və nəhayət sonuncu paketə baxaq:

Sorğulara cavab bizə lazım olan ünvandan gəlib. Bu sorğunun TTL dəyərinə baxaq:

Internet Protocol Version 4, Src: 192.168.0.10, Dst: 216.58.208.206
    0100 .... = Version: 4
    .... 0101 = Header Length: 20 bytes (5)
    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
        0000 00.. = Differentiated Services Codepoint: Default (0)
        .... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
    Total Length: 92
    Identification: 0x0dcf (3535)
    000. .... = Flags: 0x0
        0... .... = Reserved bit: Not set
        .0.. .... = Don't fragment: Not set
        ..0. .... = More fragments: Not set
    ...0 0000 0000 0000 = Fragment Offset: 0
    Time to Live: 9
    Protocol: ICMP (1)
    Header Checksum: 0x3a17 [validation disabled]
    [Header checksum status: Unverified]
    Source Address: 192.168.0.10
    Destination Address: 216.58.208.206
    [Destination GeoIP: US, ASN 15169, GOOGLE]
        [Destination GeoIP Country: United States]
        [Source or Destination GeoIP Country: United States]
        [Destination GeoIP ISO Two Letter Country Code: US]
        [Source or Destination GeoIP ISO Two Letter Country Code: US]
        [Destination GeoIP AS Number: 15169]
        [Source or Destination GeoIP AS Number: 15169]
        [Destination GeoIP AS Organization: GOOGLE]
        [Source or Destination GeoIP AS Organization: GOOGLE]
        [Destination GeoIP Latitude: 37.751]
        [Source or Destination GeoIP Latitude: 37.751]
        [Destination GeoIP Longitude: -97.822]
        [Source or Destination GeoIP Longitude: -97.822]

Varsayılan olaraq traceroute maksimum 30 cihaza qədər gedə bilər. Lakin bu davranışı dəyişmək olar və bunun üçün -h parametrindən istifadə etmək olar. Paremetrin dəyəri maksimum 255 ola bilər. Tapın görək niyə.

Xülasə

ping və traceroute kimi alətlər şəbək inzibatçıları tərəfindən tez-tez istifadə olunur. Amma təkcə ping və traceroute məlumatlarına əsaslnamaq olmaz, çünki şəbəkədə bu sorğuları bloklayan cihazlar ola bilər. Məsələn, ping çalışa bilər, amma traceroute yox və sair. Hər bir halda ilkin analiz üçün məqalədə danışdığım tətbiqlər çox faydalıdır.

Yazını paylaş