IPv6でNATを構築する(Ubuntu24.04)

VLANを使っているネットワークでIPv6を使う際、各VLANを割り当てる必要がありますが、
ひかり電話を契約していない環境だとIPv6のアドレスは1つのVLANにしか割り当てられない落とし穴がありました。
これは、ひかり電話を契約していない環境では、/64のプレフィックスを受信するため、さらにサブネット分割をできず、ひかり電話契約時は /56 ~ /63 のプレフィックスを受信するため、分割可能とのことです。(IPv6はIPv4と異なり、ネットワーク部とホスト部が/64で区切られるため、/64以降でサブネット分割できない)

NATを使うことで別のVLANからでもIPv6接続できるようにしました。

ただ、IPv6は使える様になりましたが、ブラウザがIPv4を優先する設定がのこっており、改善が必要そうです。

環境

ネットワーク図

ens19側のIPv6アドレスはユニークローカルアドレス(ULA)なので、fd00から始めます。

IPv6アドレスをクライアント側(ens19)に設定

エラーが出なければ完了です。

設定後は再起動します。
sudo netplan applyでも行けるはずだが、キャッシュが残っていてうまくいかなかった。

クライアントへULAをRA(IPv6アドレス割り当て)する設定をする

radvdをインストールしてens19に接続している端末にローカルIPv6アドレスを割り当てる設定、ens19のIPアドレスをデフォルトルートとする広告をする設定をします。

AdvDefaultLifetime 60;がポイントで、これを記述することで、ens19のIPアドレスをデフォルトルートとして広告するようになりました。

DNSサーバはRDNSS fd00:4::2~で記載しているので、適宜変更してください。

ens19のネットワークにPCを接続し、fd00:4から始まるIPv6アドレスを取得していれば成功で、ping fd00:4::3が通るはずです。

IPv6フォワーディング、NAT66の設定

ens18側とens19側がつながっていないので、つなぐ設定を行います。サブネットが異なるのでNAT66(IPv6 to IPv6)を設定しています。また、再起動をすると設定が消えてしまうので、恒久化設定も合わせて行います。

IPv6フォワーディングを有効化

恒久化設定

NAT66の設定

NAT66の恒久化設定

途中、現在の設定を保存するか聞かれるので、IPv4はNo、IPv6はYesとすると保存されます。表示されない場合や、設定を変更した場合は次のコマンドで上書き保存できます。

動作確認

クライアントPCで行います。

NATサーバとDNSサーバにpingを確認。これでエラーならサーバにIPv6アドレスが設定されているか、radvdが正しく設定されているか疑う。

DNSサーバで名前解決できることを確認。これでエラーだとDNSサーバでListenしていないので、サーバ側を疑う。

広告されているDNS設定を使って名前解決をする。これでエラーだと、radvdの設定に不備がありそう。

pingでGoogleに接続できればOK

課題

IPv6アドレスが正しく設定され、IPv6を指定するとインターネットに接続できることは確認できましたが、PCのブラウザからtest-ipv6.comへアクセスすると利用が回避されていると出てきます。また、Androidから接続すると、IPv6アドレスが割り当ててるにもかかわらずtest-ipv6ではIPv6アドレスが見えていないと出てきて、IPv6アドレスでインターネットに接続できていないです。

RFC 8305(Happy Eyeballs v2)を使って、IPv4とIPv6を試し、早い方を使うという話があり、digのスピードを比較しましたが、IPv6のほうが早く、違いそうです。

別の理由としてはIPv6はNATを利用せずつかう前提があるため、ULAではインターネットに接続されていないとみなし、使わない設定になっているのかもしれません。

ipv6のテスト結果

参考リンク

https://www.rtpro.yamaha.co.jp/RT/docs/ipoe/index.html#setting5

IPv6アドレスの取得方法について、一番詳細に書いてありました。
https://www.infraexpert.com/study/ipv6z5.html

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください