Help us understand the problem. What is going on with this article?

RTX1200 で L2TP/IPsec の VPN を構築する

公式のサポートについて

Android や iOS クライアントとの L2TP/IPsec VPN の接続設定については公式に説明がありサポート対象らしいです。
リンク先の説明は古いので適宜読み替える必要はありますが、困るほどでは無いでしょう。
参考: iOSからリモートアクセスする
参考: Androidからリモートアクセスする

Windows での接続はサポート対象外で、ヤマハ公式のクライアントソフトウェアを使えという感じっぽいです。
参考: YMS-VPN8ソフトウェアライセンス版
たくさん情報があるように当然 OS 標準の機能でVPN接続できますので、 OS 標準の機能でやっていきたいと思います。

Mac については専用クライアントソフト含め、特に記述が見つからないですね。。
こちらも同様に OS 標準の機能を使って設定していきます。

ネットボランチについて

ヤマハのルーターではグローバルIPアドレスを割り当てられている場合、
ネットボランチDNSサービスというものを利用できます。
参考: FAQ / ネットボランチDNSサービス
要するにヤマハルーターを使っていれば無料で利用できるDDNSサービスです。
申し訳ないことに私はこのサービスをちゃんと理解していないのですが、ヤマハルーターのWANポートにグローバルIPアドレスが付与されていないとダメという事でしょうか。
私の環境ではグローバルIPアドレスは付与されているものの、ヤマハルーターがNAPT配下にいるためかアドレスを取得できませんでした。
こちらのサービスを利用できる環境の方はこちらのサービスを使うと良いでしょう。
静的グローバルIPアドレスを取得可能な方はそれをそのまま使えば問題無いでしょう。
どちらもダメな場合は別のDDNSサービスを利用しましょう。
この記事上ではサンプルのアドレスとして .netvolante.jp と書きますが、私も別のDDNSサービスを利用しています。
DDNSに関しましては別途調べてください。

ルーター側の設定

慣れている人は始めからコマンドで、不慣れな人ではまずGUIで設定してから部分的にコマンドで変更したり詳細設定していくのが良いと思います。
今回は簡単のため、証明書による認証では無く事前共有鍵による認証で設定します。

GUIでの設定

参考: L2TP/IPsecを使用したリモートアクセス : RTX1200 Web GUI設定
インターネット接続設定ができている場合、「インターネット接続設定」は無視して次に進んで良いでしょう。
ネットボランチを利用する場合、その設定もこちらに書いてあります。
このページはGUIで分かりやすいのでおおよそそのまま従うと良いでしょう。
ただ、「認証鍵(pre-shared key)」は画像では「yamaha」とシンプルなものになっていますが、もうちょっと複雑なものにしておくと良いでしょう。
PPP認証方法は画像で示されている「CHAP-PAP」に設定でも、クライアント側で指定すれば問題ないでしょうが、 PAP はクリアテキストで認証を行うので使わないのが吉でしょう。
CHAPMS-CHAP v2 を選択すると良いでしょう。
参考: PPP / PPPoE の認証(PAP/CHAP)、MS-CHAPv2について

コマンドラインでの設定

参考: ヤマハネットワーク機器の技術資料 - L2TP/IPsec
特に 設定例3: NATトラバーサルを利用したL2TPクライアントの接続を受け付ける場合 を引用します。
インターネット接続設定は こちら で済ませているので「
【経路設定】」「【LAN設定】」「【プロバイダとの接続設定】」は無視します。

pp select anonymous
 pp name L2TP
 pp bind tunnel1
 pp auth request (認証方式)
 pp auth username (ユーザーネーム1) (パスワード1)
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ip pp remote address pool 192.168.100.10-192.168.100.20
 ip pp mtu 1258
 pp enable anonymous

tunnel select 1
 tunnel encapsulation l2tp
 ipsec tunnel 101
  ipsec sa policy 101 1 esp (暗号アルゴリズム) (認証アルゴリズム)
  ipsec ike keepalive use 1 off
  ipsec ike local address 1 192.168.100.1
  ipsec ike nat-traversal 1 on
  ipsec ike pre-shared-key 1 text (事前共有鍵)
  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

nat descriptor type 1 masquerade
nat descriptor address outer 1 ipcp
nat descriptor address inner 1 auto
nat descriptor masquerade static 1 1 192.168.100.1 esp
nat descriptor masquerade static 1 2 192.168.100.1 udp 500
nat descriptor masquerade static 1 3 192.168.100.1 udp 4500

ipsec transport 1 101 udp 1701
ipsec auto refresh on

l2tp service on

pp auth request で指定するのが上のGUIで指摘したPPP認証方法です。
こちらでも chapmschap-v2 を指定すると良いでしょう。
参考: 14.3 要求する認証タイプの設定

ipsec sa policy で選択する暗号アルゴリズムと認証アルゴリズムは強固に超したことはないですが、始めは
暗号アルゴリズムは aes-cbc
認証アルゴリズムは sha-hmac を選択することをおすすめします。
少なくともWindowsでは追加の設定が必要になりますのでまず、 aes-cbc / sha-hmac を選択して、VPNに一通り接続できることを確認してから、 aes256-cbc / sha256-hmac に変更すると良いと思います。
参考: Windows10やスマホから、L2TP/IPSecによるリモートアクセスVPNを行うためのヤマハRTXルーターのCUI設定方法 - 認証アルゴリズムにHMAC-SHA2-256を使用したい場合の設定例

コマンドのインデントされている部分は上のコマンドを実行してから実行します。
つまり、例えば SA ポリシーを変更したい場合、

# tunnel select 1
tunnel1# ipsec tunnel 101
tunnel1# ipsec sa policy 101 1 esp aes-cbc sha-hmac
tunnel1# save

