ネクストのIPv6網内折り返し通信で高速VPN

(2021/04/08 ネクストをとりまく状況も変わっていますので書き直しました)

 ネクストでは半固定で割り当てられるIPv6アドレスの網内折り返し通信が可能です。西日本では「v6オプション」の申込みが必要だったのが2021年5月11日の新規開通分からはデフォルト有効になり申込みの必要も無くなります。東日本では以前からデフォルト有効。

IPv6アドレス半固定というのが若干問題ですが最近のRTXシリーズではFQDNで張れば大丈夫です。

別途ダイナミックDNSを登録してFQDNでVPN、、、という記事もありますが、NTT西日本のサイトをよく読むと「v6ネーム」はIPv6アドレスが変わっても追従すると書いています。うちでも、ひかり電話を契約したり解約したり、IPv6プロバイダーを契約したり解約したり別のプロバイダーからもらい直したりを繰り返しそのたびにIPv6アドレスが変わりましたが、ちゃんと追従してくれていました。安心して「v6ネーム」を使って大丈夫。

以下はいまさらデフォルトゲートウェイがPPPoE設定ですが、汎用性があるということでそのまま残しておきます。いまうちで実際に運用サポートしているユーザ企業は、IPoEプロバイダーと固定IPv4の契約をしてIPv6とIPv4のVPNを2重化する構成で自動切り替え設定もしていますがまたそれは別途。良ければ声をかけてください。

Luaスクリプトの動くヤマハでないとIPoE系プロバイダで固定IP使えないし、古いRTXはこの際一掃して現行モデルを使います。今買うならRTX830/RTX1210。RTX1200もいい機種でしたがEMFS(メモリファイルシステム)使えないからlua入れるのが面倒だしそろそろメインからは引退。


RTXの設定

対向拠点の設定は192.168.1を192.168.0に入れ替えるだけで同じ。ひかり電話なし契約IPv6はRAです。ひかり電話があってもホームゲートウェイのLANポートに接続するのでこの例で大丈夫です。テストではホームゲートウェイの型番が400シリーズ以降なら速度低下はないようです。ひかり電話オフィスは別途。
<IPv4LAN関係>
ip route default gateway pp 1
ip lan1 address 192.168.1.1/24
ip route 192.168.0.0/24 gateway tunnel 1

<IPv6関係>
念のためLAN2側にフィルタ入れてあります。LAN内にもIPv6を配布してます。
ipv6 prefix 1 ra-prefix@lan2::/64
ipv6 lan1 address ra-prefix@lan2::1/64
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan1 dhcp service server
ipv6 lan2 secure filter in 1030 1031 1032 1033 1034 1035 1036 2000
ipv6 lan2 secure filter out 3000 dynamic 100 101 102 103 104 105 106
ipv6 lan2 dhcp service client ir=on

<IPv4プロバイダ認証>
pp select 1
 pp always-on on
 pppoe use lan2
 pppoe auto disconnect off
 pp auth accept pap chap
 pp auth myname USER PASSWORD(プロバイダーの認証IDとパス)
 ppp lcp mru on 1454
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ip pp mtu 1454
 ip pp secure filter in 1020 1030 1040 1041 1042 1050 2000
 ip pp secure filter out 1010 1011 1012 1013 1014 1015 3000 dynamic 100 101 102 103 104 105 106
 ip pp nat descriptor 1
 pp enable 1

<トンネル1 メインで使う。IPv6-ipsecの場合。>
tunnel select 1
 ipsec tunnel 1
  ipsec sa policy 1 1 esp 3des-cbc md5-hmac
  ipsec ike keepalive log 1 off
  ipsec ike keepalive use 1 on
  ipsec ike nat-traversal 1 on
  ipsec ike pre-shared-key 1 naishonokey
  ipsec ike remote address 1 xxx.p-ns.flets-west.jp (対向ルータのv6ネーム)
 ip tunnel mtu 1446
 ip tunnel tcp mss limit auto
 tunnel enable 1

<トンネル1 メインで使う。IPv6-IPIPの場合。切れても心配のないIPIPは実家と繋ぐとかにはいいかも>
tunnel select 1
 tunnel encapsulation ipip
 tunnel endpoint name xxx.p-ns.flets-west.jp fqdn (対向ルータのv6ネーム)
 ip tunnel mtu 1460
 ip tunnel tcp mss limit auto
 tunnel enable 1

<トンネル2 保険。PPPoEしたあとIPV4-ipsec>
tunnel select 2
 ipsec tunnel 2
  ipsec sa policy 2 2 esp 3des-cbc md5-hmac
  ipsec ike keepalive log 2 off
  ipsec ike keepalive use 2 on
  ipsec ike local address 2 192.168.1.1
  ipsec ike pre-shared-key 2 naishonokey
  ipsec ike remote address 2 (対向拠点で契約している固定グローバルIPv4アドレスやFQDN)
 ip tunnel mtu 1392
 ip tunnel tcp mss limit auto
 tunnel enable 2

