IPとは?IPv4、IPv6とパケットのルーティング
インターネットプロトコル(IP)は、IPアドレスを使ってネットワーク間でパケットを運ぶ仕組みです。現在、IPv4は32ビット、IPv6は128ビットのアドレスを使っています。IPが担うのはアドレス指定とルーティングで、IP自体はすべてのパケットが届くことも、順番どおりに届くことも、中身が保護されることも約束しません。必要な機能は、ほかのプロトコルやアプリケーションが補います。
パケットがネットワークを越える仕組み
IPパケットには送信元と宛先が記されています。ルーターは経路情報を参照して次の転送先を決めますが、経路はネットワークの状況や事業者のポリシーによって変わることがあります。IPv4にはTime to Live、IPv6にはHop Limitというフィールドがあり、どちらもパケットが転送されるたびに値が減っていくため、パケットが永遠に巡回し続けることはありません。パケットが失われた場合、必要に応じてTCPなどの上位層のプロトコルがデータを再送します。IPv4の仕様にあるとおり、IP自体はエンドツーエンドの信頼性や順序制御を提供しません。
IPv4とIPv6のアドレス表記
IPv4アドレスは、192.0.2.10のように4つの10進数で書くのが一般的です。IPv6アドレスは16進数のグループで表し、ゼロが続くグループを省略して2001:db8::10のように書くことができます。この2つの例は、実在する公開サービスではなく、ドキュメント用に予約された範囲のアドレスです。アドレスの後ろに/24や/64が付いている場合はプレフィックス長を表し、先頭からそのビット数がネットワーク部分を示します。広大なIPv6のアドレス空間はすでにインターネットで使われており、IPv6は単なる将来の計画ではありません。ヘッダーとHop LimitについてはIPv6の仕様で説明されています。
プライベートアドレスと外部からの到達性
192.168.0.0/16の範囲などのプライベートIPv4アドレスは、互いに関係のないローカルネットワークで重複して使えます。こうしたアドレスからパブリックなIPv4サービスに接続するときは、一般にネットワークの境界でアドレス変換が行われます。グローバルスコープのIPv6アドレスを持っていても、外部からその端末に接続できるとは限りません。ファイアウォールや事業者のポリシーで着信通信がブロックされていることがあるからです。また、パブリックIPアドレスは個人の身元を証明するものでもありません。NATで共有されていたり、動的に割り当てられていたり、プロキシなどの中継サーバーのものだったりすることがあります。
トラブルシューティングの手順
サイトが開かないときは、まず端末のアドレス、デフォルトゲートウェイ、DNSの名前解決を確認します。ドメインがAレコードとAAAAレコードの両方を返し、ブラウザーがどちらのアドレスファミリーで接続を試みることもあります。問題が起きているのが1つのサイトだけなのか、片方のプロトコルバージョンだけなのか、ネットワーク全体なのかを切り分けましょう。相手のサーバーが落ちていると判断する前に、宛先アドレスと経路を照らし合わせ、ローカルのファイアウォールルールも確認してください。問題を報告するときは、IPアドレスだけを写したスクリーンショットではなく、アドレス、プレフィックス、正確な時刻を記録しておきましょう。
地理的な「近さ」よりルーティングが重要
IPアドレスが指すのはネットワーク上の宛先であり、決して変わらない1台の物理サーバーや経路ではありません。BGPによってプレフィックスへの経路が変わることもあれば、エニーキャストで複数の拠点が同じプレフィックスを広報していることもあります。そのため、異なるネットワークにいるユーザーが、同じIPアドレスで別々のエッジノードにつながることがあります。BGPとASNとエニーキャストの記事もご覧ください。