技術メモなど

ほぼ自分用の技術メモです。

YAMAHA RTX1200とIIJmio FiberAccess/NFでDS-Lite (IPv4 over IPv6) を使ったIPv4接続環境を構築する

NTTのフレッツ光ネクストファミリー・ハイスピードタイプで、インターネット接続プロバイダーサービスにIIJmio FiberAccess/NFを使うと、IPoE接続のIPv6通信が可能です。IPoE接続の場合、ファミリー・ハイスピードタイプの下り通信速度200Mbpsの制限を受けず、下りの通信速度が概ね1Gbpsとなります(上りは100Mbpsで変わらず)。なので、Gigabitのインターフェイスを持つルーターを使えば、IPv6については上位の通信回線プランを使わなくても下り1Gbpsの通信ができることになります。

とはいえうちのルーターYAMAHA RTX1100だったので、さほど恩恵を受けられずにいました。そんな時にtwitterで、DS-Liteについて書かれたブログを発見しました。

IIJmio FiberAccess/NFでは、DS-LiteというIPv4 over IPv6によるIPv4接続サービス(要するにプロバイダーが用意するNATルーター経由でIPv4インターネット接続ができるもので、NATルーターまでの足回りにIPv6が使う(IPv6でNATルータとIPIPトンネルを張る)というもの、と私は理解しています。)が使えるため、これを使えば、トンネルのオーバーヘッドはあるにせよ、IPv6での通信速度と同程度のIPv4インターネット接続が期待できるものです。

DS-Liteとは

DS-Lite(Dual-Stack Lite)は、RFC6333で規定された通信規格で、本機能を利用することにより、IPv6のみの通信環境においてIPv4 over IPv6技術を利用し、IPv4での通信も可能となります。DS-Lite対応の通信機器をご用意いただければ、一台の機器でIPv6/IPv4双方の通信が可能となります。また、通信速度はIPv6ネットワークの通信速度に準じますので、ご利用回線によっては、IPv4 PPPoE接続での通信速度よりもより高速な通信をご利用いただけます。

IIJmio:DS-Liteについてから引用

今までIPv4インターネット接続はIIJmio FiberAccess/NFのPPPoEと、格安で固定IPv4アドレスが一つ貰えるi-revoのPPPoEをPPPoEマルチセッションで使っていたのですが(フレッツ光ネクストは基本料金でPPPoEを2セッションまで張れる)、このブログ記事を見て早速RTX1100にDS-Liteの設定を投入したところ、PPPoEでの接続時に比べて倍近く下りの通信速度が出るようになりました。

こうなるとGigabitインターフェイスを持っているルーターで試したい気持ちが抑えられず、オークションをさまよってみたら運良く安く中古のRTX1200が手に入ったので、これを機にIPv4接続はDS-Liteのみに切り替えることにしました。

RTX1200のコンフィグは次の通りです。ちなみに同じコンフィグでRTX1100でもDS-Lite接続できました。

# IPv4のデフォルトルートをIPIPトンネルへ向ける設定
# (IPIPトンネルインターフェイスをtunnel 1とする場合)
ip route default gateway tunnel 1

# IPIPトンネルの設定
tunnel select 1
 tunnel encapsulation ipip
 tunnel endpoint address (DS-Lite対向ルーターのIPv6アドレス)
 ip tunnel mtu 1500
 ip tunnel tcp mss limit auto
 tunnel enable 1

最低限のコンフィグはこれだけです(IPv6接続の部分は既に確立している前提で)。PPPoEでIPv4インターネット接続していたらデフォルトルートをppインターフェイスに向けていると思いますが、これをIPIPトンネルインターフェイスに向けて、IPIPトンネルの設定を入れるだけです。もちろんトンネルインターフェイスには適切なip filterを設定することが必要かと思いますがここでは割愛します。

嵌まりポイントが一つあって、トンネルの対向を指定する箇所(tunnel endpoint address 〜の部分)をtunnel endpoint name 〜とすれば対向ルーターIPアドレスではなくホスト名で指定できるのですが、ホスト名で指定するとRTX1200ではトンネルが張れませんでした。

どうも対向ルーターのホスト名の名前解決ができないっぽいのが原因のように思える(IIJDNSサーバーを指定してdigで引いてもIPv6アドレスを返してくれないっぽい)のですが、インターネットマルチフィードの「DS-Lite接続確認情報」のYAMAHA NVR500の設定例を見ると、ホスト名ではトンネルを確立できないと書いてあるので、YAMAHAルーターの仕様で駄目なのかもしれません。おとなしくホスト名での指定を諦めて、直接対向ルーターIPv6アドレスを指定することでトンネルが張れるようになりました。

ちなみに対向ルーターのホスト名は、IIJの会員専用ページ(要ログイン)の「サービス詳細情報」→「FiberAccess/NF」→「設定情報」に書かれています。

対向ルーターIPv6アドレスも上記インターネットマルチフィードのWebページに記載がありますが、NTT東西でアドレスが違うので注意です。

DS-Liteの詳細については、IIJ Technical Week 2014の講演資料(番外編)てくろぐ・セレクト「自宅でもIIJをつかってみませんか?」がとても参考になりました。

さて肝心の通信速度ですが、Speedtest.net by Ooklaで確認したところ、筑波のSoftEtherのサーバー相手に下り350Mbps近く出ていました。フレッツ光ネクストファミリー・ハイスピードタイプの上限200Mbpsを大きく超えており、十分に試す価値ありかと思います。

ただ注意点として、DS-Liteのルーターが東京にあるようで、RadikoのようなIPアドレスから接続している地域を判別するサービスで東京地区と判定されてしまいます(AIR-G'が聞けない……)。

もう一つ重要な注意点が。IIJmio FiberAccess/NFはIPv6は固定のPrefixを貰えますが*1、DS-Liteの出口のIPv4アドレスは非固定です。というかそもそも自分で設定をいじれないNATルーターの配下です。つまり、IPv4でサーバーを外部へ公開したり、VPNで接続したりすることはできないことになります。

これで自分は嵌ってしまいました……。今まで外出先から自宅鯖にアクセスしたい時は、RTX1100とIPv4でL2TP/IPSec接続し、自宅鯖のNEC Express5800のBMCにsshで入ってサーバーの電源オンオフをしていたので、これが出来なくなるととても困る。

直接IPv6でBMCにsshできるならいいのだけど、自分の持っているExpress5800に搭載のものはBMCのIPアドレスIPv4のみ指定可のものでした……。

Openswanを使えばRTX1200とLinuxとでIPv6VPNが張れるので、VPN経由でRTX1200にsshして、そこからBMCにsshすればいけるのだけど、iPhone 6の標準のL2TPクライアントではIPv6でのVPNができないし、そもそも外出先でIPv6アドレス貰える環境はほとんどないし……(IIJmioのSIMとIPv6対応のモバイルルーターNEC MR03LN)持ってるけど、モバイルルーターの電池が切れると詰む)。

悩んだ結果、固定IPv4IPv6アドレスを貰えるさくらのVPSを借りて、SoftEther VPN Server立てて解決することにしました。これについては別の記事に書きたいと思います。

*1:NTTのメンテナンス等で変わる場合があるとのこと。割り当てられるIPv6アドレスは固定ですか? | IIJmio