<フィルタの定義>
ip filter 1010 reject * * udp,tcp 135 *
ip filter 1011 reject * * udp,tcp * 135
ip filter 1012 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 1013 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 1014 reject * * udp,tcp 445 *
ip filter 1015 reject * * udp,tcp * 445
ip filter 1020 reject 192.168.1.0/24 *
ip filter 1030 pass * 192.168.1.0/24 icmp
ip filter 1040 pass * 192.168.1.1 udp * 500
ip filter 1041 pass * 192.168.1.1 esp
ip filter 1042 pass * 192.168.1.0/24 gre
ip filter 1050 pass xxx.xxx.xxx.xxx * tcp * telnet (対向拠点で契約している固定グローバルIPv4アドレス)

ip filter 2000 reject * *
ip filter 3000 pass * *
ip filter dynamic 100 * * ftp
ip filter dynamic 101 * * www
ip filter dynamic 102 * * domain
ip filter dynamic 103 * * smtp
ip filter dynamic 104 * * pop3
ip filter dynamic 105 * * tcp
ip filter dynamic 106 * * udp

<NATの定義>
nat descriptor type 1 masquerade
nat descriptor timer 1 300
nat descriptor timer 1 protocol=udp port=domain 30
nat descriptor address inner 1 auto
nat descriptor masquerade incoming 1 reject
nat descriptor masquerade rlogin 1 on
nat descriptor masquerade static 1 1 192.168.1.1 udp 500
nat descriptor masquerade static 1 2 192.168.1.1 esp
nat descriptor masquerade static 1 3 192.168.1.1 telnet
nat descriptor masquerade session limit 1 1 500

<IPv6のフィルタ定義>
ipv6 filter 1010 reject * * udp,tcp 135 *
ipv6 filter 1011 reject * * udp,tcp * 135
ipv6 filter 1012 reject * * udp,tcp netbios_ns-netbios_ssn *
ipv6 filter 1013 reject * * udp,tcp * netbios_ns-netbios_ssn
ipv6 filter 1014 reject * * udp,tcp 445 *
ipv6 filter 1015 reject * * udp,tcp * 445
ipv6 filter 1030 pass * * icmp6 * *
ipv6 filter 1031 pass * * tcp * ident
ipv6 filter 1032 pass * * udp * 546
ipv6 filter 1033 pass * * esp
ipv6 filter 1034 pass * * udp 500
ipv6 filter 1035 pass * * 4
ipv6 filter 1036 pass * * udp * 4500
ipv6 filter 2000 reject * * * * *
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 * * tcp
ipv6 filter dynamic 106 * * udp

