Linux command – ping / ping6

Loading

通常我們會用 ping 這個指令來確認對方主機的狀態,ICMP 的全名是 Internet Control Message Protocol (網際網路控制訊息協定), ICMP 主要是一個 錯誤偵測與回報機制的協定,而 ICMP 跟 IP 一樣在 TCP/IP 7 layer 的第三層 網路層 (Network) .

ping

# ping -c 5 -s 100 -M do 172.16.0.1

使用參數:

  • -c
    執行 ping 的次數(預設是無限,須透過 ctrl+c 中斷)
  • -s
    指定 ICMP 封包大小 (預設為 56 bytes),可以利用該參數來測試對方 MTU 大小,關於 MTU 請參考 https://benjr.tw/3025 ,還須搭配 -M 參數來使用.
  • -M [do|dont]
    do – 封包不能在其他主機上 Fragment 拆包與重打包.
    dont – 封包可以在其他主機上 Fragment 拆包與重打包.

ping6

在 Linux 下面要 ping IP V6 的 IP 須使用工具 #ping6 ,#ping 指令只適用於 IP V4 時候使用 (Ping 是走 ICMPv4,而 Pingv6 是走 ICMPv6,).首先我們要透過 ifconfig 來查詢 IPv6 address .

# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:1A:64:22:04:83  
          inet addr:192.8.1.192  Bcast:192.8.1.255  Mask:255.255.255.0
          inet6 addr: 3ffe:501:ffff:100:21a:64ff:fe22:483/64 Scope:Global
          inet6 addr: fe80::21a:64ff:fe22:483/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:81 errors:0 dropped:0 overruns:0 frame:0
          TX packets:86 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:11835 (11.5 KiB)  TX bytes:11119 (10.8 KiB)
          Interrupt:17 

奇怪怎麼有兩組 IPv6 的 IP,因為 IPv6 的位址有 Link Local 以及自動指派 (address auto-configuration),

如果是網路上的伺服器可以透過 host 指令.

# host -t AAAA www.google.com
www.google.com has IPv6 address 2404:6800:4008:c06::68
  • Link Local

    第一組 IPv6 (fe80::21a:64ff:fe22:483/64 ) 在網卡啟動時就會指派一組 IPV6 link-local address,而這 link-local address 是唯一的而且是依據網卡的 MAC Address 而有所變動,詳細步驟請參考 https://benjr.tw/17341

    如果是要 ping Link Local address 時需要在 ping6 IPv6 後面的參數加上 network_device_name 如下:

    # ping6 fe80::21a:64ff:fe22:483%eth0
    PING fe80::20c:29ff:fef6:4d73%eth0(fe80::20c:29ff:fef6:4d73) 56 data bytes
    64 bytes from fe80::20c:29ff:fef6:4d73: icmp_seq=1 ttl=64 time=0.205 ms
    64 bytes from fe80::20c:29ff:fef6:4d73: icmp_seq=2 ttl=64 time=0.196 ms
    64 bytes from fe80::20c:29ff:fef6:4d73: icmp_seq=3 ttl=64 time=0.193 ms
    
    --- fe80::20c:29ff:fef6:4d73%eth0 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2990ms
    rtt min/avg/max/mdev = 0.193/0.198/0.205/0.005 ms
    
  • 自動指派 (address auto-configuration)

    自動指派 (address auto-configuration) 主要可以區分為下列幾種

    • Stateless auto-configuration
    • Stateful auto-configuration using Router Advertisement(RA) Daemon (radvd)
    • Dynamic Host Configuration Protocol v6 (DHCPv6)

    IPv6 (3ffe:501:ffff:100:21a:64ff:fe22:483/64) 類似於 IPv4 的 DHCP ,客戶端主要使用 UDP port 546 而服務器端使用 UDP port 547 .雖類似於 DHCPv4 但不同的是 IPv6 已經不使用 Brocast 的方式.

    # ping6 3ffe:501:ffff:100:21a:64ff:fe22:483
    PING 3ffe:501:ffff:100::1(3ffe:501:ffff:100::1) 56 data bytes
    64 bytes from 3ffe:501:ffff:100::1: icmp_seq=1 ttl=64 time=1.11 ms
    64 bytes from 3ffe:501:ffff:100::1: icmp_seq=2 ttl=64 time=0.192 ms
    64 bytes from 3ffe:501:ffff:100::1: icmp_seq=3 ttl=64 time=0.213 ms
    64 bytes from 3ffe:501:ffff:100::1: icmp_seq=4 ttl=64 time=0.195 ms
    64 bytes from 3ffe:501:ffff:100::1: icmp_seq=5 ttl=64 time=0.194 ms
    
    --- 3ffe:501:ffff:100::1 ping statistics ---
    5 packets transmitted, 5 received, 0% packet loss, time 4590ms
    rtt min/avg/max/mdev = 0.192/0.381/1.113/0.366 ms
    
沒有解決問題,試試搜尋本站其他內容

One thought on “Linux command – ping / ping6

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料