Linux版SoftEther VPNのIPsec/L2TP設定方法
最終更新日:2018/02/19
LinuxにインストールしたSoftEther VPNサーバーをSoftEther VPNサーバー管理マネージャを使用してIPsec/L2TP設定を行う方法について説明します。
LinuxへのSoftEther VPNサーバーのインストール方法については下記記事を参照して下さい。
スポンサーリンク
サーバー管理マネージャインストール
SoftEther VPNサーバー管理マネージャはWindowsアプリケーションです。Mac OS版やLinux版は存在しません。もしMac OSやLinuxで動かしたい場合、仮想環境のWindowsやWineを使用して下さい。本記事ではその方法については説明しません。
サーバー管理マネージャはWindows版のSoftEther VPNサーバーに付属しています。下記からダウンロードします。
選択肢は以下を選んで下さい。
- コンポーネント:SoftEther VPN Server
- プラットフォーム:Windows
- CPU:Intel (x86 and x64)
本記事投稿時点のファイル名は、”softether-vpnserver_vpnbridge-v4.19-9599-beta-2015.10.19-windows-x86_x64-intel.exe”です。
インストーラを起動して「次へ」をクリックして画面を進めると、インストールソフトウェアの選択画面が表示されます。ここで、「SoftEther VPNサーバー管理マネージャ(管理ツールのみ)」を選択して「次へ」をクリックして下さい。
これでサーバー管理マネージャのみがインストールされます。以降はインストーラーの指示に従ってインストールを完了させます。
サーバー管理マネージャによる設定
サーバー管理マネージャを起動すると上記のウィンドウが表示されます(アプリ名は”SE-VPN サーバー管理 (ツール)”です)。「新しい接続設定」をクリックして、接続設定を作成します。
「接続設定名」に任意の文字列、「ホスト名」にSoftEther VPNサーバーをインストールしたPCのホスト名またはIPアドレスを入力し、右下の「OK」をクリックします。
初期ウィンドウに戻ってくるので、先程作成した「接続設定名」を選択し、「接続」をクリックします。
初回接続時に管理者パスワードの設定を求められます。
Bridge簡易セットアップ画面が表示されます。「リモートアクセスVPNサーバー」を選択し、「次へ」をクリックして先に進みます。警告ダイアログが表示されますが、そのまま「はい」をクリックして進めます。
仮想HUB名の入力を求められます。こちらは初期値の”VPN”のまま進めても特に問題ありません。
続いて、ダイナミックDNS機能の設定画面が表示されます。一般的なプロバイダではインターネット接続時のグローバルIPアドレスは固定ではありません。しかし、ダイナミックDNSを使用すれば、動的に変化するIPアドレスにホスト名を付けてくれます。
そうすることにより、外出先からホスト名で家のLANにアクセスすることが可能になります。また、IPアドレスが変化した場合でも自動的にDNS設定をやり直してくれます。
「ダイナミックDNSホスト名の変更」にて名前を変更できます。デフォルトのままでも良いですし、自分の分かりやすい名前に変えても良いです。このダイナミックDNSホスト名は実際の接続時に使用するのでどこかに控えて置いて下さい。最後に「閉じる」をクリックして抜けます。
IPsec/L2TP/EtherIP/L2TPv3設定画面が表示されます。一番上の「L2TPサーバ機能を有効にする(L2TP over IPsec)」を選択し、一番下の「IPsec事前共有鍵」の文字列を設定します。この鍵の文字列も接続時に使用するので、どこかに控えておいて下さい。
VPN Azureの機能は不要なので、「VPN Azureを無効にする」を選択し、「OK」をクリックして抜けます。
簡易セットアップの実行画面が表示されます。ここではユーザー作成だけ行います。「ユーザーを作成する」をクリックします。
「ユーザー名」と「パスワード」だけ設定し、「OK」をクリックして抜けます。ユーザーの管理画面が表示されますが、閉じて構いません。
再び簡易セットアップの実行画面に戻りますが、「閉じる」をクリックして抜けます。
VPNサーバーの管理画面が表示されます。左下の「ローカルブリッジ設定」をクリックします。
ローカルブリッジ設定画面が表示されます。ここでtapデバイスを作成します。tapデバイスは仮想イーサネットデバイスです。ブリッジインタフェースを通して物理インタフェースとの通信を可能にします。
「仮想HUB」で先程作成した仮想HUBを選択し、「新しいtapデバイス名」に文字列”vpn”を入力します。「ローカルブリッジを追加」をクリックします。注意事項のダイアログが表示されますが、そのまま「OK」をクリックして進めます。
ローカルブリッジ設定画面に戻ります。上の表に作成したtapデバイスの情報が表示されていることを確認します。
LANをDHCPで管理している場合、以上でSoftEther VPNサーバーの設定は完了です。「tapデバイスの設定確認」の説明に飛んで下さい。
LANでDHCPサーバが動いておらず、固定IPで管理している場合は以下の説明に進んで下さい。
仮想DHCPサーバー機能の設定
LANでDHCPサーバが動いておらず、固定IPで管理している場合、仮想DHCPサーバー機能を動かす必要があります。この仮想DHCPサーバーは仮想と名前は付いていますが、通常のDHCPサーバーと何も変わりはありません。
DHCPを有効にしたPCをLANに接続すると仮想DHCPサーバーがIPアドレスを割り当てます。そのため、LANに接続されたルーターやLinux PCで新たにDHCPサーバを稼働させるのでも問題ありません。
また、私が調べた限り、SoftEther VPNサーバーに接続したクライアントに対するIPアドレス割当は、DHCPによる方法しかないようです。結局のところ、LANを固定IPで管理している場合でもDHCPサーバーを必ず動かすしかないことになります。
以上を踏まえて、以降で仮想DHCPサーバー機能の設定手順を説明します。
「仮想HUBの管理」をクリックします。
仮想HUBの管理画面が表示されます。右下の「仮想NATおよび仮想DHCPサーバー機能」をクリックします。
仮想NATおよび仮想DHCP機能(SecureNAT)の設定画面が表示されます。「SecureNATの設定」をクリックします。
SecureNATの設定画面が表示されます。「仮想NAT機能を使用する」のチェックを外します。これを外さないと今回の設定では動作がおかしくなるので注意して下さい(検証中に大量のブロードキャストが発生しひどい目に合いました)。
あとはLANのネットワークアドレスに合わせて「仮想ホストのネットワークインターフェイスの設定」、「仮想DHCPサーバーの設定」を設定します(例えば192.168.0.0/24ならIPアドレスは192.168.0.100等)。「クライアントに割り当てるオプションの設定」は空欄でも構いません。
設定が終わったら「OK」をクリックして抜けます。
最後に「SecureNAT機能を有効にする」をクリックします。警告が出ますが「OK」で進めます。これで仮想DHCPサーバーの設定は完了です。
tapデバイスの設定確認
ここからの作業はSoftEther VPNサーバーをインストールしたLinux側で行います。tapデバイスが出来ていることを確認します。”tap_vpn”のデバイス名が表示されればOKです。下記はCentOS 7での表示例です。
# ifconfig tap_vpn tap_vpn: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 00:ac:0a:ba:a7:4a txqueuelen 500 (Ethernet)
続いて、SoftEther VPNサーバーのサービスを再起動します。
Ubuntuの場合) # sudo service vpnserver restart Debianの場合) # /etc/init.d/vpnserver restart CentOS 7の場合) # systemctl restart vpnserver
tapデバイスがブリッジ設定に追加されているかを確認します。”interfaces”の項目に”tap_vpn”のデバイス名が表示されればOKです。
# brctl show bridge name bridge id STP enabled interfaces br0 8000.001122334455 no eth0 ← ブリッジに収容したI/F名 tap_vpn
ここまででSoftEther VPNサーバーの設定確認が完了しました。残りはルーターの設定です。
ルーター設定
上図はSoftEther VPNのネットワーク構成例です。インターネット側にはADSLや光のブロードバンドルーターで接続し、LANの中は無線LANルーターを経由してSoftEther VPNサーバーの動作するLinux PCが接続しているものとします。
スマホなどのSoftEther VPNクライアントがLAN内のSoftEther VPNサーバーにアクセスする場合、サーバー管理マネージャで登録したダイナミックDNSホスト名(DDNSホスト名)でアクセスします。DDNSホスト名はブロードバンドルーターに割り当てられたグローバルIPアドレスに等しいので、このままではブロードバンドルーターで通信が止まってしまいます。
このようなインターネット側からのアクセスをLANの内側のPCに引き込むための機能がポートフォワードです。ルーターの設定ではポートフォワーディング設定、ポートマッピング設定などの名称で呼ばれます(以降はポートフォワーディング設定に統一)。
このポートフォワーディング設定はルーターがIPマスカレード等のIPアドレス変換を行っている場合に必要になります(IPマスカレードはNAPTやアドバンストNATなどの別名があります)。ネットワーク構成例では2つのルーターのそれぞれでIPマスカレードを行っているものとし、ポートフォワーディング設定もそれぞれで行っています。
具体的な設定は以下の様になります。UDPの500番、4500番を対象に設定します。500番はIPsec、4500番はSoftEther VPNで使用します。
対象プロトコル | 対象ポート | 宛先アドレス | 宛先ポート |
---|---|---|---|
UDP | 500 | 192.168.0.1 | 500 |
UDP | 4500 | 192.168.0.1 | 4500 |
対象プロトコル | 対象ポート | 宛先アドレス | 宛先ポート |
---|---|---|---|
UDP | 500 | 192.168.0.10 | 500 |
UDP | 4500 | 192.168.0.10 | 4500 |
注意点として、LAN内部のルーターがIPマスカレードを使用していない場合、ブロードバンドルーターの宛先アドレスは直接SoftEther VPNサーバーを対象として下さい。上記の様に中継する必要はありません。
最後に私が使用しているブロードバンドルーター、NEC製Aterm WD700の設定例を掲載しておきます。
接続確認
以上で設定が最後まで完了しました。それでは実際にスマホなどのクライアントからSoftEther VPNサーバーに接続してみましょう。それぞれのOSの接続方法はSoftEther VPNの以下のページに説明があります。
注意事項があります。スマホやタブレットの場合、家の無線LANルーター経由でインターネットに接続しているとSoftEther VPNでの接続ができません。3GでもLTEでも良いですが、携帯電話会社の回線経由で接続して下さい。
私が動作確認したのはAndroidのみなので、Androidについてのみ方法を説明します。以降はAndroid 4.4での方法です。
「設定」の「無線とネットワーク」から「その他」に移動し、「VPN」をタップします。「+」をタップするとVPN設定を追加できます。設定内容は次の通りです。
設定名 | 設定内容 |
---|---|
名前 | 任意の文字列(分かりやすい名前) |
タイプ | L2TP/IPSec PSK |
サーバーアドレス | DDNSホスト名 |
L2TPセキュリティ保護 | (未使用) |
IPSec ID | (未使用) |
IPSec事前共有鍵 | サーバー管理マネージャで設定した文字列 |
DNS検索ドメイン | (未使用) |
DNSサーバー | (未使用) |
転送ルート | 空欄の場合、全通信がVPN経由になる。 LANのネットワークアドレスを入力すると LANアクセスのみVPN通信となる(例:192.168.10.0/24)。 |
設定を保存し、先ほど設定した「名前」をタップするとユーザー名とパスワードの入力を求められるので、仮想HUBで設定したものを入力します。「接続」をタップするとSoftEther VPNサーバに接続しに行きます。
接続に成功すると「接続されました」と表示されます。接続後は、例えばブラウザからLANのWebサーバのIPアドレスを入力すれば、Webサーバに接続できるようになります。注意事項として、自分で切断しない限りSoftEther VPNの接続はずっと維持されます。ポーリングパケットを停止すれば良いようですが、現状は設定ファイルの編集しか停止方法は無いようです(「3.4.8 IP アドレス存在確認ポーリングパケット」を参照)。
接続できない場合
クライアントからの接続時にどこで通信が止まっているのかを確認する必要があります。下記のとりあえずログをみるしかないと思います。
- ルーターのログ
- SoftEther VPNサーバーのログ(/usr/local/vpnserver/server_log/以下)
SoftEther VPNサーバーのログに接続時の情報が何も残っていないようであれば、途中のルーターの設定に誤りがあるものと考えられます。