「ping」はパブリックIPアドレスの代わりにlocalhostを使用します。

「ping」はパブリックIPアドレスの代わりにlocalhostを使用します。

11.22.33.44私のサーバーにIPアドレスとホスト名があるとしましょうserver1.mydomain.com

pingを実行すると、server1.mydomain.compingは実際にパブリックIPアドレスを使用しているように見えます。

# ping server1.mydomain.com
PING server1.mydomain.com (11.22.33.44) 56(84) bytes of data.
64 bytes from server1.mydomain.com (11.22.33.44): icmp_seq=1 ttl=64 time=0.014 ms
64 bytes from server1.mydomain.com (11.22.33.44): icmp_seq=2 ttl=64 time=0.012 ms
64 bytes from server1.mydomain.com (11.22.33.44): icmp_seq=3 ttl=64 time=0.011 ms

ところがありますがtcpdump、見えません。ICMPトラフィックはオンになっていますが、eth0次を介して着信ピングデータが表示されますlo

# tcpdump -i lo
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
08:43:49.076918 IP server1.mydomain.com > server1.mydomain.com: ICMP echo request, id 8525, seq 1, length 64
08:43:49.076931 IP server1.mydomain.com > server1.mydomain.com: ICMP echo reply, id 8525, seq 1, length 64
08:43:50.075913 IP server1.mydomain.com > server1.mydomain.com: ICMP echo request, id 8525, seq 2, length 64
08:43:50.075924 IP server1.mydomain.com > server1.mydomain.com: ICMP echo reply, id 8525, seq 2, length 64
08:43:51.074911 IP server1.mydomain.com > server1.mydomain.com: ICMP echo request, id 8525, seq 3, length 64
08:43:51.074919 IP server1.mydomain.com > server1.mydomain.com: ICMP echo reply, id 8525, seq 3, length 64

この動作は限定されませんping。また、同じ結果が得られますwget

なぜこれが起こるのですか?私のサーバーの構成のためですか?

使っていますDebian 9(緊張)。

編集する:コメントで発生したコメントの違いを明確にするために:

自分のパブリックIPアドレスをpingすると、トラフィックは実際にそこに移動します127.0.0.1。しかし、pingは正直でなければならず、実際にlocalhostをpingしていることを示さなければなりません。私が危険だと思うのは、接続に応じて11.22.33.44pingを送信しており、pingがトラフィックを送信するのと同じくらいですが、実際には送信しているということです。ifconfigeth0eth0lo

ベストアンサー1

カーネルは「すでに存在する」ことを知っているので、ICMP パケット転送を「最適化」します。これがループバックインターフェイスで見られる理由です。他の人が詳細を入力することもできます。

それにもかかわらず:数年前にも同様の問題がありましunshareunshare -n /bin/bash。これには、まったく新しいネットワークスタック(正しい用語が不足しています)があり、ループバックインターフェイスを持たないシェルがあります。そこで新しいIP、ルートなどを定義する必要がありますが、そのシェルからイーサネットインターフェイスを介してICMPパケットを自分に送信できます。

おすすめ記事