IPoE を使い IPsec で LAN 間 VPN を構築する時のフィルタや、運用時の IPv6 アドレスの利用について書いてみます。実はこのような VPN を構築する場合、様々な構成が考えられますが、構成によって、IPv6に対するフィルタは変わってくるので、少しでも参考になれるよう、試行錯誤した内容をまとめてみました。

例えば、1台のルータで DS-Lite や V6プラスで IPv4 でインターネットへ接続できるように、そして取得したグローバル側の IPv6 アドレスを、LAN 内へ配布し、加えて IPsec を使った LAN 間 VPN も構築する なんていう盛り沢山の構成にしたり、また、IPv4 は固定IPアドレスとして、内側にあるサーバへポートフォワーディングを行う とか、考え出すときりがありません。

また、万が一 IPoE の経路に障害が発生してもリモートでアクセスできるよう、従来の PPPoE+固定IPアドレスという裏口を残しておきたい という要望があったり、静的ルーティングをやめ、OSPF 等のダイナミックルーティングを使いたい となると、メーカーが用意している設定例をそのままでは利用できなくなり、様々な設定例をミックスしたり、新たに設定を追加する事となります。

このような場合には、無理して1台のルータに機能を詰め込まず、まずは役割毎にルータを物理的に分けて設定を行い、分割した機能が正常に実装されているかどうか、丁寧に検証し、動作の確認が取れた時点で、分割したルータで稼働している機能を統合するようにすると、結果的に、楽に、早く、実装することが出来ます。

今回の例では、

    • ひかり電話の契約は無し
    • ONU 直下にスイッチングハブを置き、そこへ2台のルータを接続する
    • 1台は、IPoE を使い DS-Lite または V6プラスでインターネットへ接続する
      加えて、取得したグローバル IPv6 アドレスは、LAN 内へ再配布する
    • 別の1台では IPsec で LAN 間 VPN(IPv4 over IPv6)を行う

という構成にしました。
この中の、LAN 間 VPN 担当のルータにおける IPv6 フィルタを例示します。

ipv6 lan2 address auto
ipv6 lan2 secure filter in 1010 1011 1012 1013 1040 1041 1042
ipv6 lan2 secure filter out 3000 dynamic 100 101 102 103 104 105 118 119
ipv6 lan2 dhcp service client ir=on

ipv6 filter 1010 pass * * icmp6 * *
ipv6 filter 1011 pass * * tcp * ident
ipv6 filter 1012 pass * * udp * 546
ipv6 filter 1013 pass * * 4
ipv6 filter 1040 pass * * ah,esp
ipv6 filter 1041 pass * * udp 500 *
ipv6 filter 1042 pass * * udp * 500
ipv6 filter 3000 pass * * * * *
ipv6 filter dynamic 100 * * ftp
ipv6 filter dynamic 101 * * domain
ipv6 filter dynamic 102 * * www
ipv6 filter dynamic 103 * * smtp
ipv6 filter dynamic 104 * * pop3
ipv6 filter dynamic 105 * * submission
ipv6 filter dynamic 118 * * tcp
ipv6 filter dynamic 119 * * udp

LAN2 は、ONU へ接続されているので、自力でグローバル IPv6 アドレスを取得します。

ipv6 lan2 dhcp service client ir=on

IPoE 接続時に標準的に使うフィルタに加えて、IPsec で使うプロトコルを許可します。
具体的には、1040, 1041, 1042 が、該当のフィルタになります。ヤマハの設定例(IPsec を使用した VPN 拠点間接続)とは異なりますが、L2TP や NAT トラバーサルは使わないので、こちらの設定例(IPsec を通すフィルタ設定例)を参考にして、このように設定しています。

この VPN 用ルータが、LAN 内の IPv6 でのデフォルトゲートウェイにならないとは思いますが、仮にそうなっても大丈夫のように ipv6 lan2 secure filter out に、最低限のフィルタを書いておきます。

以前書いた、IPoE を使った LAN 間 VPN も、参考にしてみてください。

 運用時に気を付ける点

LAN 間 VPN なので、複数のローカルセグメントが VPN で接続されます。LAN 間接続された異なるセグメントにおいて、IPv4 はローカル IP アドレスを使っているので、ルータで静的 NAT 等を使わない限り WAN 側からアクセスされることはありません( NAT トラバーサルは除く)。

しかし、IPoE によって取得したグローバル側の IPv6 アドレスを LAN 内に配布すると、以下の様な問題が発生します。

例えば、Windows AD server が、それぞれのセグメントに存在すると、所属する LAN 内で取得したグローバル IPv6 アドレスを、ローカル側で使っている DNS サーバへ、自動的に登録します。

同じサーバに対して IPv4 のアドレスと IPv6 のアドレスが設定されていると、IPv6 が優先されグローバル側の IPv6 アドレスを使って接続しようとします。

しかし、LAN 間 VPN では IPv6 は通していない(ローカルの IPv4 通信だけが対象)ので、他セグメントにあるサーバに対し、グローバル側の IPv6 アドレスを使ってインターネット側からの直接アクセスしようとしますが、ルータにて拒否(一般的には IPv6 であっても、グローバル側の任意のホストからの接続は拒否)され、Windows AD server 間の通信や、LAN 内の端末から他セグメントにある Windows server へのアクセスが出来なくなります。

この問題を解決するには、以下の方法が考えられます。

  1. IPoE で取得したグローバル側の IPv6 アドレスは、LAN 間 VPN だけに使用し、LAN 内へは配布しない。つまり LAN 内は IPv4 だけで運用し、インターネットへのアクセスも IPv4 だけを利用する。
  2. IPoE で取得したグローバル側の IPv6 アドレスは LAN 内へ配布するが、Windows server やローカル側で使っている DNS サーバでは IPv6 アドレスを利用しない。
    Windows server では、イーサネットのプロパティで IPv6 のチェックを外す、Linux サーバであれば該当のインターフェースの設定で、#iface eth0 inet6 auto のように IPv6 の設定をコメントアウトする。

1の方法は、PPPoE+IPv4 固定 IP アドレスという運用環境の置き換えであれば、従来通りというか何も変化しませんが、せっかく IPoE で取得したグローバル側の IPv6 アドレスを有効利用できません。

2であれば、クリティカルなネットワーク障害は解消できますが、IPv6 の設定が生きている端末や NAS 等に対し、設定内容によっては、他セグメントにいる機器から、リモートデスクトップ接続ができない、NAS にアクセスが出来ない等の問題が起きるかもしれません。

もちろん、拠点毎のルータで IPv6 のフィルタを工夫して、指定された IPv6 のプレフィックスからの通信は許可すれば問題は解決できそうですが、IPv4 に比べ極めて広大な IPv6 のアドレス空間とはいえ、グローバル側から直接 LAN 内への通信を許可するのは、セキュリティ的にちょっと怖いような気がします。

もしかすると、IPsec を使った LAN 間 VPN で、IPv6 の通信も通せるような設定があるかもしれないので、これからの課題として調査・検証を進めたいと思っています。