10.0.0.0/8
、などのプライベートアドレスはルーティング可能172.16.0.0/12
で192.168.0.0/16
はないことを理解しています。しかし、これらのアドレスがルーティングできないようにする正確な理由は何ですか?ISPは、これらのネットワークのルーティングを防ぐACLを実装していますか、それとも上位のものですか?
また、このデザインを作成したのはIANAですか?
10.0.0.0/8
、などのプライベートアドレスはルーティング可能172.16.0.0/12
で192.168.0.0/16
はないことを理解しています。しかし、これらのアドレスがルーティングできないようにする正確な理由は何ですか?ISPは、これらのネットワークのルーティングを防ぐACLを実装していますか、それとも上位のものですか?
また、このデザインを作成したのはIANAですか?
回答:
プライベート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プライベートネットワークをマップできる場合があります。
通常、プライベートIPアドレスはISPによってフィルタリングされます。また、アクセスルーターがリークしないように構成する必要があります。
プライベートIPアドレスは誰でも使用できるため、インターネット上では使用できません。192.168.1.1を個人的に使用しているデバイスはおそらく何百万台ありますが、パケットを送信するインターネットルーターはどれですか?
Zeroconfアドレス(169.254.0.0/16)は実際にはルーティングできません。これらは、アドホックな方法でどこでも使用できますが、ローカルのもの以外のインターネットやサブネットにはアクセスできません。各デバイスが未使用のアドレスを単独で選択できるブロードキャストドメイン内でのみ有効であるため、ルーティングできません。定義上、zeroconfにはDHCPサーバーのような管理インスタンスはありません。
しかし、これらのアドレスがルーティングできないようにする正確な理由は何ですか?
通信するエンティティによって実施される受け入れられた標準。これらは、ソフトウェア、ハードウェア、および構成で実施されます。
ISPは、これらのネットワークのルーティングを防ぐACLを実装していますか、それとも上位のものですか?
彼らはできますが、実際に停止されているのは、標準に従わない単なる無効な翻訳です。
ほとんどのホームユーザーと同じように、パブリックIPアドレスとして割り当てられたIPアドレスが1つあります。接続されたすべてのデバイスからのトラフィックが通信するために、ルーターはNAT(ネットワークアドレス変換)またはPAT(ポートアドレス変換)を使用して、これらの内部IPアドレスの変換を実行します。
基本的に、ルーターは、LAN(ローカルエリアネットワーク)のどの内部IPアドレスが、LANの外側、ルーターを経由してWAN(ワイドエリアネットワーク)インターフェイスに到達するセッションを開始したかを記憶します。データがルーターを出ると、ソースIPとして割り当てられた単一のIPアドレスが含まれます。入ってくると、パケットには宛先IPと同じアドレスが含まれます。ルーターは、そこからどこに誘導されるかを決定します。
外部には、実際にはルーターのIPである単一のIPアドレスしかありません。ルーターは、これらのセッションを追跡し、LAN上の各内部IPアドレスに属するトラフィックを特定し、それに応じてそのトラフィックを誘導できます。複雑な管理プロセスですが、各ルーターですべてが変換されることを理解すれば、アイデアは実際には非常に簡単です。
さらに、ほとんどのホームルーターにはスイッチングポートがあり、IPアドレスではなくMACアドレスを介してトラフィックが配信されます。パケットの送信元MACアドレスは、ルーターに到達するまで同じままです。ルーターは、そのソースMACアドレスを削除し、独自のWANインターフェイスのMACアドレスを挿入します。
また、このデザインを作成したのはIANAですか?
これらの標準はもともとIANAによって設計されたものではありません。今日、彼らは基準を設定することで主導権を握っていますが、彼らは確かに法律の手段を通してそれらを強制しません。それらはコンセンサスによって実施される標準です。RFC 791を検索してください。
彼らは誰もが彼らに固執することをいとわない程度まで「権限」を持っています。これらの標準に完全に逆らうことは完全に可能ですが、最終的には、遵守することを要求するパスに沿ってどこかでISPにアクセスするか、トラフィックをドロップします。
それがお役に立てば幸いです。
他の回答からの説明として、ローカルで使用しているプライベート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
ルートテーブルで明示的に到達不能とマークされていない到達不能ネットワークのパケットは、ネットワークが到達不能であることを明示的に認識するルーターに到達するか、TTLが期限切れになるまで、デフォルトルートを介して転送され続けるだけです。