<ほか>
ipsec auto refresh on
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.1.200-192.168.1.240/24
dns private address spoof on
schedule at 1 */* 00:12 * ntpdate ntp.jst.mfeed.ad.jp

<DNS>
IPv4はGoogleDNS、IPv6はネクスト地域網のIPv6DNSを使うのがとりあえずどの回線でも使える設定。詳細は以下で説明します。
dns server select 1 2001:a7ff:5f01::a 2001:a7ff:5f01:1::a any flets-west.jp
dns server select 2 2404:1a8:7f01:a::3 2404:1a8:7f01:b::3 any flets-east.jp
dns server select 100 8.8.8.8 8.8.4.4 any .

DNS名前解決とv6ネーム

設定例をアレンジしていると、v6ネームが引けなくなる時があります。たとえば
dns server pp 1

とするとv6ネームが引けません。xxx.p-ns.flets-west.jp(西日本)なv6ネームをプロバイダーのDNSサーバは名前解決できないからです。 v6ネームの名前解決ができるのは、NTTフレッツ網が提供しているDNSサーバだけです。

プロバイダーからIPv6 IPoEでインターネットリーチャブルなIPv6をもらっている場合は
dns server dhcp lan2
で、フレッツ網から取得したNTT東西のIPv6 DNSが、IPv4もIPv6もフレッツ網内のホスト名もグローバルなホスト名もなんでも答えます。応答も速いので使いやすいです。

v6オプションだけでプロバイダのIPv6アドレスをもらっていない時、NTT東西のDNSは、NTT網内ホストの名前解決はしますがグルーバルなホスト名は答えません。クライアントのIPv6アドレスを見て応答を変えているようです。

解決策はIPv6の名前解決はフレッツ網のDNS。IPv4の名前解決はプロバイダーかGoogleなどのパブリックDNSサーバを使います。
http://www.rtpro.yamaha.co.jp/RT/FAQ/FLETS-HIKARI-NEXT/hikari_tv.html

おすすめ1(?)ヤマハ社の設定例。IPv6はIPoEで自動取得つまりNTT網のDNS。IPv4はPPPで自動取得したDNS。
dns server select 1 dhcp lan2 aaaa .
dns server select 2 pp 1 any . restrict pp 1

ただ現行モデルではこれでもいいのですが、旧機種のRTX1200などではdns server dhcp lan2 でDNSサーバアドレスを取得できないことがあるようなので本命は次。

おすすめ2 IPv4は従来どおりPPPoE。IPv6のみIPoEでNTT網内のみアクセスできる環境。
東西の網内ドメインの名前解決DNSはNTT、そうでないものはGoogle-DNS。
(IPoE系プロバイダでIPv6もIPv4もインターネットアクセスできる環境だったとしても、お子さんのいる家庭で広告やアダルトブロックDNSを使いたいときは、この書式を使って8.8.8.8の代わりにAD-GuardやCiscoのDNSを指定するなど、この指定方法は便利に使えます。)
dns server select 1 2001:a7ff:5f01::a 2001:a7ff:5f01:1::a any flets-west.jp
dns server select 2 2404:1a8:7f01:a::3 2404:1a8:7f01:b::3 any flets-east.jp
dns server select 100 8.8.8.8 8.8.4.4 any .


おすすめ3 IPoE系プロバイダでIPv6もIPv4もインターネットアクセスできる環境のとき。
IPv4もIPv6もすべて名前解決はNTT網内のDNS。NTT東西でアドレスが違うのに注意。
NTT西エリア
dns server 2001:a7ff:5f01::a 2001:a7ff:5f01:1::a
NTT東エリア
dns server 2404:1a8:7f01:a::3 2404:1a8:7f01:b::3

IPsec/IPIPトンネルの最適なMTU

YAMAHAのトンネルのデフォルトはMTU=1260と小さめです。回線で使える上限まで上げることで、1割から2割ほど速度が上がる感じです。ただし回線で使えるMTUを越えて設定すると数十Mbps〜数百Kbpsに急激に下がります。設定をミスって逆に失敗するくらいならデフォルトの1260のままでもいいのですが最大まで使いたいというときはこちら。IPsecトンネルの最大値は3DESとAESで違うので注意します。いまさら3DESと思うかもしれませんがAESを使うのは不安。最近のヤマハには3DESもAESも専用チップが入っているようのですが負荷をかけたときAESでハングアップして泣かされました。実はヤマハのサイトでも
http://www.rtpro.yamaha.co.jp/RT/FAQ/IPsec/normal-encryption-algorithm.html
暗号アルゴリズムには何を用いたら良いですか?
基本的には、3DES-CBCの利用をお勧めします。ただし、AESをハードウェアで実装している機種同士で通信する場合には、 AES-CBCをお使いいただくのが良いと考えます。
と書いていますから、まずは3DESでも大丈夫です。
参考
http://www.rtpro.yamaha.co.jp/RT/FAQ/IPsec/faq_2_l.html
https://jpn.nec.com/univerge/ix/faq/ipsec-ike.html

ネクストIPoE回線で(MTU=1500)

    IPv4 over IPv6 IPIPトンネルのMTU=1460(ヘッダサイズ40バイト)
    ip tunnel mtu 1460
    ipsec 3DES-CBC MD5-HMACトンネルのMTU=1446(ヘッダサイズ54バイト)
    ip tunnel mtu 1446

ネクストIPoEのDS-Liteやv6プラスしたあとの回線で(MTU=1460)

    ipsec 3DES-CBC MD5-HMACトンネルのMTU=1406(ヘッダサイズ54バイト)
    ip tunnel mtu 1406

ネクストPPPoE回線で(MTU=1454)

    ipsec 3DES-CBC MD5-HMACトンネルのMTU=1398(ヘッダサイズ54バイト)
    ip tunnel mtu 1398

その他

旧機種のRTX1200でIPIPトンネルのfqdn指定はNG

IPIPではtunnel endpoint name・・でFQDNを対向先として設定は入るのですがトンネルUPしません。IPIPでは従来からのtunnel endpoint address・・の書式でIPv6アドレスを直接指定が必要です。
ipsecではFQDNを対向先に指定しても問題なくトンネルUPします。

ipip keeapliveはネクストのIPv6ではだめだった

最近のファームではIPIPにkeepalive機能が付いているのですがネクスト回線ではだめでした。手元でLANポートを直結してテストしたらちゃんと機能したんですけどね。これもネクストの優先制御の何かにひっかかってるのかな?

まとめ

県内だと概ね5ms以下、滋賀から京都、大阪、兵庫にも10ms以下のVPNが張れます。

参考
IPsecを使用したVPN拠点間接続(IPv6 IPoE) : コマンド設定
https://network.yamaha.com/setting/router_firewall/ipv6/ipoe_ipsec

コメント

このブログの人気の投稿

OfficeのISOダウンロード直リンク

FortiGateシリーズ 40F/50E/60E/60F/80F/90E/100E/100F/200FのCPU