ヤマハのルーター「RT58i」は、VPNのプロトコルとしてPPTPしかサポートしていない。
一方で、iOS 10以降など最近のOSではPPTPをサポートしておらず、モバイル通信サービスでもPPTPを規制していることがしばしばある。
そのため、私はこちらの記事にあるようにQNAPのNAS(TS-212P)をL2TP/IPsecサーバーとして稼働させ、外出先から自宅へのリモートアクセスに利用していた。しかし、当初は問題なく利用できていたものの、徐々に接続できないことが多くなり、TS-212P側のログを見ても、そもそも接続要求が到達していないようで、かといってRT58iのログにもエラーが見られず困っていた。
(そのため、さきほどの記事は公開を控えていたが、本記事作成の過程で必要な設定が整理できたため、本記事とともに公開した。)
ヤマハのルーターでもNVR500以降の製品であれば、L2TP/IPsecに対応しているのだが、一般的な家庭用ルーターよりも価格が高くなかなか手が出ない。ところが、RT58iと同じ頃に発売された「RT107e」というルーターはIPsecに対応しており、2019年現在、中古品として安く流通しているため、RT58iとRT107eを組み合わせてL2TP/IPsecによるリモートアクセスを実現する手順を記述する。
RT58iとRT107eの接続
今回、RT107eはルーターとしてではなく、リモートアクセスサーバーとして機能させるので、RT58iのLANポートとRT107eのLANポートを接続する。RT107eのWANポートには何も接続する必要がない。
RT58iの設定
静的IPマスカレードの登録
ウェブブラウザでかんたん設定ページにアクセスする。
詳細設定と情報>基本接続の詳細な設定 の順に進む。
「設定されているプロバイダの一覧」のうち、接続を受けるために使用するインタフェース(プロバイダ)の行の設定ボタンをクリックする。
「静的IPマスカレード関連(フィルタの自動定義:80番~89番)」の追加ボタンをクリックし、「静的IPマスカレードの登録」画面で次の3つを追加する。
プロトコル | ポート | 使用ホストIPアドレス |
---|---|---|
esp | * | (RT107eのIPアドレス) |
udp | 500 | (RT107eのIPアドレス) |
udp | 4500 | (RT107eのIPアドレス) |
設定の確定ボタンをクリックする。なお、これをコマンドで行う場合は以下のコマンドを実行する。(筆者の環境ではフィルタの先頭2つがPPTPに関する設定になっているため、3〜5番目への設定となっている)
nat descriptor masquerade static 1000 3 (RT107eのIPアドレス) esp nat descriptor masquerade static 1000 4 (RT107eのIPアドレス) udp 500 nat descriptor masquerade static 1000 5 (RT107eのIPアドレス) udp 4500
太字下線部はインターフェース番号(PP[nn])の数字−1になる。PP[03]なら1200。
静的IPフィルタの登録
トップ画面に戻り、
詳細設定と情報>ファイアウォール設定 の順に進む。
「ファイアウォールの設定インタフェース」のうち、接続を受けるために使用するインタフェース(プロバイダ)の行のIPv4フィルタの設定ボタンをクリックする。
「IPv4 静的IPフィルタの一覧」の追加ボタンをクリックし、「IPv4 静的IPフィルタの登録」画面で次の3つを追加する。
フィルタ番号 | フィルタ・タイプ | プロトコル | 送信元IPアドレス | 送信元ポート番号 | 受信先IPアドレス | 受信先ポート番号 |
---|---|---|---|---|---|---|
(任意) | pass(ログなし) | esp | * | * | (RT107eのIPアドレス) | * |
(任意) | pass(ログなし) | udp | * | * | (RT107eのIPアドレス) | 500 |
(任意) | pass(ログなし) | udp | * | * | (RT107eのIPアドレス) | 4500 |
設定の確定ボタンをクリックする。
戻るボタンをクリックして「IPv4 静的IPフィルタの一覧」画面に戻り、追加した行の「適用 入」のチェックボックスをオンにして設定の確定ボタンをクリックする。
なお、これをコマンドで行う場合は次のコマンドを実行する。(筆者の環境ではフィルタの先頭2つがPPTPに関する設定になっているため、3〜5番目(200082〜200084)への設定となっている)
ip filter 200082 pass * (RT107eのIPアドレス) esp * *
ip filter 200083 pass * (RT107eのIPアドレス) udp * 500
ip filter 200084 pass * (RT107eのIPアドレス) udp * 4500
太字下線部はインターフェース番号(PP[nn])の数字−1になる。PP[03]なら202082。
L2TP/IPsecのリモートアクセスのためには、UDPの1701番ポートをリモートアクセスサーバー(本記事で言えばRT107e)に向ける(NATを設定する)必要があると書かれている記事が多いが、今回はこの設定はRT58i側には不要で、RT107e側でトランスポートモードの設定を行えばよかった。(後述)
RT107eの設定
RT107eのかんたん設定で行えるのはIPsecを用いたLAN間接続のみであり、今回の目的であるL2TP/IPsecによるリモートアクセスサーバーとして機能させるためにはすべてコマンドで設定を行う必要がある。この機種の場合「かんたん設定」(Webインターフェース)はあくまでも競合製品に対抗するためのマーケティング的なものに過ぎず、使いこなすためにはコマンドによる設定が必須である。
RT107eに対してコマンドを実行する。コマンドの実行は、かんたん設定画面から行う(詳細設定と情報>コマンドの実行)他、telnetかシリアル接続で行う。
# 【経路設定】 ip route default gateway [RT58iのLAN側IPアドレス] # 【LAN設定】 ip lan1 address [RT107eのLAN側IPアドレス]/[サブネットマスク長] # 【DNS設定】 dns server [RT58iのLAN側IPアドレス] # 【L2TP接続を受け入れるための設定】 # トンネルを複数定義する場合でもユーザー名・パスワードは1組でも構わない。 pp select anonymous pp bind tunnel1 tunnel2 pp auth request pap pp auth username [リモートアクセス時のユーザー名1] [リモートアクセス時のパスワード1] pp auth username [リモートアクセス時のユーザー名2] [リモートアクセス時のパスワード2] ppp ipcp ipaddress on ppp ipcp msext on ip pp remote address pool [リモートアクセス端末に割り当てるIPアドレス(「-」で区切って範囲指定可能)] ip pp mtu 1258 pp enable anonymous # 【L2TP接続で使用するトンネルの設定 (クライアント1つ目)】 tunnel select 1 tunnel encapsulation l2tp ipsec tunnel 101 ipsec sa policy 101 1 esp aes-cbc sha-hmac ipsec ike keepalive use 1 off ipsec ike local address 1 [RT107eのLAN側IPアドレス] ipsec ike nat-traversal 1 on ipsec ike pre-shared-key 1 text [IPsecの事前共有鍵1] ipsec ike remote address 1 any l2tp tunnel disconnect time off l2tp keepalive use on 10 3 l2tp keepalive log on l2tp syslog on ip tunnel tcp mss limit auto tunnel enable 1 # 【L2TP接続で使用するトンネルの設定 (クライアント2つ目)】 tunnel select 2 tunnel encapsulation l2tp ipsec tunnel 102 ipsec sa policy 102 2 esp aes-cbc sha-hmac ipsec ike keepalive use 2 off ipsec ike local address 2 [RT107eのLAN側IPアドレス] ipsec ike nat-traversal 2 on ipsec ike pre-shared-key 2 text [IPsecの事前共有鍵2] ipsec ike remote address 2 any l2tp tunnel disconnect time off l2tp keepalive use on 10 3 l2tp keepalive log on l2tp syslog on ip tunnel tcp mss limit auto tunnel enable 2 # 【L2TP接続で使用するトンネルの設定 (クライアント3つ目)】 # … # 【IPsecのトランスポートモード設定】 ipsec transport 1 101 udp 1701 # 1つ目 ipsec transport 2 102 udp 1701 # 2つ目 ipsec auto refresh on # 【L2TP設定】 l2tp service on
このコマンドを実行しても、かんたん設定の画面には全く反映されず、何も設定されていないように見える。
L2TP/IPsecとPPTPの併用
私は2つの拠点をRT58iでPPTPでLAN間接続している(これは、かんたん設定だけで行える)が、今回一方の拠点(PPTPサーバー側)にこのL2TP/IPsecリモートアクセスを可能としたことで、外からこの拠点を経由してもう一方の拠点(PPTPクライアント側)にもアクセスできるようになった。
【参考】iOSの設定
設定アプリを起動する。
一般>VPN の順に進む。
「VPN構成を追加…」をタップする。
次のように設定する。
タイプ | L2TP |
---|---|
説明 | (任意の文字列) |
サーバ | (RT58iのWAN側IPアドレス) |
アカウント | pp auth usernameコマンドで指定した[リモートアクセス時のユーザー名n] |
RSA SecurID | オフ |
パスワード | pp auth usernameコマンドで指定した[リモートアクセス時のパスワードn] |
シークレット | ipsec ike pre-shared-key n textコマンドで指定した[IPsecの事前共有鍵n] |
すべての信号を送信 | オン |
プロキシ | オフ |
【参考文献】
http://www.rtpro.yamaha.co.jp/RT/docs/l2tp_ipsec/index.html
【設定例2:複数のL2TPクライアント(アドレス不定)の接続を受け付ける場合】
【設定例3:NATトラバーサルを利用したL2TPクライアントの接続を受け付ける場合】
YAMAHA RT107e VPNルータを買ってみた!
http://blog.kourin.org/blog/?p=5153