127.0.0.2 IPアドレスとは何ですか?


39

redisサーバーIPとして「127.0.0.2」を使用しているhiredisでサンプルを実行していますが、正しく実行されています。実際、redisサーバーは同じマシンで実行されています。「127.0.0.1」が「lo」のIPアドレスであることは知っていますが、「127.0.0.2」はどうですか?「127.0.0.1」と同じですか?

回答:


37

はい:

IPv4ネットワーク標準では、ループバックのために127.0.0.0/8アドレスブロック全体が予約されています。つまり、これらの16,777,214アドレス(127.0.0.1〜127.255.255.254)のいずれかに送信されたパケットはループバックされます。IPv6には単一のアドレス:: 1しかありません。

さまざまなインターネットエンジニアリングタスクフォース(IETF)標準では、この目的のためにIPv4アドレスブロック127.0.0.0/8がCIDR表記とIPv6アドレス:: 1で予約されています。使用される最も一般的なIPv4アドレスは127.0.0.1です。通常、これらのループバックアドレスは、ホスト名、localhost、またはループバックにマップされます。

またはRFC自体から:

127.0.0.0/8-このブロックは、インターネットホストループバックアドレスとして使用するために割り当てられます。上位レベルのプロトコルによってこのブロック内の任意のアドレスに送信されたデータグラムは、ホスト内でループバックする必要があります。これは通常、ループバックに127.0.0.1/32のみを使用して実装されますが、このブロック内のアドレスはどこのネットワークにも表示されません[RFC1700、5ページ]。

楽しみのために、pingで試してください:

$ ping 127.127.127.127
PING 127.127.127.127 (127.127.127.127) 56(84) bytes of data.
64 bytes from 127.127.127.127: icmp_req=1 ttl=64 time=0.110 ms
64 bytes from 127.127.127.127: icmp_req=2 ttl=64 time=0.065 ms
^C
--- 127.127.127.127 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.065/0.087/0.110/0.024 ms

ウィキペディアのページはその後変更され、「127.0.0.1から127.255.255.254の範囲のアドレスはすべてマッピングされますが」と表示され、この回答の要旨がウィキペディアと直接競合するようになりました。
SilverSkin

6
@SilverSkinどういう意味を説明してもらえますか?現在の回答とウィキペディアの回答との唯一の違いは、ネットワーク/ブロードキャストアドレスである127.0.0.0と127.255.255.255を(正しく)除外したことです。要点は同じです-127.xxx == 127.0.0.1(ただし、8/8ネットワークで予想される127.0.0.0および127.255.255.255を除く)。
icyrock.com

1
127.0.0.1へのバインドと127.0.0.124へのバインドに違いはありませんか?それで、それがまったく同じアドレスである場合、なぜハイレディスは127.0.0.2に悩まされるのでしょうか?また、127.0.0.0にメッセージを送信した場合はどうなりますか?
CMCDragonkai

7
ループバックへのルートは127.0.0.1のみであるOS Xでも同じではないことに注意する必要があります。こちらをご覧ください
ウェンビングリー14

6
@CMCDragonkai 127.0.0.1と127.0.0.124は同じインターフェイス上にある場合がありますが、同じアドレスではありません。共通ポートでサービスをセットアップし、127.0.0.1で同じポートをリッスンしている可能性がある他のサービスに干渉しない場合、127.0.0.2のような一般的でないIPを使用する場合があります
キースレイノルズ

6
  • 「すべての127.x.x.xアドレスはローカルマシンに制限されていますか?」はい
  • 「すべての127.x.x.xアドレスがloインターフェイスにバインドされていますか」はい
  • 127.x.x.xアドレスはネットワーク経由でルーティングされていますか?」

127.0.0.0/8-このブロックは、インターネットホストループバックアドレスとして使用するために割り当てられます。高レベルのプロトコルによって
このブロック内の任意のアドレスに送信されたデータグラムは、ホスト内でループバックします。これ
は通常、ループバックに127.0.0.1/32のみを使用して実装されます。
[RFC1122]で説明され、セクション3.2.1.3は、全体127.0.0.0/8ブロック内のアドレスは、合法的に、任意のネットワークの任意の場所に表示されません。— RFC5735

  • 「です127.0.0.2と同じ127.0.0.1?」NO

ながら127.0.0.1にして127.255.255.254、インターフェイスにバインドされたすべてのローカルアドレスですlo。それらは同じではありません。各アドレスを使用して、異なるポートを同じサービスにバインドできます。たとえば、ポート80の1600万のWebサーバー、ローカルマシンからのみアクセス可能(最初にメモリまたは他のリソースが不足しない場合)

にバインドするdockerサービスをセットアップしました127.0.0.2:80。次に、エイリアスをに追加しました/etc/hosts。今私は経由して接続することができhttp://myserverますが、ない経由http://127.0.0.1http://localhost。ただし、このマシンでのみ使用できます。そのまま、loインターフェイス上でのみ。

次に、バインドする別のdockerサービスを設定し127.0.0.3:80、Pythonサービスをオンにして、別のドッカーサービスをlocalhost:80オンにし127.0.0.4:80ます。


これは、すべてのオペレーティングシステムで機能するとは限りません。Debian(9)Gnu / Linux、Linuxカーネル4.9.0-3-amd64を使用しています。いくつかのOSは、すべてのアドレスを扱うこと127.0.0.1127.255.255.254同じ。一部のものはでのみ動作し127.0.0.1ます。

また見なさい



約1時間の調査が必要でしたが、あなたが伝えようとしていることをようやく理解することができました。受け入れられた回答のウィキペディアの記事からの引用を更新しました。引用文は長年にわたって変更されているため、回答に含まれていた元の情報を復元するために、別の文を引用しました。
ラムハウンド

1

包括的な一般的な答えではありません(既にあります)。私のこの答えは127.0.0.2、問題を解決するために使用された例を示しています。

エキス:

そこのOPは、サーバーへの接続が拒否された場合に、いくつかのソフトウェアをテストしようとしました。これはiptables、クライアントIPからのすべてのトラフィックを拒否する一時的なルールによってサーバーで実行されました。クライアントは、接続が拒否されたことをすぐに「見る」ことができました。

この人は、サーバーソフトウェアをクライアントと同じマシンに移動し、ループバックインターフェイスを使用しようとしたときに問題が発生しました。ルールは通信をブロックするように設定されて127.0.0.1いましたが、接続が拒否された情報には同じルールが適用され、ハングしたクライアントソフトウェアには到達しませんでした(おそらくタイムアウトまで)。

解決策は127.0.0.2、サーバーアドレスとして使用し、接続拒否するルールを設定することでした。拒否に関する情報127.0.0.1はクライアントソフトウェアに送信され、クライアントソフトウェアに渡されました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.