2014年1月23日木曜日

iPhone から ヤマハルーター(RTX1200)に VPN 接続する(1)

ヤマハ RTX1200 ルーターに iPhone や iPad を使って外出先から VPN アクセスできるようにしたいけれど、ヤマハのホームページを見ても具体的な設定操作がイメージできないために躊躇している、という方のために、設定の仕方を紹介してみたいと思います。

RTX1200 の VPN 設定は GUI が使えないので敷居が高い?


VPN 機能を搭載したヤマハのルーターとしては、2011年に発売開始された RTX810 が安価で人気のある機種だと思いますが、上位機種で実績があり安心感の高い RTX1200 を選択している人も多いと思います。

iOS 端末からヤマハルータに VPN 接続する場合の選択肢は、L2TP/IPsec (以下 L2TP) または PPTP、ということになります。しかし、RTX1200 では、最新ファームウェア(Rev.10.01.53)でも
GUI 設定(Web ブラウザからの簡単設定)は不可能
という状況です。もちろん、RTX1200 は L2TP、PPTP の両方にきちんと対応していて、iPhone から VPN 接続することが可能です。でも、GUI に対応していないことで、設定を躊躇している人もいるのではないでしょうか。

TELNET や TFTP などのコマンドラインツールを使うのは慣れが必要ですし、しかも、Windows Vista/7 ではこれらのツールは無効化されていて、すぐには使えません。しかし実際には L2TP の設定は、
ブラウザとテキストエディタ(メモ帳やテキストエディット)だけで可能
です。なお、基本的なところは、ヤマハのホームページに設定例が書かれていますので、そちらもご覧ください。



STEP 1.RTX1200 の GUI 管理画面から現在の設定(config)を読み出す


最初に、現在の設定をテキストファイルにバックアップしておきましょう。ブラウザから、RTX1200 の管理画面(管理者向けトップページ)を開き、左側のメニューから、[運用サポート機能]-[保守] を選んで、[保守] 画面を表示します。


[設定の管理]-[設定をファイルへ出力] のボタンをクリックすると、"設定ファイル"へのリンクが現れるので、テキストファイルとして保存しておきます。


ここで出力されるのは、RTX1200 のメモリ上にある「現在の設定」の情報です。このファイルは、RTX1200 の設定を復元するために使用できますので、保存しておきます。


STEP 2.既存の VPN 設定を確認する


左側メニューの [ルーター機能]-[IPsec] を選択、[現在の IPsec 設定] を見ると、現在設定されている VPN が一覧表示されます。


左側の「番号」の欄は、VPN 用のトンネルインターフェースを示しており、RTX1200 では、1番から100番まで自由に利用できます。上の図では、トンネル2番~5番が設定されています。筆者はトンネル2番に Windows 用の VPN クライアントソフト(YMS-VPN7)を使った IPsec 接続を設定しています。また、トンネル1番が欠番となっているのは、過去にルータ間 VPN 接続を利用していた時の名残です。

L2TP が設定されているかどうかは GUI で確認出来る

"(L2TPインターフェースの設定で利用しています)"
と書かれているのは、トンネル3番~5番を筆者がマニュアルで L2TP 用に利用していることを表しています。L2TP は GUI による設定には対応していませんが、このように利用中であることが表示されるのはありがたいですね。今回初めて VPN を設定する場合は、ここにはまだ何も表示されていないはずです。

以下では、トンネル3番からトンネル5番を使って、3台までのクライアントが同時に L2TP 接続できるように設定する方法を順を追って説明していきたいと思います。


STEP 3.とりあえず PP anonymous の設定からはじめる


L2TP のための設定は、いくつかのセクションに分けることができるので、セクションごとに設定を進めます。どのセクションから設定しても結果は同じですが、とりあえず、PP anonymous から設定していきます。
"PP anonymous" ってナニ?
PP は接続相手先に関する設定なのですが、細かいことは気にしないで大丈夫です。次の一連のコマンドをテキストエディタに貼り付けて、各自の環境に合わせて編集します。
pp select anonymous
 pp bind tunnel3-tunnel5
 pp auth request mschap-v2
 pp auth username ログイン名1 パスワード1
 pp auth username ログイン名2 パスワード2
 pp auth username ログイン名3 パスワード3
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ip pp remote address pool 開始IPアドレス-終了IPアドレス
 ip pp mtu 1258
 pp enable anonymous
