web-dev-qa-db-ja.com

プライベートIPアドレスがルーティング不可能になるのはなぜですか?

10.0.0.0/8172.16.0.0/12192.168.0.0/16などのプライベートアドレスはルーティングできないことを理解しています。しかし、これらのアドレスがルーティング可能であることを正確に止めているのは何ですか? ISPは、これらのネットワークのルーティングを防止するACLを実装していますか、それとも上位のものですか?

また、このデザインを作成したのはIANAですか?

21
QuantumRads

プライベートIPアドレスあるルーティング可能ですがパブリックにはルーティングされません。基本的に、ルーターはプライベートアドレスをインターネットではなくプライベート/内部LANにルーティングします。

私の答えを拡張するには:ルーターは、デフォルトゲートウェイを介して、プライベートアドレスをパブリック側にルーティングできます。ただし、他のルーターがパケットをドロップしたため、またはパケットのTTLが0に達したため、転送中にパケットが失われます。

たとえば、これを見てください(部分的に難読化されています)traceroute -I -n 192.168.200.1

[root@myhost ~]# traceroute -I -n 192.168.200.1
traceroute to 192.168.200.1 (192.168.200.1), 30 Hops max, 60 byte packets
 1  x.x.x.x  0.851 ms  0.841 ms  0.818 ms
 2  6x.xx.xx.xx  0.791 ms  0.791 ms  0.849 ms
 3  15x.xx.xx.xx  1.350 ms  1.347 ms  1.373 ms
 4  15x.x.xx.xx  1.446 ms  1.435 ms  1.428 ms
 5  151.6.68.20  2.272 ms  2.266 ms  2.251 ms
 6  151.6.0.91  8.818 ms  8.256 ms  8.326 ms
 7  * * *
 8  * * *
 9  * * *
10  * * *
...
...
29  * * *
30  * * *

ご覧のように、パケットはマシンのデフォルトゲートウェイを介してパブリックインターネットにルーティングされます。ただし、通過中にドロップされ、適切な宛先に到達することはありません。

結局のところ、プライベートIP /クラスは(定義により)顧客間で重複しているため、数千の192.168.200.x/24ネットワークのうち、このパケットをルーティングする必要があるのはどれですか。

興味深い副注:インターネットプロバイダーは、内部ルーティングにプライベートアドレスを使用することがよくあります。たとえば、プライベート192.168.200.x/24クラスが内部ルーティングに使用される場合、IP 192.168.200.1の最初のルーター/マシンパケットを受信しますが、それが要求されていないため、ドロップします。 ICMPは興味深い例外です。ルーター/マシンは通常、非送信請求PINGに応答するためです。つまり、プライベートアドレススキャンを使用してISPプライベートネットワークをマッピングできる場合があります。

39
shodanshok

通常、プライベートIPアドレスはISPによってフィルタリングされます。アクセスルーターは、それらがリークしないように設定する必要もあります。

誰でも使用できるであるため、プライベートIPアドレスをインターネット上で使用することはできません。おそらく、プライベートに192.168.1.1を使用しているデバイスは何百万もあるでしょう。パケットを送信するはずのインターネットルーターはどれですか。

Zeroconfアドレス(169.254.0.0/16)は実際にはルーティングできません。これらはアドホックな方法でどこでも使用できますが、インターネットやローカル以外のサブネットにはアクセスできません。それらは、各デバイスが未使用のアドレスを自分で選択できるブロードキャストドメイン内でのみ有効であるため、ルーティングできません。定義上、zeroconfにはDHCPサーバーのような管理インスタンスはありません。

9
Zac67

ただし、これらのアドレスがルーティング可能にならないのはなぜですか?

通信するエンティティによって実施される、承認された標準。これらは、ソフトウェア、ハードウェア、および構成で実施されます。

ISPは、これらのネットワークのルーティングを妨げるACLを実装していますか、それとも上位にありますか?

彼らはできますが、実際に止められているのは、標準に従わない無効な翻訳にすぎません。

ほとんどのホームユーザーと同じように、1つのIPアドレスがパブリックIPアドレスとして割り当てられています。接続されているすべてのデバイスからのトラフィックが通信できるように、ルーターはNAT(ネットワークアドレス変換)またはPAT(ポートアドレス変換)を使用してこれらの内部IPアドレスの変換を実行します。

