
ping などのツールや、TCP/IP プロトコルを使用するその他のツールは、たとえば 192.168.1.1 または 10.0.0.1 がローカル IP アドレスであり、8.8.8.8 または 74.142.23.95 がパブリック IP アドレスであることをどのようにして認識するのでしょうか。192.168.xx と 10.0.xx は、ローカル使用のために保存されるようにハードコードされているのでしょうか。
答え1
そうですね予約済みによるRFC1918 の翻訳プライベートネットワークでの使用向け。
しかし、それは実際にはあまり問題ではありません。RIPE などから「パブリック」 IP アドレスのブロックを取得し、それをプライベート ネットワークに使用すれば、すべて正常に動作します。予約は、管理者が問題なく独自のプライベート ネットワークを設定できるようにするために、政治的な理由でのみ必要です。
次のようなツールping
気にしないアドレスが「プライベート」か「ローカル」か「パブリック」かはわかりません。指定されたアドレスにパケットを送信するだけで、OSはルーティングテーブル次にどこへ送るかを決めるためです。
たとえば、Windows 上で IP アドレス10.2.3.4/16
(ネットマスク形式: 255.255.0.0
) とゲートウェイ を使用してイーサネット カードを構成すると10.2.0.1
、ルーティング テーブルに次のエントリが追加されます。
10.2.3.4/32
(ネットマスク255.255.255.255
) インターフェースLoopback
(自分のアドレスは常にループバック インターフェイスを介してルーティングされ、ネットワークには送信されません。)
10.2.0.0/16
(ネットマスク255.255.0.0
) インターフェースLocal Area Connection
(独自のサブネット内のアドレスは、定義上、ローカルです。)
0.0.0.0/0
(ネットマスク0.0.0.0
) ゲートウェイへ10.2.0.1
(その他はすべてローカルではありません。)
言い換えると、OSに伝えた範囲内のすべてのアドレスは10.2.0.0/16
ローカルであり、OS がすべてを処理します。
ルーティング テーブルを表示するには:
- Linuxでは、
ip route
(IPv4)とip -6 route
(IPv6) - Windows の場合
route print
(XP 以降では IPv4、Vista 以降では v4/v6 の両方) - Windows XPの場合
netsh interface ipv6 show route
(IPv6) - Windows、Linux、BSD、その他のUnix系OS
netstat -r -n
(IPv4) - Linuxおよび一部のUnix系OS
netstat -r -n -6
(IPv6)
ルーティング テーブルの編集も同じツールで実行できます。たとえば、すべてを172.16.0.0/16
ローカルとしてマークするには、Linux で を使用できますip route add 172.16.0.0/16 dev eth0
。
答え2
パブリック IP アドレスとプライベート IP アドレスは RFC で定義されています。プライベート IP アドレスは次のとおりです。
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
また、次の IP アドレスはループバックです。
127.0.0.0/8
その他は公開されています。
ほとんどのツールでは、パブリック IP アドレスまたはプライベート IP アドレスを知る必要はありません。