自鯖(Apache Web Server)を IPv6 で公開する
もともと Apache Web Server は IPv6 に対応しているから、IPv6 で接続するために conf ファイルを変更する必要はない。基本的には DDNS を設定すれば https://jisaba.life に接続、表示できる。
なので、先の記事をもとに Apache Web Serverが動作している仮想マシンに IPv6 で接続できるように設定する。
インターフェースの追加
仮想マシンにインターフェースを追加して、/etc/network/interfaces に次を追記する。
Routed IPv6 Prefixes は 2001:470:22:22::/64。インターフェース ID は下位 64 bit の 0:0:0:3 で、LAN 内の他のクライアントと重複することはまずないだろう。gateway は ルーターの LAN 側インターフェースのアドレス。
DNS は Google の公開サーバーにしてみた。ダメなら Tunnel Broker の指定するネームサーバーに戻そう。
allow-hotplug enp6s19
iface enp6s19 inet6 static
address 2001:470:22:22::3
netmask 64
gateway 2001:470:22:22::1
# Google Public DNS
dns-nameservers 2001:4860:4860::8888 2001:4860:4860::8844
設定が終わったら sudo systemctl restart networking.service する。
この時点で ping6 がとおるハズだから、tunnel の Server 側アドレス 2001:db8:11:11::1 に対して疎通確認しておく。
DDNS の設定
続いて MyDNS.jp にログインして、Hostname「*」、Type「AAAA」、Content が空白のレコードを追加する。
これにより、サブドメインを含めた *.jisaba.life に IPv6 の接続があればサーバーに到達することになる。今はお試しだけど将来的にはルーターの LAN 側にリバースプロキシを設置して、サブドメイン毎に接続先を制御(SNI)するように変更しよう。
それから Tunnel Broker の画面に戻って、rDNS Delegations の右端の Edit をクリック、NS1 〜 NS3 に MyDNS のネームサーバー
ns0.mydns.jp 〜 ns2.mydns.jp を入力する。入力が終わったら登録のクリックを忘れないように。
これで、Routed IPv6 Prefixes の 2001:470:22:22::/64 は MyDNS.jp に委任されたことになる。
ここまでの設定で IPv6 ネイティブな環境からブラウザで https://jisaba.life/ にアクセスできるようになっているハズ。
というのも、自分の環境にはネイティブな IPv6 接続手段が Tunnel Broker 以外に無いから、本当に外部からアクセスできているのか不明。
先に設定した IPv6 な仮想マシンのブラウザからは接続できることは確認している。
あとは、必須じゃないけど cron で、仮想マシンのアドレス(Prefixes)が変更された場合の自動更新を次のスクリプトで実行する。アドレスが変わるタイミングは、ISP から DHCP で付与される WAN 側の IPv4 アドレスが変わったときと、ルーターに設定したトンネルのエンドポイントの内部アドレスを(意図的に)変更したとき。
#! /usr/bin/sh
curl https://MasterID:Password@ipv6.mydns.jp/login.html
/etc/cron.d/ に mydns という中身が次のファイルを作って定期的に実行する。頻繁に更新するのはダメだから、とりあえず1日2回にしておこう。
* */12 * * * root /usr/local/sbin/mydns/jisaba-life-ipv6.sh /dev/null 2>&1
本当は、サーバー自身のアドレス変更の有無を確認して、変更があったときだけ更新するほうが適切。なので後ほど、IPv4 で使用中の自動更新スクリプトをコピーして修正する。
他にも、Tunnel Broker の登録情報を自動更新する必要がある。
手動更新は 更新用URL にログイン(Basic 認証)すればいいらしいから、こちらも curl で何とかなるかな。_Tunnel_ID_ は自分のものに置き換えること。ちなみに、連続してログインすると「乱用」と叱られてしまう。
最後に
クライアントのアドレスに関しては、ステートレスな RA/SLAAC と、これまでの IPv4 の世界に近いステートフル DHCPv6 のどちらが最適なのかわからない。でも、多くの端末を固定 IP で管理したいようなケースは自鯖環境では無さそうだから、今回試してみた RA/SLAAC で良いかと思う。(ややこしいIPv6アドレス自動設定の話)
とりあえず 128 bit の広大なアドレス空間に触れてみて戸惑うことが多々あるけど、おおげさに書くなら新たな世界が待っているような感じ。
(ケーブルインターネット頑張れ!)