送信されるすべてのデータ パケットには、IP パケット ヘッダー内に TTL 値が含まれています。これは、データが破棄される前に通過できるホップ数を指します。ホスト間のネットワーク トラフィックに基づいて、システムで実行されている OS を予測できます。すべてのオペレーティング システムには、TCP/IP スタックを実装する独自の方法があります。非常に単純だが効果的なパッシブな方法は、IP ヘッダーの初期有効期間 (TTL) を検査することです。
この ICMP ping エラー「Time to live exceeded」は、Time to Live (TTL) フィールドがゼロの値に達したか、セグメントの再構成にタイムアウトが発生したことが原因です。解決策として、TTL (Time To Live) 値を増やすことをお勧めします (最高は 255 です)。
解決策
たとえば、ipaddress 8.8.8.8 (Google のパブリック DNS サーバー) に対して traceroute を実行します。目的地までのホップ数を求めます。
[root@server ~]# traceroute 8.8.8.8 (in linux distro) C:\>tracert 8.8.8.8 (in Windows OS)
私にとっては、8.8.8.8 への 6 ホップです。したがって、icmp パケットを 8.8.8.8 に到達させて ping リプレイを取得するには、最小 TTL 値 6 が必要です。また、TTL 値が 5 以下の 8.8.8.8 に ping できません。
異なる TTL 値での ping の結果:
[root@server ~]# ping 8.8.8.8 -t 5 (-t 5 is for custom TTL value of 5) PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. From 192.168.1.1 icmp_seq=1 Time to live exceeded From 192.168.1.1 icmp_seq=2 Time to live exceeded From 192.168.1.1 icmp_seq=3 Time to live exceeded From 192.168.1.1 icmp_seq=4 Time to live exceeded
# ping 8.8.8.8 -t 6 (-t 6 はカスタム TTL 値 6 用です)
PING 8.8.8.8 (8.8.8.8) 56(84) バイトのデータ.
64 バイト8.8.8.8 から:icmp_req=1 ttl=55 時間=48.9 ミリ秒
8.8.8.8 から 64 バイト:icmp_req=2 ttl=55 時間=49.5 ミリ秒
8.8.8.8 から 64 バイト:icmp_req=3 ttl=55 time=50.4 ms
8.8.8.8 からの 64 バイト:icmp_req=4 ttl=55 time=49.4 ms
Linux