L2TPのVPNだとWindows10が複数つなげない問題

EdgeRouter X

自宅で使っているエッジルーターX(EdgeRouter X)のネタになります。これは失敗記事になります。

L2TPのVPNを構築したい

諸事情でL2TPのVPNを組んでつなげるようにしようと思いました。

自宅環境設定

  • eth1:192.168.1.x/24
  • eth2:192.168.2.x/24

となります。自宅はクラスCアドレスを取得しています

VPN環境

今回は別の拠点にあるエッジルーターXに繋ぎます。つなぎ先は固定IPを用意したものになります。

  • ルーター:エッジルーターX
  • IPアドレス:172.16.0.x/23
  • 固定IP:202.133.xxx.xxx
  • DNS:8.8.8.8

となります。接続先はセグメントがかぶらないようにクラスBのアドレスを設定しました

L2TPの設定

一部コマンドは違いますが、EdgeRouter X – 6. 自宅にどこからでもアクセスできるようにする ( リモートアクセス VPN )のページを参考にVPNの設定をしました

SSH でルーターにアクセス
## 設定モードに入る
configure

## 基本的な IPsec の設定
set vpn ipsec ipsec-interfaces interface eth0
set vpn ipsec nat-networks allowed-network 0.0.0.0/0
set vpn ipsec nat-traversal enable
set vpn ipsec auto-firewall-nat-exclude enable

## L2TP の WAN 側 IP アドレスが DHCP 経由で割り当てられると指定
set vpn l2tp remote-access dhcp-interface eth0

## L2TP でアクセスしてきたクライアントに割り当てる IP アドレスの範囲を指定
set vpn l2tp remote-access client-ip-pool start 172.16.0.10
set vpn l2tp remote-access client-ip-pool stop 172.16.1.254

## L2TP の「シークレット」を設定
## secret1 の部分を任意のパスワードに変更して入力
set vpn l2tp remote-access ipsec-settings authentication mode pre-shared-secret
set vpn l2tp remote-access ipsec-settings authentication pre-shared-secret secret1
set vpn l2tp remote-access ipsec-settings ike-lifetime 3600

## L2TP クライアントの認証方法をローカルに設定
set vpn l2tp remote-access authentication mode local

## L2TP クライアントのユーザー名とパスワードを設定
## user1 と password1 の部分を変更して入力
set vpn l2tp remote-access authentication local-users username user1 password password1

## L2TP の MTU を保守的に設定
set vpn l2tp remote-access mtu 1280

## L2TP のクライアントが使う DNS をルーター自身と Google DNS に設定
set vpn l2tp remote-access dns-servers server-1 8.8.8.8
set vpn l2tp remote-access dns-servers server-2 8.8.4.4

## ルーターの DNS が L2TP から使えるよう DNS Frowarding をルーター自身に設定
set service dns forwarding listen-on lo

commit
save

fierewallを変更

firewallの設定を変更します

ER-X に管理者アカウントでログインし、 Firewall/NAT タブをクリック
Firewall Policies タブをクリック
WAN_LOCAL の Actions ボタンを押し、 Edit Ruleset を選ぶ

Add New Rule ボタンを押す
[Basic]
Description: Allow L2TP
Action: Accept
Protocol: UDP
[Destination]
Port: 500,1701,4500 (スペース無し)
Save ボタンを押す

Add New Rule ボタンを押す
[Basic]
Description: Allow ESP
Action: Accept
Protocol: choose protocal by name > esp
Save ボタンを押す

追加した2つのルールを元からある Allow established/related と Drop invalid state の間に移動する
Save Rule Order ボタンを押す
WAN_LOCAL の設定ウィンドウを閉じる

本題

ここから本題となります。

同一ネットワークから2台目は繋げない(Windows10)

図のような構成図となります。自宅にはWindows10が二台とMacが1台あります。

Windows10端末のAをVPN(L2TP)に接続すると、Windows10端末(B)が接続できなくなります

Macは接続できる

Windows10端末1台、Mac1台だと同じネットワークでも繋がります。Mac2台目は?となると実験していないのでわかりません。iPhoneなどの端末も試していないのでわかりません。

色々調べてみる

なぜ繋げないのかわからないので調べてみました

参考サイト1について、なるほどーと思って設定をしてみました。しかし解決はしませんでそた。ふと気づいたのは、この同一セグメントというのは自宅側と拠点側が同じセグメントということではないかな?と思いました。その場合は今回の自分の問題とはちょっと違うなと・・・

参考サイト2については、L2TPはリモートアクセスVPNもできるので同一ネットワークだから~というのは違うのでは内かなと、Windows10とMacという状態だと問題無く2台とも繋がりました。なのでこれもちょっと違うのかな?と

参考サイト3では、PPTPの話しなので今回とは違いますが、PPTPだと1つしか常下無いのか、、と思いました。L2TPはPPTの上位互換みたいなものなので、複数台が仕様でそもそも無理なのかな?と思いました

参考サイト4に、

同じIPアドレス(同じNAT内)から、複数の L2TP/IPsec の接続を行おうとするとエラーになる場合があります。
VPN サーバーでセッション一覧を確認して、同じアドレスから他のクライアントが接続したままになっていないか確認してみてください。

もし、そういった使用方法が必要な場合は、L2TP/IPsec の代わりに OpenVPN を使用したほうが良いかもしれません。

とありました。今僕は1台のPCで繋いでいてもう1台が繋がっていません。この可能性は高いです

まとめ

同一ネットワーク(自宅)等からVPNで接続する場合は、L2TPではなくOpenVPNや他のSSL-VPNなどを使う方が良いかも知れません

個人支援・寄付について

サイトラボではBuildreeの開発などのため、現在個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではkyashというサービスをつかっております。ビットコインでも受け付けております。