少し説明を加えておきます。

2行目: 各自の環境に合わせてトンネル番号を指定します。ここで指定したトンネル番号について、別セクションでトンネルの設定を行います。ハイフンで範囲指定、または、スペースで区切って複数指定が可能です。

3行目: 認証方式。iOS からの接続の場合は、mschap-v2 を指定。

4-6行目: アカウント設定。ログイン名とパスワードの組を記入します。

9行目: 割り当て用の IPアドレスプール。VPN の LAN 側アドレスを範囲で指定します。同時接続数(トンネル数)と同じだけのアドレスを確保しておく必要があります。DHCP サーバの配布する IP アドレスとも重複しないように予約しておくのが良いと思います。

※注意: 全ての文字は半角英数字で入力しましょう。日本語はNG。

編集が済んだら、RTX1200 に送信して、設定を適用します。左側のメニューから、[運用サポート機能]-[保守] を選んで [保守] 画面を表示、 [設定の管理]-[コマンドの入力] のボタンをクリックします。


"コマンドの入力" の画面に先ほどのコマンドをペーストして、"実行"ボタンを押します。


うまく実行が完了すれば、次のような画面が表示され、RTX1200 に設定が反映されたことが確認出来ます。再起動の必要はありません。


もし、一度設定した後に、設定内容を変更したくなった(ログイン名の変更など)場合は、エディタでセクションを再編集して、全体をもう一度送信しましょう。ログイン名だけの修正だからといって、pp auth~ のコマンドだけを送信しても次のようなエラーが出て失敗します。


ここでは、とりあえず、
セクション単位でコマンドを送信すれば間違いない
とおぼえておきましょう。

ここまでの操作ができれば、あとは大したことはありません。残りのセクションも同じように入力していきます。


ちょっと補足(読み飛ばしてOK)


コマンド入力は RTX1200 との対話です。慣れた管理者は、TELNET で RTX1200 にログインして、1行ずつコマンドを入力していきます。今回は、全てブラウザで済ませよう、という方針で、GUI ツールの 「コマンドの入力」 を活用することにしましたが、やっていることはコンソールからのコマンド入力とほぼ同じです。複数行を送信すると、上から順に1行ずつ全てのコマンドを実行してくれます。

先ほどのエラーですが、エラーメッセージに書かれているとおり、pp auth ~ は、通信相手先を選択した状態でしか実行できないコマンドです。セクションの最初に書かれていた
pp select anonymous
というコマンドは、
「これから pp anonymous の設定を行いますよ」
というような意味を持っています。このコマンドを実行した後に、pp anonymous に対して、pp auth ~などの設定を行っていくことになります。

ヤマハの RT(X) シリーズにおいては、
設定ファイル = 逐次実行することで設定が再現できるコマンドの集まり
と考えて差し支えありません。ところで、コンソール(TELNET)からの設定では、"save" コマンドを入力するまで、設定は、不揮発性の設定ファイル(config0 など)には保存されません。しかし、GUI の「コマンドの入力」を使ってコマンドを実行した場合には、
最終行の後に save コマンドが暗黙に実行される
ということは知っておくと良いと思います。"pp select ~" に引き続いて "pp auth ~" コマンドを実行するような場合には、まとめて送信する必要があります。ブラウザからのコマンド入力では 「セクション単位で送信」 が重要です。

→ (続き) 「iPhone から ヤマハルーター(RTX1200)に VPN 接続する(2)」 へ

(※2014年8月25日 追記)
2014年8月公開の最新ファームウェア(Rev.10.1.59)で待望のGUIによるL2TP/IPsec設定が可能になりました。
→ (関連記事) 「iPhone から ヤマハルーター RTX1200 へのVPN (L2TP/IPsec) 接続がより簡単に! 最新ファームウェアで GUI 設定が可能になったので試してみた」 へ