VPN 設定メモ
目次
VPN の目的
VPN(Virtual Private Network)は、インターネット越しに プライベートネットワークへ安全に接続するための技術。 通信は暗号化され、遠隔地からでもホームネットワークなどにアクセス可能。
動的IPやNAT(Network Address Translation)環境 (例:集合住宅のインターネット契約、WiMAX など)では 外部からの直接接続ができない場合が多いが、 VPNを使えば中継サーバやNAT越え技術を通じて自宅ネットワークにアクセス可能。
そもそもパブリックIPを直接端末に持たせて接続を受ける方法は セキュリティリスクが高く、公開サーバ等の目的がなければ避けるべき。
構築の選択肢(外部からホームネットワークを利用する場合)
-
L3 接続(IP-VPN)の場合
対応ソフトウェアが多く、構成も比較的シンプルで、手軽かつ汎用的に使えるのが利点。
外部端末には自宅とは別のサブネットが割り当てられ、IPルーティングによってホームネットワークと通信する。
IPアドレスやホスト名を指定して、SSH、SMB、HTTP、RDP などの明示的な通信が可能。
ただし mDNS、DLNA、NASの自動検出、プリンタ共有など、L2ブロードキャストを必要とするサービスは非対応。
通信は基本的にユニキャストのみで、余分なブロードキャストが流れず通信量は少なめ。
主な実装例:Tailscale、WireGuard、OpenVPN、IPsec など。 -
L2 接続(広域イーサネット型)の場合
外部端末を自宅LANと同一セグメントに接続できる点が最大の利点。
仮想的にレイヤ2ブリッジを構成し、同じネットワークに属しているかのように振る舞う。
DHCP、Bonjour、mDNS、WOL、NAS自動検出、プリンタ共有など、家庭内LAN特有の通信がそのまま使える。
一方で構築の難易度は高く、L2ブリッジや仮想スイッチの設定が必要になることもある。
ブロードキャストやマルチキャストもすべて通るため、アイドル時でも一定量の通信が常時発生しやすい。
主な実装例:SoftEther VPN(L2モード)、WireGuard + VXLAN、OpenVPN + tap デバイスなど。
L3 接続(IP-VPN)の場合
Tailscale ならサービスにログインしてガイドに従えば設定できる。
L2 接続(広域イーサネット)の場合
以下のように構築:
- 静的グローバル IP か DDNS サービスに対応した環境を用意
- 静的グローバル IP は「さくらのVPS」や「AWS Lightsail」などで対応環境が用意可能
- DDNS サービスは TP-Link のルータなどで利用可能(固定のドメインとグローバルIPを自動対応)
- 対象の環境と 1. の環境を VPN で L2 接続
- 接続クライアントは 1. の環境へ VPN 接続・経由して対象環境へアクセス
IPアドレスは国ごとにレンジが決まっていることに注意。 「IPアドレスの割り当て国検索」から検索可能。 各種 Web サイトへのアクセスは(サーバの設置国に関わらず)IPアドレスの割り当て国で判定されることに注意。 (AWS に割り当てられる IP アドレスは全て US 判定?)
OpenVPN
使用方法
TP-Link ルータ & Ubuntu クライアントの場合は次の通り:
- TP-Link の設定画面から ovpn ファイルを出力
- 手順は 「詳細設定」→「VPN サーバ」→「OpenVPN」→「設定ファイル」→「出力」
- 必要であれば OneDrive などのクラウドストレージに一時保存
- Ubuntu 側での設定ファイルダウンロードに使う
- Ubuntu の設定で ovpn ファイル読み込み
- 手順は「ネットワーク」 →「VPN」→ 「+」ボタン押下→「ファイルからインポート」→ ovpn ファイルを選択
- クラウドに保存していた設定はセキュリティ強化のため削除する
SoftEther VPN
設定新規構成
やる事
「Softether VPN §10.5 拠点間接続 VPN の構築」 の通り
- カスケード接続でリモートの仮想 HUB 同士を Ethernet レベル (L2) 接続
- ローカルブリッジ接続で物理 LAN カードと仮想 HUB を Ethernet レベル (L2) 接続
構成
- VPN サーバとなる VPS サーバ(「AWS Lightsail」や「さくらのVPS」など)
- SoftEther VPN Server 利用
- VPSの比較
- VPN のブリッジ用自宅サーバ (Raspberry Pi や Windows PC など)
- SoftEther VPN Server または SoftEther VPN Bridge を使用
- VPN Bridge は VPN Server の機能制限版。 VPN Bridge はブリッジ拠点構成の最小版で、VPN Server と接続する単一の仮想HUBとローカルブリッジ機能を持つ。
- VPN クライアント (L2TP で接続)
- SoftEther VPN Server Manager 用ローカル PC
手順
- ネットワーク設計を行う・LAN IP アドレスの割当決定(設計例)
- 家庭 LAN 環境のゲートウェイの IP アドレス
- VPN サーバの IP アドレス (Secure NAT の仮想 NIC) → 「仮想 DHCP サーバのデフォルトゲートウェイ」「DNS サーバ」の IP アドレス
- VPN ブリッジ用サーバの IP アドレス
- VPS サーバ構築(AWS Lightsail を使う場合)
- 静的 IP の割当を実施
- TCP ポート 443, UDP ポート 500・4500 開放
- SoftEther VPN Server 構築スクリプト
- VPN ブリッジ用自宅サーバ構築
- 自宅 PC にSoftEther VPN Server Managerをインストール
- VPN サーバ設定 (from Server Manager)
- 仮想 HUB 作成 → ブリッジ用とクライアント用で別々のユーザを作成 → SecureNat 有効化(1. で設計したアドレスを指定)
- 上記仮想 HUB に VPN クライアントと VPN ブリッジ用サーバのユーザを作成 (VPN ブリッジ用サーバは固有証明書認証を推奨)
- IPsec/L2TP 設定(セキュリティのため必ず事前共有キーは変更)
- ローカルブリッジ設定(「新しい tap デバイスとのブリッジ接続」)
- VPN ブリッジ用サーバを設定 (from Server Manager)
- 仮想 HUB 作成 → カスケード接続設定 (ホスト名:静的IP, ポート番号:5555, ユーザ認証:クライアント証明書認証)
- ローカルブリッジ設定 (LANカードへブリッジするため有線接続必須)
- 自宅内ネットワークのルータの設定変更
- 上記 1. に応じてルータのアドレスとDHCPの設定変更
設定移行
- 【SoftEther VPN】サーバーのバックアップを取得する方法
- 「管理画面」→「Config 編集」から操作
- エクスポートは「ファイルに保存」。インポートは「ファイルからインポートして書き込む」。
- クライアント情報・ログイン情報なども引き継がれる
Linux の VPN サーバの注意
「Softether VPN §3.6 ローカルブリッジ」によると
Linux オペレーティングシステム内部での制限事項により、VPN 側 (仮想 HUB 側) からローカルブリッジしている LAN カードに割り当てられる IP アドレスに対して通信を行うことはできません。
とある。つまり単純に Linux PC で VPN サーバを稼働すると SSH や HTTP などで接続することができない。その対策として
ローカルブリッジ用の LAN カードを用意して接続し、その LAN カードと既存の LAN カードの両方を物理的に同じセグメントに接続してください
といったことが必要になる。 つまり通常の SSH や HTTP などの通信を行う既存の物理 LAN カードに加えて、VPN を用いた拠点間通信用の仮想 (または物理) LAN カードを用意しなければならない。 この LAN カードの用意は tap デバイスの追加で解決できる。tap デバイスは
Linux 版 VPN Server / VPN Bridge を使用している場合は、ローカルブリッジ先のネットワークデバイスとして、既存の物理的な LAN カードを指定するのではなく、新しい「tap デバイス」を作成して、その tap デバイスに対してブリッジ処理を行うことが可能です。(中略)この機能によって生成された tap デバイスは、仮想 HUB に直接接続した仮想 LAN カードのように振舞います。
とある ように Linux 版 Softether で使用可能な仮想 LAN カードとして扱える。 tap デバイスも netplan の ethernets の一つとして固定 IP を割り振ることが可能で、tap デバイスを介して SSH や HTTP 等での接続が可能。
その他参考リンク
設定参考
- ネットワーク構成例
- Ubuntu への SoftEther VPN インストール
- ポート開放の詳細
- ppa から SoftEther VPN インストール:バグのためVPN接続がうまくいかない?