というように変更します。

クライアント側の設定

Windows クライアントの設定

前述の通り、ヤマハ公式としてはWindowsビルトインのVPNはサポート対象外のようで、公式のクライアントアプリケーション(有料)での使用を推奨しています。
ですが、標準の機能でも接続できます。

NATトラバーサルについて

Windows 10 においてNATトラバーサルの機能はデフォルトでオフになっており、レジストリを変更して使える様にする必要があります。
AssumeUDPEncapsulationContextOnSendRule というキーを設定します。
AssumeUDPEncapsulationContextOnSendRule は次のような値を取ります。

説明
0 NAT トラバーサル無効、初期値
1 NAT トラバーサル有効、サーバーが NAPT 配下の場合
2 NAT トラバーサル有効、クライアント・サーバーの両方が NAPT 配下の場合

自身の環境に合った値を設定してください。
環境によってはこれを設定する必要ない場合もあります。
私の環境ではサーバー側クライアント側共にNAPT配下だったので 2 を設定します。
参考: Windows Vista および Windows Server 2008 で NAT-T デバイスの背後に L2TP/IPsec サーバーを構成する方法

[Windowsボタン + X] -> [A] で PowerShell を起動します。
以下のコマンドを実行し、再起動します。

New-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\PolicyAgent AssumeUDPEncapsulationContextOnSendRule -T Dword -V 2; Restart-Computer -con

VPN の設定

[設定] -> [ネットワークとインターネット] -> [VPN] から「VPN 構成を追加する」を選択します。
image.png

VPN 接続設定で以下の設定を入力します。

設定項目名 設定値
VPN プロバイダー Windows (ビルトイン)
接続名 (任意の名前)
サーバー名またはアドレス (グローバルIPアドレス or DDNS から取得したホスト名
VPNの種類 事前共有キーを使った L2TP/IPsec
事前共有キー ipsec ike pre-shared-key 1 text XXXXX で設定した XXXXX の部分
サインイン情報の種類 ユーザー名とパスワード
ユーザー名 pp auth username USERNAME PASSWORD で設定した USERNAME の部分
パスワード pp auth username USERNAME PASSWORD で設定した PASSWORD の部分

で保存ボタンをクリックします。
image.png

関連項目にある「アダプターのオプションを変更する」をクリックします。
「ネットワーク接続」の画面に先ほど「接続名」で設定した名称のアダプターがあるはずなのでそれを右クリックしプロパティをクリックします。
image.png

「全般」タブでホスト名が正しく入力されていることを確認します。
image.png

セキュリティタブで L2TP/IPsec になっていることを確認します。
「データの暗号化」は「暗号化が必要(サーバーが拒否する場合は切断します)」を選択、
「認証」で、自分が pp auth request xxxx で指定した設定に合わせて、
「チャレンジハンドシェイク認証プロトコル (CHAP)」「Microsoft CHAP Version 2 (MS-CHAP v2)」のチェックボックスにチェックを入れます。
image.png

また、「VPN の種類」のすぐ右下の「詳細設定」先で事前共有鍵あるいは証明書の再設定を行えます。
接続に失敗する場合はこれの再入力を試すのも良いと思います。
image.png

接続する

タスクバー右のネットワークアイコンをクリックすると接続されているネットワークの他に VPN が表示されるようになっています。
そこで、接続する VPN をクリックして「接続」ボタンをクリックすれば、 VPN に接続できます。

Mac クライアントの設定

設定

[システム環境設定]の[ネットワーク]を開きます。
左下の「+」を押して以下の設定を追加し「作成」を押します。
「メニューバーにVPNの状況を表示」にはチェックを入れておきましょう。

設定項目名 設定値
インターフェース VPN
VPNタイプ L2TP over IPsec
サービス名 (任意の名前)

image.png

設定項目名 設定値
構成 デフォルト
サーバアドレス (グローバルIPアドレス or DDNS から取得したホスト名)
アカウント名 pp auth username USERNAME PASSWORD で設定した USERNAME の部分

image.png

「認証設定…」を押して以下を入力。

設定項目名 設定値
パスワード pp auth username USERNAME PASSWORD で設定した PASSWORD の部分
共有シークレット ipsec ike pre-shared-key 1 text XXXXX で設定した XXXXX の部分

image.png

VPNサーバーをデフォルトゲートウエイに設定したい場合は「詳細…」をクリックして、「すべてのトラフィックをVPN接続経由で送信」にチェックを入れれば良い。

image.png

接続

メニューバーのVPNアイコンをクリックして、対象のVPNの接続をクリックすれば接続できます。

スクリーンショット 2018-08-15 23.17.50.png

Windowsで接続に失敗する

Windows での接続が少し不安定に感じます。
一度接続しても頻繁に切れるということではなく、設定を全く変更していなくても、
接続できるときもあれば失敗するときもあります。
失敗する場合、時間を置いて再度試すと接続できるようになることが多いです。
iOS や Mac からでは Windows で失敗しているときに試しても安定して接続できるので、
ルーター側では無く Windows 側の問題のように思いますが、原因が分かりません。

参考

Yamaha ルーターシリーズ コマンドリファレンス

mizutoki79
Microsoft と ネットワークとセキュリティが好きなサーバーサイドエンジニア
yumemi
みんなが知ってるあのサービス、実はゆめみが作ってます。スマホアプリ/Webサービスの企画・UX/UI設計、開発運用。Swift, Kotlin, PHP, Vue.js, React.js, Node.js, AWS等エンジニア・クリエイターの会社です。Twitterで情報配信中https://twitter.com/yumemiinc
http://www.yumemi.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away