Windows 11 + SoftEther VPN Serverで自宅VPNを構築した手順メモ
やりたかったこと
外出先のPCやスマホから自宅ネットワークへ接続できるようにするため、Windows 11上にSoftEther VPN Serverを立てました。 既存のApacheサーバーはそのまま動かしつつ、VPNの入口だけを追加する構成です。
- 外出先のPC / スマホから自宅ネットワークへ接続したい
- スマホからも接続したい
- 通信の出口をできれば自宅回線にしたい
- 既存のApacheサーバーはそのまま使いたい
- VPNはSoftEtherを使う
※この記事では、IPアドレス、DDNS名、ユーザー名などの固有情報はマスクしています。
自宅ネットワーク構成
自宅側は、モデム兼ルーターの配下にApacheサーバー、Windows 11 + SoftEther VPN Server、内側ルーターが並ぶ形です。 VPNサーバーはApacheと同じ公開側LANに配置しました。
[Internet]
|
[モデム兼ルーター / NAT]
├─ [Apacheサーバー] 192.168.xxx.xxx
├─ [Windows 11 + SoftEther VPN Server] 192.168.xxx.xxx
└─ [内側ルーター]
└─ [家庭内PCなど] 192.168.xxx.0/24
- モデムはルーター / NAT機能付き
- Apacheサーバーは公開側LANに配置
- 家庭内端末は内側ルーター配下
- VPNサーバーも公開側LANに配置
採用した構成
- VPNサーバー: SoftEther VPN Server
- 設置先: Windows 11
- スマホ接続: L2TP/IPsec
- PC接続: SoftEther VPN Client
- 必要に応じてWindows標準のL2TP/IPsecも利用可能
SoftEther VPN ServerをWindows 11にインストール
Windows 11にSoftEther VPN Serverをインストールし、管理はSoftEther VPN Server Managerから行う構成にしました。 以降の設定も基本的にはServer Manager上で進めています。
SoftEther側で実施した設定
Virtual Hubを作成
まずVPN接続を受けるVirtual Hubを作成します。 ここで少し迷ったのは、Server Managerを開いた直後にいきなりHubの作成画面が出るわけではなく、 先に管理対象のVPN Serverへ接続する必要がある点です。
SoftEther VPN Server Managerを起動したら、接続設定一覧で localhost (このサーバー) を選択し、 右下の 接続(C) を押します。
接続後、VPN Server "localhost" の管理画面が開きます。 この画面にある 仮想HUBの作成(C) を選択して、新しいVirtual Hubを作成します。
作成時に入力したVirtual Hub名は、後続のユーザー作成やL2TP/IPsecのDefault Virtual HUB設定で使います。 そのため、後から見ても用途が分かる名前にしておくと管理しやすいです。
- Virtual Hub名: HOMEVPN
接続ユーザーを作成
次に接続用ユーザーを作成します。 ここも少し分かりにくく、ユーザー作成はサーバー全体の画面ではなく、作成したVirtual Hubの管理画面から行います。
VPN Server "localhost" の管理画面で HOMEVPN を選択し、 仮想HUBの管理(A) を押します。 HOMEVPNの管理画面が開いたら、左側の ユーザーの管理(U) を選択します。
ユーザー管理画面で新規ユーザーを追加し、パスワード認証を設定しました。 記事ではユーザー名も伏せています。
- ユーザー名: vpn-user
- 認証方式: パスワード認証
- パスワード: 任意の強い文字列
SecureNATを有効化
最初は簡単に動かすため、HOMEVPN側でSecureNATを有効化しました。 これによりVPNクライアントに対して仮想NAT / DHCPを提供できます。
SecureNATの設定は、HOMEVPNの管理画面にある 仮想NATおよび仮想DHCPサーバー機能(V) から行います。 ユーザー管理と同じく、サーバー全体ではなくVirtual Hub単位の管理画面に入口があります。
この画面からSecureNATを有効化し、必要に応じて仮想DHCPサーバーの設定を確認します。 まず接続確認を優先する場合はSecureNATを使うと構成がシンプルになります。
Dynamic DNSを有効化
SoftEtherのDynamic DNSを有効化し、外部から固定名で接続できるようにしました。 実際のDDNS名は伏せ、記事中では次のように表記します。
Dynamic DNSはVirtual Hubの管理画面ではなく、VPN Server "localhost" の管理画面下部にある ダイナミックDNS設定 から設定します。
vpn-example.softether.net
L2TP/IPsecを有効化
スマホ接続用にL2TP/IPsecを有効化しました。
- L2TP Server Function: 有効
- 事前共有鍵 (PSK): 任意の強い文字列
- Default Virtual HUB: HOMEVPN
実際にListenしているか確認
Windows PowerShellでSoftEtherが待受しているか確認します。
TCPの待受確認
netstat -ano | findstr LISTENING
SoftEtherのプロセスが以下のTCPポートをListenしていることを確認しました。
- TCP 443
- TCP 992
- TCP 1194
- TCP 5555
PIDからプロセス名を確認します。
tasklist /fi "PID eq <PID>"
- プロセス名: vpnserver_x64
UDPの待受確認
netstat -ano -p UDP | findstr :500
netstat -ano -p UDP | findstr :4500
netstat -ano -p UDP | findstr :1701
L2TP/IPsec用に以下のUDPポートを待受していることも確認しました。
- UDP 500
- UDP 4500
- UDP 1701
LAN内でまず疎通確認
いきなり外部から確認すると切り分けが複雑になるので、先にLAN内の別端末からSoftEtherサーバーへポート疎通確認をしました。
Test-NetConnection 192.168.xxx.xxx -Port 5555
Test-NetConnection 192.168.xxx.xxx -Port 992
Test-NetConnection 192.168.xxx.xxx -Port 443
今回の確認結果は以下です。
- 5555: True
- 992: True
- 443: False(意図的にオフにしたため想定通り)
この時点で、SoftEther自体は動作しており、Windows FirewallやLAN内経路が主因ではなさそうだと判断できました。
Windows Defender Firewall側の確認
Windows Defender FirewallでSoftEther関連の許可状態を確認しました。
- SoftEther VPN Server
- SoftEther VPN Server Manager
- SoftEther VPN Command-Line Admin Tool
少なくともWindows OS側の遮断が主因ではない、とここで整理しました。
Aterm側のポートマッピング設定
Atermのポートマッピングで、SoftEtherサーバーへ必要なポートを転送しました。 転送先IPは記事用にマスクしています。
PC用
- TCP 5555 → Windows 11 + SoftEther VPN Server
- TCP 992 → Windows 11 + SoftEther VPN Server
スマホ (L2TP/IPsec) 用
- UDP 500 → Windows 11 + SoftEther VPN Server
- UDP 4500 → Windows 11 + SoftEther VPN Server
- UDP 1701 → Windows 11 + SoftEther VPN Server
Apache用
- TCP 443 → Apacheサーバー
Apacheが既に443を使っていたため、SoftEther側のメイン接続は5555 / 992を使う前提にしました。
WAN側 / DDNSの確認
Aterm管理画面でWAN側IPを確認し、ルーター自身がグローバルIPを持っていることを確認しました。 実際のIPは伏せています。
WAN IP: xxx.xxx.xxx.xxx/xx
次にDDNSの名前解決結果がWAN側IPと一致しているか確認しました。
nslookup vpn-example.softether.net
DDNSが正しいグローバルIPを向いており、WAN側IPと一致していることを確認できました。
Atermのパケットフィルタ確認
AtermのWAN側 / LAN側パケットフィルタ設定も確認しました。 以下のSoftEther用ポートを明示的に落としているルールは見当たりませんでした。
- TCP 5555
- TCP 992
- UDP 500
- UDP 4500
- UDP 1701
そのため、パケットフィルタは今回の主因ではないと判断しました。
スマホ接続でハマったポイント
症状
スマホでL2TP/IPsec接続を試すと「認証に失敗しました」と表示されました。
原因
原因はDefault Virtual HUBが未設定だったことです。 スマホの標準L2TP/IPsecクライアントでは、接続時にVirtual HUB名を指定できません。
そのため、SoftEtherサーバー側でDefault Virtual HUBをHOMEVPNに設定しておかないと、どのHubのユーザーで認証するか決められず、認証失敗になりました。
対応
SoftEther Server ManagerのIPsec / L2TP設定で、Default Virtual HUBをHOMEVPNに設定します。 これでスマホ接続が成功しました。
Default Virtual HUBが必要なケース / 不要なケース
必要なケース
- iPhoneのL2TP/IPsec
- AndroidのL2TP/IPsec
- Windows標準のL2TP/IPsec
これらはクライアント側でVirtual HUBを指定できないため、Default Virtual HUBが必要です。
不要なケース
SoftEther VPN Clientを使うPCでは、接続設定の中でホスト名、ポート番号、Virtual HUB名、ユーザー名、パスワードを指定できます。 そのためDefault Virtual HUBに依存しません。
最終的に使った接続方法
スマホ
- 接続方式: L2TP/IPsec PSK
- サーバー: vpn-example.softether.net
- 事前共有鍵: 設定したPSK
- ユーザー名: vpn-user
- パスワード: 作成したもの
外部PC
- クライアント: SoftEther VPN Client
- Host: vpn-example.softether.net
- Port: 5555または992
- Virtual Hub: HOMEVPN
- User: vpn-user
- Password: 作成したもの
今回の切り分けで役立った確認ポイント
SoftEtherが待受しているか
netstat -ano | findstr LISTENING
netstat -ano -p UDP | findstr :500
netstat -ano -p UDP | findstr :4500
netstat -ano -p UDP | findstr :1701
プロセス確認
tasklist /fi "PID eq <PID>"
LAN内疎通確認
Test-NetConnection 192.168.xxx.xxx -Port 5555
Test-NetConnection 192.168.xxx.xxx -Port 992
DDNS確認
nslookup vpn-example.softether.net
ハマりどころまとめ
443はApacheと競合する
既にApacheが443を使っている場合、SoftEtherも443を使う設計にはしづらくなります。 今回はApacheを443、SoftEtherを5555 / 992、スマホ用をUDP 500 / 4500 / 1701に分離しました。
Listenと外部疎通は別問題
Windows上でSoftEtherが待受していても、それだけで外部から接続できるとは限りません。 ルーターのポートマッピング、WAN側IP、DDNS、フィルタ設定を別途確認する必要があります。
スマホの認証失敗はDefault Virtual HUB未設定が原因になりやすい
今回の一番のハマりポイントでした。 スマホ標準のL2TP/IPsecではVirtual HUBを指定できないため、SoftEther側のDefault Virtual HUB設定が重要です。
LAN内疎通確認はかなり重要
いきなり外部から切り分けると、ルーター、DDNS、Firewall、SoftEtherのどこが原因か分かりにくくなります。 まずLAN内でTest-NetConnectionを使うと、確認範囲をかなり絞れます。
結論
今回の構成では、Windows 11にSoftEther VPN Serverを導入し、Atermで必要ポートを転送し、Apache用443とVPN用ポートを分離しました。 さらにDynamic DNSを利用し、スマホのL2TP/IPsec用にDefault Virtual HUBを設定することで、スマホからの接続に成功しました。
特に重要だったのは、SoftEther自体の待受確認、LAN内ポート疎通確認、Aterm側ポートマッピング確認、DDNSとWAN IPの一致確認、そしてDefault Virtual HUBの設定です。
今後やること候補
- 外部PCからSoftEther VPN Clientで接続確認
- 接続後にグローバルIPが自宅回線になっているか確認
- 内部LANへのアクセス範囲を最小限で整理
- SIPサーバー併設時のポート設計整理