IPv4 PPPoEでの拠点間VPNを構築していた。しかし、拠点先のPPPoEが輻輳しておりまともに通信ができない状態だった(PPPoEガチャ失敗)。また、昨今のIPv4 over IPv6の技術では殆どの場合が、IPv4アドレスが共有になっており、ポート開放に一部制限などがあり拠点間VPNを構築ができない。そこで今回IPoE環境でも一切制約を受けないIPv6アドレスでの拠点間VPNを構築した。
前提条件
- フレッツのV6オプションを契約していること
- HGWの配下にRTX830を利用している場合はIPv6フィルターの設定を無効化すること※
- OPEN IPv6 ダイナミックDNSでネームの取得を行うこと
※OPEN IPv6 ダイナミックDNSはNTT東日本エリアになるとNGN網内にDNSサーバがあるため、NGN折返しで通信が行える。(羨ましい)HGWのデフォルト設定のままでOK
ネットボランチDNSを使わない理由
ネットボランチDNSは一つの製品に対して、1ホストしか取得できない仕様。
だが、コマンドで3つぐらい取れたのでそこのとこイマイチよくわからない。
※2021年12月27日 追記 Yamahaのサポセンに聞いたところ「ネットボランチDNSホスト名はトラブル対策の為に複数取得可能ですが、同時に使用することはできません。(原文ママ)」とのことでした。基本的には同時使用はできないと思っていいと思います。
IPv4ですでにネットボランチDNSのホストを取得していたため、今回OPEN IPv6ダイナミックDNSを利用することにした。
Luaスクリプトの登録
OPEN IPv6ダイナミックDNSを取得した際に出てくる更新用ホスト名をメモしておく。
Luaスクリプトで1分ごとに更新ホストへPingを送るLuaスクリプトをCUIで設定する。
(GUIのコマンドの実行からでも有効。)
schedule at 1 *:*:00 * lua -e 'rt.command("ping6 更新用ホスト名")'
Config例
私が実際に設定したConfig例を記載します。あくまで当方の環境なため実際とは異なる場合がありますのであくまで参考例でお願いいたします。
フィルター設定
IPv6のフィルター設定を行う。GUIで既にIPv6の設定を行っている場合はフィルターのdynamic部分はコンフィグに書き込まれている。
#IPv6フィルター設定
ipv6 lan2 secure filter in 1010 1011 1012 1013 1040 1041 1042 1043
ipv6 lan2 secure filter out 3000 dynamic 100 101 102 103 104 105 118 119
#IPv6フィルター定義
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 * * udp * 500
ipv6 filter 1041 pass * * esp
ipv6 filter 1042 pass * * udp * 4500
ipv6 filter 1043 pass * * udp * 1701 #リモートでアクセスする場合はこの設定を追加
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
トンネル設定
トンネル番号はそれぞれ任意で設定する。また、GUI上で既に設定していて、V6プラス等を設定している場合はTunnel 1 にMAP-Eトンネルの設定がされている場合がある。ちなみに、Transix等のIPIPトンネルではCUIでトンネル設定を書き込む必要がある。ここにお好きなトンネル番号を設定すると良い。
ここでは、Tunnel 10 と定義する。
tunnel select 10
description tunnel10 (トンネル名) #GUIやCUIで表示されるトンネル名。
ipsec tunnel 1
ipsec sa policy 1 1 esp aes-cbc sha-hmac
ipsec ike keepalive log 1 off
ipsec ike keepalive use 1 on heartbeat 10 6
ipsec ike nat-traversal 1 on
ipsec ike pre-shared-key 1 text (相手との事前共有鍵)
ipsec ike remote address 1 (相手のOPEN IPv6ダイナミックDNSホスト名)
ip tunnel tcp mss limit auto
tunnel enable 10
ipsec auto refresh on
ゲートウェイの設定
接続先のローカルIPアドレスを入力する。ここでは相手先ローカルIPを192.168.10.0/24とする。
#拠点間ゲートウェイ設定
ip route 192.168.10.0/24 gateway tunnel 10
ここまで完了したら、相手先も同じように設定を行う。
実際に設定してみてつまづいた点
- ネットボランチDNSは1ホストしか取得できない。
- HGW配下の場合HGWのIPv6のフィルター設定を無効化する必要があった。
- GUIで設定すると不安定になること
IPv6の拠点間VPNはYAMAHAのConfig例を見てもうまく接続できずに、かなり苦戦した。
わからないことがあればYAMAHAさんのサポートにTECHINFOをぶん投げて助言をもらうとスムーズに設定が行えるのでわからないことがあったらサポートに投げてみよう!(投げやり)
まとめ
IPv4で拠点間VPNを構築した際はGUI上で脳死で構築できたため、IPv6でも簡単に行えるかと思ったが、かなかなかそうともいかず大変だった。GUI上でトンネル設定は簡単にできるがトンネル番号があやふやになってしまうため、極力CUI上や予めConfigを設定しておき、流し込むほうが良い。私自身、個人利用でYAMAHAのルーターを利用しているだけなので、大体は予めConfigを作って流し込むのが一般的なのかもしれない。(実務をしたことがない)
ここまで見ていただきありがとうございます。
ではまた。
参考サイト
こちらの方の動画も参考になりました。↓
コメント