RT58iとRT107eを組み合わせてL2TP/IPsecとPPTP両対応リモートアクセスVPN環境を構築する


ヤマハのルーター「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アドレス)
udp500(RT107eのIPアドレス)
udp4500(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

静的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

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