Webサイト管理者のための2020年版“IPv6対応入門”第3回
IPv6ネットワークへの接続からIPv6アドレス設定、DNS登録など、知っておくべきこと
Webサーバーの設定を変更して「IPv6対応サイト」にする【前編】
(1)サーバーの固定IPv6アドレス設定
まずは(1)ホスト自身のIPv6アドレスの設定方法からだ。その設定方法には次の3種類がある。
●手作業での設定
●自動設定:SLAAC(StateLess Address Auto Configuration)
●自動設定:DHCPv6(ステートフル/ステートレス)
まず結論から言うと、サーバーに固定IPv6アドレスを設定したい場合は「手作業」または「DHCPv6(ステートフル)」で設定することになる。なぜそうなるのかを説明しよう。
SLAAC(RFC 4862、スラークまたはスラックと読む)は、IPv6プロトコルが標準で備える自動設定プロトコルである。過去のIPv4にはこうした仕組みがなかったため、別途DHCPなどの仕組みを付け加えて自動設定を可能にしていた。IPv6ではその仕組みが標準で組み込まれたわけだ。DHCPのように管理サーバーを立てる必要がないので、とても便利な自動設定の仕組みだと言える。
SLAACでは、ホスト自身が自動生成したIPv6アドレスを自らに設定する。その仕組みを簡単にまとめると、リンクローカル(同じサブネット内)にあるルーターがマルチキャストで送信する「RAメッセージ(RA:Router Advertisement)」に含まれるネットワーク識別子(プレフィックス)と、ホストが自ら生成するインタフェース識別子を組み合わせることで、ホスト自身のIPv6アドレスを自動設定するというものだ。
ただしSLAACで設定されるのは、その名のとおり“ステートレス”なIPv6アドレスである。これは「常に同じアドレスが割り当てられる保証はない」という意味だ。つまり、ホストがネットワークに接続するたびにIPv6アドレスが変わる可能性がある。クライアントPC のIPv6アドレス設定ならば問題ないが、固定IPアドレスが必要なサーバーの場合には適していない(固定IPアドレスが必要ない開発/テスト用サーバーならば便利に使える)。
自動設定方法としてはもうひとつ、DHCPv6(RFC 3315)もある。IPv4で使われるDHCPとは異なるプロトコルだが、大まかな仕組みとしては同じだ。すなわち、ホスト上のDHCPv6クライアントとDHCPv6サーバーが通信を行い、サーバー側で一元管理されているIPv6アドレスの割り当て(リース)を受ける仕組みである。ルーターはRAメッセージに含まれる「Mフラグ(Managementフラグ)」の値を「1(有効)」に設定し、ホストに対してDHCPv6を利用したIPv6アドレス設定を促す。
したがって、DHCPv6サーバー側であらかじめホストのMACアドレスと割り当てるIPv6アドレスをひもづけて登録しておけば、いつでも同じ、固定のIPv6アドレスを自動設定できるようになる。
なお上述の説明は、DHCPv6の「ステートフル」モードでの動作内容である。もうひとつの「ステートレス」モードでは、ホストのIPv6アドレス設定手段として前述のSLAACを使うため、固定IPv6アドレスが必要な用途には向いていない※注。
ここまで説明してきた理由から、サーバーに固定IPv6アドレスを設定したい場合は「手作業」または「DHCPv6(ステートフル)」で設定することになるわけだ。
※注:ステートレスDHCPv6では、ホストへのIPv6自動設定にSLAACを使う一方で、キャッシュDNSサーバーの自動設定はDHCPv6サーバーから情報を配信する(ルーターがRAメッセージの「Oフラグ=Otherフラグ」の値を1に設定し、DHCPv6サーバーから情報取得するよう促す)。IPv6が開発された当初はSLAACのRDNSSオプション(後述)が存在せず、DNSサーバーを自動設定する代替手段としてステートレスDHCPv6が使われた。
(2)(3)キャッシュDNSサーバー/デフォルトルートの設定
キャッシュDNSサーバーの設定方法も、ホストIPアドレスと同じように手作業/SLAAC(+RDNSS)/DHCPv6という3種類がある。
SLAACの場合は、ルーターがRAメッセージを使ってホストにキャッシュDNSサーバーの情報を配信する「RDNSSオプション」(RFC 8106)が用意されている。RAメッセージ送出にRDNSSオプションが利用できるルーターの場合、これを利用して自動設定が行える。ただし、SLAACを使わなければRDNSSオプションも使えず、サーバーの場合はここでも手作業かDHCPv6ということになる。
DHCPv6では、DHCPv6サーバーが配信するキャッシュDNSサーバーの情報を受け取り、DHCPv6クライアントがそれをホストに自動設定する。IPv4と同じ仕組みだ。
最後に、ホストのリンクローカル(同じサブネット内)にある近接ルーター、デフォルトルートのIPv6アドレス設定だ。ここも手作業で設定できるが、IPv6が標準で自動検出機能(近隣探索プロトコル=NDP:Neighbor Discovery Protocolの一部、RFC 4861)を備えているので、通常は手作業で設定する必要はない。ホストをIPv6ネットワークに接続するだけで、自動的に近接ルーターを検出し、設定されるのでシンプルだ。
このルーター自動検出も、前述のRAメッセージを使って行われる。ネットワークに接続されたホストは、サブネット内のルーターが定期的に(あるいは新規ホストの接続時に)マルチキャスト送信するRAメッセージを受信することで、リンクローカルにあるルーターの存在を知る。このRAメッセージの送信元アドレスを、そのままデフォルトルートとして登録することで自動設定が完了する。