Yamaha のギガアクセスVPNルーター「RTX830」向けに、「IKEv2」でリモートアクセス VPN接続を利用可能にするファームウェアが昨年末にリリースされました。特に Android のスマートフォンを使っている方には待望の機能追加だったのではないかと思います。
ただ、こちらのファームウェア、特定の操作を行うとリブートするバグがあったらしく、リリースされた翌日には一時公開停止となってしまいました。このほど修正が完了したとのことで、1月11日付けで改めて「Rev.15.02.28」が公開されましたので、これを機に手持ちの iPhone や iPad Pro から VPNアクセスで家に置いている NAS にアクセス出来るようにしてみたいと思います。
■ まずはファームウェアの更新
まずはちゃちゃっとファームウェアリビジョンアップを済ませます。Web GUI からでも構わないのですが、ここは敢えて CUI から行ってみます。理由は「気分が上がるから」。それだけですが(笑)。
[RTX830] # http revision-up go 新しいリビジョンのファームウェアが存在します 現在のリビジョン: Rev.15.02.26 新しいリビジョン: Rev.15.02.28 更新しますか? (Y/N)Y ダウンロード中...: 100% ( 8241800/ 8241800bytes) リビジョンアップ中...終了 Restarting ... ホストとの接続が切断されました。 続行するには何かキーを押してください...
CUI から「http revision-up go」と打ち込んで「Y」を選択し、しばらく待つと自動的に再起動されてファームウェアの更新が適用されます。
■ 現在のネット接続環境とリモートアクセスVPN に必要な条件など
まず、現在のネット接続環境ですが、「フレッツ 光ネクスト ファミリー・スーパーハイスピードタイプ 隼(長い!)」にプロパイダとして「So-net 」を組合せ、「v6 プラス」と「IPv4 PPPoE」を併用する設定にしています。So-net は v6 プラスと IPv4 PPPoE を 1契約で併用する事が出来るのですよね。
徐々に設定を加えていったため、RTX830 の config は継ぎ足し継ぎ足しでキメラの如き構造になってしまいました。一度見直して整理したいなとは思っているのですが、動いているからまあいいや的な(笑)。
まずは以下の記事のようにして半ば強引に手計算で「v6 プラス」での接続を確認し・・・。 「15.02.03」というファームウェアの公開で RTX830 が「v6 プラス」に正式対応し、随分と設定が楽になったようですが、うちでは「ひかり電話あり」の構成なのでせっかくの恩恵は受けることが出来ず、基本的に今まで通りの config をちょっとだけ修正。 「v6 プラス」と「IPv4 PPPoE」を「フィルター型ルーティング」を使って併用する設定を加えたり、Public DNS を利用するようにしたり、RTX830 から HGW の管理画面に入れるようにしたり・・・。 「NVR500」を買い足して IP電話を使えるようにしたりしました。
さて、今回設定する「IKEv2 を用いたリモートアクセスVPN」ですが、IPv4 PPPoE での接続が必要になります。「v6 プラス」や「DS-Lite」は、大まかに言ってしまえば IPv4 over IPv6 のトンネルを使って PPPoE接続で輻輳を起こして回線速度の低下を引き起こしていたプロパイダの「網終端装置」を回避してスムーズな接続を可能にする技術ですが、仕様上特定のポートを占有することが出来ません。
一方、「IKEv2 を用いたリモートアクセスVPN」では、UDP 500番と UDP 4500番、及び ESP(IPプロトコル 50番)のポートを使用します。これらのポートを変更する事は出来ないため、IPv4 PPPoE での接続が必須となるわけですね。このため、So-net のように「v6 プラス」と「IPv4 PPPoE」を併用する事が出来ないプロパイダでは、別途 PPPoE接続のために契約する必要が出てきます。
今回は、既に「フィルター型ルーティング」を使って一部の通信を IPv4 PPPoE に流すようにしているので、この仕組みを応用してリモートアクセスVPN の通信も IPv4 PPPoE の方に振り分けて流すことが出来るよう必要な設定を加えていくことにします。
注意点ですが、今回のように config に大きな変更を加える場合には、なにか致命的なミスを犯した場合に備えてすぐに元の環境に戻せるよう USBメモリなどに config のバックアップを取った上で設定を始めて下さいね。特に経路設定を間違えたりすると RTX830 にアクセス出来なくなってしまうことがあります(私も何度かやりました・・・)。万一に備えて下記の様なコンソールケーブルも持っておくと安心です。まあ、RTX830 の場合は ミニ USBケーブルでもいいのですけどね。
それでは初めていくことにしましょう。
■ 「ネットボランチ DNS」サービスへ登録
「ネットボランチ DNS」サービスは、ヤマハが提供している DDNS(Dynamic Domain Name System)サービスです。ルーターのグローバルIPアドレスを、ヤマハが運営している「ネットボランチ DNS サーバー」に任意の名前(早い者順です)で登録することで動的 IPアドレス環境下でのサーバー公開や、VPN接続などに利用することが出来るようになります。
かみ砕いて言うと、IPv4 PPPoE接続では日付を跨いだり切断後再接続したりした場合にグローバルIPアドレスが変わってしまうことがありますが、そのような場合でもルーター方で「ネットボランチ DNS サーバーに」自動で変更を通知してくれるため、接続対象のグローバルIPアドレスを都度手動で再設定したりする必要が無くなるということですね。
今回「リモートアクセス VPN 接続」を設定するにあたって、この「ネットボランチ DNS」サービスの利用が必要になりますので、まずはこちらを登録しておくことにします。
ネットボランチ DNS サーバーから取得されるホスト名は、以下の様な形になります。
( ホスト名 ).( サブドメイン ).netvolante.jp
このうち、ユーザーが設定することが出来るのは「ホスト名(半角英数字と ”-” で 63文字以内)」の部分のみです。「サブドメイン」の方は、ネットボランチ DNS サーバーから自動で割り当てられます。CUI から設定することも出来ますが、さすがにこれは Web GUI で設定した方が遥かに分かりやすくて簡単なので、Web GUI を使って登録することにします。
RTX830 の Web GUI にログインしたら「かんたん設定」から「ネットボランチ DNS」を選択し、「設定」をクリックします。「インターフェース」のところには設定済みの PPPoE接続が表示されますので、希望の「ホスト名」を入力して「次へ」をクリック。私の場合は、予め設定していた So-net の IPv4 PPPoE 接続に関連付けています。
利用規約が表示されるので内容に目を通したら「同意する」をクリック。入力内容の確認が表示されるので「設定の確定」をクリックすれば登録完了です。自動的にサブドメインが割り当てられますので、登録されたホスト名を控えておきましょう(確認はいつでも可能です)。
ちなみに登録完了後に config を確認してみたところ、以下のコマンドが投入されていました。
netvolante-dns hostname host pp server=1 (ホスト名).(サブドメイン).netvolante.jp
「ネットボランチ DNS」サービスは、現在のところは無料で提供されていますが、希望の名前で登録することが出来るかどうかや、動作に関する保証はありません。また、ヤマハのさじ加減次第では予告なく停止される可能性もあるとのこと。この辺りは無償サービスですから文句は言えませんな。
注意点として、「ネットボランチ DNS」では、個々のヤマハルーターを MACアドレスで識別しているため、機器の入れ替えなどで使用するルーターを変更した場合は、一旦「ネットボランチ DNS」の登録を解除し、入れ換えた機器で改めて登録する必要があるそうです。
また、IPv4 over IPv6 接続で使用される IPv4 アドレスが割り当てられたトンネルインターフェース(v6 プラスや DS-Lite など)では、ネットボランチ DNSサービス(IPv4)を利用することは出来ません。
■ 「RTX830」への追加設定
続いて、RTX830 の方へ追加のコマンドを投入していきます。こちらも Web GUI を使用することが出来れば簡単なのでしょうが、今のところ(2023年1月時点)で Web GUI から「IKEv2 リモートアクセス VPN」の設定は行うことが出来ないようですので、CUI から設定してみることにします。
うちの場合は既に「v6 プラス」と「IPv4 PPPoE」を併用する設定を終えているので、「pp 1(プロパイダとの IPv4 PPPoE 接続設定)」に関する部分は割愛させて頂きます。未設定の場合は ヤマハのサンプル や「こちらの記事」などを参考ににプロパイダに合った設定を入れて下さい。
基本的にヤマハが公開している「リモートアクセスVPN(IKEv2)の設定手順」というページの「複数のIKEv2クライアントの接続を受け付ける設定例」を参考に、必要な部分に手を加えつつ設定していく形にします。ご自分の環境に合わせた設定に適宜読み替えてください。
まず、外からアクセスがあった時に応答出来るよう「代理 ARP 機能」を有効化しておきます。
ip lan1 proxyarp on
また、先程登録した「ネットボランチ DNS」のホスト名が登録されていることを確認しておきます。
netvolante-dns hostname host pp server=1 (ホスト名).(サブドメイン).netvolante.jp
続いて IKEv2 リモートアクセスVPN接続で使用するトンネルを掘り掘り・・・。トンネル 1 は v6 プラスに設定しているのでこちらはトンネル 2 及びトンネル 3 とします。
tunnel select 2 tunnel template 3 description tunnel iPhone tunnel encapsulation ipsec ipsec tunnel 2 ipsec sa policy 2 2 esp ipsec ike version 2 2 ipsec ike keepalive log 2 off ipsec ike keepalive use 2 on rfc4306 10 3 ipsec ike local name 2 (ネットボランチ DNS ホスト名) fqdn ipsec ike nat-traversal 2 on ipsec ike pre-shared-key 2 text (事前共有鍵) ipsec ike mode-cfg address 2 1 ipsec auto refresh 2 off tunnel enable 2 ipsec ike mode-cfg address pool 1 192.168.100.200-192.168.100.215/24
「事前共有鍵」をテキストで設定する場合は、128文字以内の ASCII文字(アスキー文字:半角英数字記号)で。こちらは端末の方でも使用するので控えておいてください。「tunnel template 3」は、トンネル 2 と同様の設定をトンネル 3 に簡略化して設定するコマンドです。
「dhcp scope」に設定しているアドレスと「mode-cfg」で設定しているアドレスは重複させないようにする必要があるそうなので、「dhcp scope」の方も確認しておくこと。うちの場合は「dhcp scope」が 2~191番、「mode-cfg」の方を 200~215番としています。
【IKEv2 クライアント A(iPhone)】 tunnel select 2 description tunnel iPhone ipsec ike remote name 2 ios fqdn 【IKEv2 クライアント B(iPad)】 tunnel select 3 description tunnel iPad ipsec ike remote name 3 ipados fqdn
トンネル 2 のクライアント名を「ios」に、トンネル 3 を「ipados」としています。私の iPad Pro は Wi-Fi オンリーモデルですが、iPhone からのテザリングで RTX830 への VPN接続可能かどうかも試してみたいと思います。「IKEv2」の VPN を張れる Android端末は持っていないので今回は設定していません。
pp 1(IPv4 PPPoE)の NAT 設定(今回は 2000番)にも以下のコマンドを投入。IPマスカレードによる通信で UDP の 500番と 4500番、及び ESP(IPプロトコル 50番)のポート番号変換を行わないように「静的IPマスカレード」でポート番号を固定しておきます。
nat descriptor masquerade static 2000 4 192.168.100.1 esp nat descriptor masquerade static 2000 5 192.168.100.1 udp 500 nat descriptor masquerade static 2000 6 192.168.100.1 udp 4500
VPN の通信を遮断しないよう pp 1(IPv4 PPPoE)のパケットフィルタにも透過設定を追加。
ip filter 5000 pass * * esp
ip filter 5001 pass * * udp * 500
ip filter 5002 pass * * udp * 4500
pp select 1
ip pp secure filter in 3000 3001 3002 3003 3020 3021 3022 3023 3024 3025 3030 3032 3050 3051 5000 5001 5002
DNSサーバーは Public DNS を使うようにしていましたが、これはそのままの設定でいけそうです。ただ、「15.02.14」で DNSリカーシブサーバー機能で「EDNS0」に対応するようになっていたので、そちらの設定だけ手を加えました。現在は以下の様な設定になっています。
dns host lan1 dns service fallback on dns server 2606:4700:4700::1111 edns=on 2001:4860:4860::8888 edns=on 1.1.1.1 edns=on 8.8.8.8 edns=on dns cache max entry 1024 dns server select 500000 2606:4700:4700::1111 edns=on 2001:4860:4860::8888 edns=on aaaa . dns server select 500001 1.1.1.1 edns=on 8.8.8.8 edns=on any . restrict pp 1 dns private address spoof on
で、設定のキモ。「フィルター型ルーティング」を使ってリモートアクセスVPN の通信を IPv4 PPPoE接続に振り分けます。まずは振り分けのためのフィルターを作成。フィルター番号は適当です。
ip filter 10 pass * * esp ip filter 11 pass * * udp 500 * ip filter 12 pass * * udp 4500 *
次に経路設定を変更します。ここはミスるとルーターと通信不能になるので気をつけて下さい(苦笑)。
ip route default gateway pp 1 filter 1 2 10 11 12 gateway pp 1 filter 5 hide gateway tunnel 1
他の設定も入っていますが、これでリモートアクセスVPN の通信は pp 1(IPv4 PPPoE)に流れるはずです。ここでフィルタリングされない IPv4 の通信は v6プラスへ。
以上で RTX830側の準備は完了となります。
■ iPhone・iPad 側の設定
引き続き、iPhone・iPad に IKEv2 クライアントとしての設定を行っていきます。ここでは iPhone 13 mini を使って例を示しますが、iPad Pro も「ローカル ID」が変わるだけで他は同様です。
iPhone のホーム画面から「設定」アプリを立ち上げ、「一般」→「VPN とデバイス管理」→「VPN」と進みます。「VPN 構成を追加・・・」をタップして「タイプ」では「IKEv2」を選択し、以下の項目を設定していきます。
説明(必須) | IKEv2 クライアントの名前(任意の文字列) |
サーバ(必須) | 接続先のホスト名もしくは IPアドレス |
リモート ID(必須) | ルーターに設定したリモートネーム(ipsec ike local name) |
ローカル ID | ルーターで識別するための文字列(ipsec ike remote name) |
ユーザー認証 | なし |
証明書を使用 | オフ |
シークレット(必須) | IPsec の事前共有鍵(ipsec ike pre-shared-key) |
プロキシ | オフ |
「説明」はなんでも構いません。好きな名前を付けてOKです。「サーバー ID」と「リモート ID」には、共に「ネットボランチ DNS」で取得したホスト名を入力して下さい。また、「ローカル ID」は RTX830 に設定した「ipsec ike remote name」の FQDN を入力します。「シークレット」にも RTX830 で設定した IPsec の事前共有鍵(ipsec ike pre-shared-key)を入力します。
各項目の入力が終わったら「完了」をタップして設定終了です。「VPN」の画面に戻って今回設定した VPN を選択し、「状況」のスイッチをオンにして下さい。IPv4 のアドレスが変わった場合や初回接続時は多少時間が掛かるかも知れませんが、以降は瞬時に繋がるようになるはずです。
ヤマハの方で IKEv2 リモートアクセスVPN接続の動作確認が取れているのは、iOS が「15」「16」、iPad OS が「15」「16」と Android が「11」「12」「13」とのことです。私は Version 10 以降の Android機を持ち合わせていませんので、Android スマホなどの設定については ヤマハの設定例 を参照下さい。
■ 外から家に置いてある NAS などにアクセス可能に!
リモートアクセスVPN の設定が終わったところで早速携帯電話回線から家に置いてある NAS(Synology DiskStation DS218j) にアクセス出来るか試してみました。
Wi-Fi を切った状態で RTX830 へのリモートアクセスVPN に接続し、Webブラウザから LAN内の NAS の IPアドレスにアクセスしてみたところ、無事に NAS の管理画面に入ることができました。
「FE File Explorer」や「VLC」などのアプリを使って NAS にアクセスしようとすると、445番ポートを開けておかないといけないようですが、ネット上に開けておくのはあまりにリスキーなので代わりの手段をさがしてみたところ、Synology の「DS audio」「DS file」というアプリを使える事が分かりました。
iPhone でテザリングした iPad Pro から RTX830 にリモートアクセスVPN接続して NAS のファイルにアクセスするという、ちょっとアクロバティックなことをしても問題無いようですね。携帯電話回線なので通信量に気をつける必要はありますが、かなり自由度が上がりました。
RTX830 の VPN対地数は「20」ですが、これを「100」に引き上げることの出来る「YSL-VPN-EX1」という買切り型の拡張ライセンスが税込 27,500円で販売されています。このライセンスはルーターのシリアル番号に紐付けられるとのことで、ヨドバシカメラ店頭などで購入することが出来るようです。VPN の同時接続数を増やしたい方は検討してみて下さい。