2018/02/10(土)〔続き〕(自宅の)インターネットで IPv6 が使えるようになった。FreeBSD pfのNAT66 を採用・・

先日の続きです。
単純な構成なら、問題なく IPv6/IPv4 のデュアルスタックで動作するようなのですが、筆者のLAN環境は通常業務とシステム開発の両方を同時進行で行うため、歴史的経緯で以下のような変な構成になっています。(機器類はもっと数あるんですが、かなり端折って書いています)
20180210_1.png
「IPv6 の接続優先度を下げる」という事例は沢山ありますが、その逆は殆ど事例がありません。
何故なら、デュアルスタックにおけるデフォルトの挙動が『IPv6 優先』だからなのです。

当方のように「IPv4 接続がどうしても優先される(IPv6 でつながる場合もある)」という不可解な現象は、Windows10 においては、LANが複数あってインターネットへの接続ができる場合に特定のLANが優先的に選択され、選択されたLANが IPv4 しか通信できないと、見かけ上 IPv4 優先に見えるのではないか、という推測を立ててみたわけです。

具体的には「実験環境用ルータ兼サーバ」と記したサーバに NAT66 を設定することでほぼ解決しました。
'NAT66' とは IPv4 における NAT の IPv6 版といった感じです。
'NAT64' という機構もあるのですが、ここでは割愛します。

当該サーバのLANカード情報を以下に示します。
このサーバには、LANカードを2枚挿しし、相互に通信できるようにしていますが、
re1 → re0 への通信において NAT66 を設定しています。
20180210_2.png
①がプロバイダと接続する IPv6 アドレスで、このIPアドレスは今回使用しているプロバイダの提供機能上、半固定です。
何故「半固定」という謎仕様なのかは、最低限 IPv6 の基礎を理解する必要があるため、今は「そのようなものだ」と思っておいてください。

②が実験・製品開発業務用に使うLAN2のルータIPアドレスで、fdxx: で始まる「ユニークローカルユニキャストアドレス」というもので、IPv4 でいうところの「プライベートIPアドレス」に相当します。

/etc/rc.conf に以下のように設定します。(IPv6 関連のみ抜粋。この他に pf の設定も忘れないように。)
20180210_4.png
/etc/pf.rules (任意のファイル名で可能)には、下記のように設定します:
20180210_5.png これは、必要最低限の設定です。ぼかしてあるところは設定の必要ありません。

こうすることで、どちらでアクセスしても IPv6 で通信可能であれば、IPv6 が優先するはずです。再起動して再度、例のサイトでチェックしてみました。
20180210_3.png
このIPアドレスに見覚えないでしょうか?
この記事の2枚目の画像キャプチャ中で「①」と示したIPアドレスと一致します。
NAT66 が機能し、且つIPv6 アクセスが出来ていることが確認できました。

IPv6 接続を優先すると、「従来の IPv4 接続に時間かかるだろうが!」と思われる諸氏もいるかもしれませんが、それは、IPv6 でインターネット接続が出来ない環境での話。
筆者の環境は「IPv6 でインターネット接続が出来るようになった」ため、IPv4 接続が出来ない状態にならない限り、そういう現象には出くわさないです。

この数年、技術的記事ネタ切れ状態でしたが、暫く「IPv6の基礎」ネタで技術的な記事が書けそうです。(苦笑)