基本的に、ルーターは、LAN(ローカルエリアネットワーク)内のどの内部IPアドレスが、ルーター経由でLANの外部に到達し、WAN(ワイドエリアネットワーク)インターフェース)からセッションを開始したかを記憶しています。データがルーターを出るとき、送信元IPとしてあなたに割り当てられたその単一のIPアドレスが含まれています。データが入るとき、パケットには宛先IPと同じアドレスが含まれています。ルーターは、そこから転送される場所を決定します。

外部に対しては、実際にはルーターのIPである単一のIPアドレスしかありません。ルーターはこれらのセッションを追跡し、どのトラフィックがそのLAN上の各内部IPアドレスに属しているかを判別し、それに応じてそのトラフィックを転送することができます。これは複雑な管理プロセスですが、各ルーターですべてが変換されることを理解すれば、アイデアは実際には非常に簡単です。

さらに、ほとんどのホームルーターにはスイッチングポートがあり、トラフィックはIPアドレスではなくMACアドレスを介して配信されます。パケットの送信元MACアドレスは、ルーターに到達するまで同じままです。ルーターはそのソースMACアドレスを取り除き、自身のMACアドレスを挿入しますWANインターフェイス。

また、このデザインを作成したのはIANAですか?

これらの規格は、もともとIANAによって設計されたものではありません。今日、彼らは基準の設定を主導していますが、法的手段を通じてそれらを強制することはありません。これらは、コンセンサスを通じて実施される標準です。 RFC 791を検索します。

彼らは、誰もが彼らに固執する用意がある限り、「権限」を持っています。これらの標準に逆らうことは完全に可能ですが、最終的には、パスに沿ったどこかでISPに出くわすことになります。

お役に立てば幸いです。

6
CipherBytes

他の回答からの明確化のポイントとして、プライベートIPアドレス範囲ローカルで使用しているは、ルーティングテーブルに独自の明示的なエントリがあるため、インターネットにルーティングしません。たとえば、自宅のデスクトップのルートテーブルは次のとおりです。

$ ip route
default via 192.168.1.1 dev enp5s0 proto dhcp src 192.168.1.104 metric 1024 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
172.18.0.0/16 dev br-90a372f4b373 proto kernel scope link src 172.18.0.1 linkdown 
192.168.1.0/24 dev enp5s0 proto kernel scope link src 192.168.1.104 
192.168.1.1 dev enp5s0 proto dhcp scope link src 192.168.1.104 metric 1024

172.17.0.0/16および172.18.0.0/16。これらのネットワークへのパケットは、ルートテーブルに特定のエントリがあるため、コンピューターを離れることなく、ドッカーブリッジに直接送られます。 192.168.1.0/24エントリは、そのネットワークへのトラフィックがenp5s0 インターフェース。私のルーターのルートテーブルには、デスクトップが接続されているインターフェイスからプライベートネットワークのすべてのトラフィックを送信する同様のエントリがあります。

デフォルトルートに移動するのは、テーブルに明示的に示されていないネットワークのパケットのみです。次の方法で、ネットワークを到達不能として明示的にマークできます。

$ ip route add unreachable 10.0.0.0/8

これにより、ルートテーブルが次のように変更されます。

$ ip route
default via 192.168.1.1 dev enp5s0 proto dhcp src 192.168.1.104 metric 1024 
unreachable 10.0.0.0/8 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
172.18.0.0/16 dev br-90a372f4b373 proto kernel scope link src 172.18.0.1 linkdown 
192.168.1.0/24 dev enp5s0 proto kernel scope link src 192.168.1.104 
192.168.1.1 dev enp5s0 proto dhcp scope link src 192.168.1.104 metric 1024

現在、私のデスクトップは、その範囲のアドレスについてデフォルトゲートウェイに問い合わせようとはしません。そのアドレスのルックアップはすぐに「ホストへのルートなし」を返します。

$ traceroute 10.0.0.1
traceroute to 10.0.0.1 (10.0.0.1), 30 Hops max, 60 byte packets
connect: No route to Host

明示的にではない到達不能ネットワークのパケットmarkedルートテーブルで到達不可能であるため、パケットがネットワークに到達できないことを明示的に知っているルーターに到達するか、またはTTL期限切れ。

1
Karl Bielefeldt