11.22.33.44
私のサーバーにIPアドレスとホスト名があるとしましょうserver1.mydomain.com
。
pingを実行すると、server1.mydomain.com
pingは実際にパブリック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.44
pingを送信しており、pingがトラフィックを送信するのと同じくらいですが、実際には送信しているということです。ifconfig
eth0
eth0
lo
答え1
カーネルは「すでに存在する」ことを知っているので、ICMP パケット転送を「最適化」します。これがループバックインターフェイスで見られる理由です。他の人が詳細を入力することもできます。
それにもかかわらず:数年前にも同様の問題がありましunshare
たunshare -n /bin/bash
。これには、まったく新しいネットワークスタック(正しい用語が不足しています)があり、ループバックインターフェイスを持たないシェルがあります。そこで新しいIP、ルートなどを定義する必要がありますが、そのシェルからイーサネットインターフェイスを介してICMPパケットを自分に送信できます。
答え2
これは、Linuxでネットワークルーティングが発生する方法に関連しています。たとえば、ルーティングテーブルを見ると、11.22.33.0/24 サブネットに属するすべてのトラフィックが「ローカル」にルーティングされることがわかります。これは、ループバックに直接移動することを意味します。
[jar@coffee ~]$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.107.136.1 0.0.0.0 UG 100 0 0 eth0
10.107.136.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
持つ10.107.136.0内部に目的地列は、ローカルサブネット内のすべてのトラフィックをリストされたサブネットに送信する必要があることを示します。ゲートウェイ今すぐ0.0.0.0- この場合、ローカルルーティングを意味します。
持つ0.0.0.0存在する目的地このサブネットの外部に移動するトラフィックを示します。これにより、デフォルトゲートウェイが以下にリストされます。ゲートウェイ
走れば君も知るだろうTCPダンプそして-Nスイッチ、IPアドレスはいいえ127.0.0.1 はローカルトラフィックなので、ループバックインターフェイスにあります。