Ubuntu 22.04 サーバー版に SoftEther VPN サーバーを構築する方法
前書き
過去記事をフル活用してやってみる。
前提条件
- Ubuntu は中古で買った ThinkCentre M700 Tiny にインストール & OS の設定済み
- IPv6 アドレスは使わない
- ローカルブリッジ用に専用の NIC を追加する (USB – LAN アダプターを使う)
- このため ThinkCentre には LAN ケーブル 2 本が接続される形になる
- VPN プロトコルは L2TP/IPsec を使えるようにする
SoftEther VPN サーバーをインストールする方法
過去記事はこちら。
無事、過去記事からインストールすることができた。
SoftEther VPN サーバーを設定する方法
過去記事はこちら。
過去記事の [3] 仮想 HUB を作る のところでパスワードを入力する箇所だけ違う手順にした。今回は空エンターして仮想 HUB にパスワードの設定をしないことにした。
また、過去記事 SecureNAT の設定 のところの設定は今回実施しない。今回はローカルブリッジさせる設定にするから SecureNAT は使わない構成となるためだ。
ローカルブリッジを設定する方法
本投稿の前提条件のところに書いたように、今回は USB – LAN アダプターを ThinkCentre に挿して、この USB – LAN アダプターをローカルブリッジ専用の NIC にする。
このため、まずローカルブリッジ専用 NIC がちゃんと ThinkCentre で動作するかどうかを確認する。過去記事はこちら。
過去記事 USB-NIC を認識したかどうかを判断するためのコマンド のところで、nmcli と ifconfig を使っているが、Ubuntu 22.04 ではこれらのコマンドがデフォルトではインストールされていなかった。このため lsusb コマンドだけで USB – LAN アダプターが動作することの確認を行った。
あと過去記事には記載がないが、ip link コマンドを実行して USB – LAN アダプターの名前を確認しておく必要がある。
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 00:23:24:eb:57:ef brd ff:ff:ff:ff:ff:ff
altname enp0s31f6
3: enx00e120002d42: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:e1:20:00:2d:42 brd ff:ff:ff:ff:ff:ff
$
今回の構成の場合、上記 3 の enx00e120002d42 が USB – LAN アダプターの名前である。
この名前が次のローカルブリッジの設定で必要になってきます。過去記事はこちら。
/etc/netplan/99_config.yaml をすでに使用している場合は、ローカルブリッジ用 NIC の設定を追記する形になります。
$ cat 99_config.yaml
network:
version: 2
renderer: networkd
ethernets:
eno1:
addresses:
- 172.16.2.202/24
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
routes:
- to: default
via: 172.16.2.254
ethernets:
enx00e120002d42:
dhcp4: false
addresses: [0.0.0.0/32]
$
今回の場合、最後の 4 行を追記した形になります。
過去記事 ローカルブリッジに使う LAN カード (NIC) を確認する を実行する前段階として、sudo ./vpncmd を実行して VPN サーバーに接続しておかないとだめですね。そこの手順が過去記事には抜けています。書かなくてもわかる人にはもちろんわかりますが。その抜けている手順を書いておきます。
更に言うと、sudo ./vpncmd を実行する前段階として VPN サーバーが起動している必要があります。それもひっくるめて書きます。↓
$ cd /usr/local/vpnserver $ sudo ./vpnserver start $ sudo ./vpncmd vpncmd command - SoftEther VPN Command Line Management Utility SoftEther VPN Command Line Management Utility (vpncmd command) Version 4.39 Build 9772 (English) Compiled 2022/04/26 18:00:50 by buildsan at crosswin Copyright (c) SoftEther VPN Project. All Rights Reserved. By using vpncmd program, the following can be achieved. 1. Management of VPN Server or VPN Bridge 2. Management of VPN Client 3. Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool) Select 1, 2 or 3: 1 Specify the host name or IP address of the computer that the destination VPN Server or VPN Bridge is operating on. By specifying according to the format 'host name:port number', you can also specify the port number. (When the port number is unspecified, 443 is used.) If nothing is input and the Enter key is pressed, the connection will be made to the port number 8888 of localhost (this computer). Hostname of IP Address of Destination: If connecting to the server by Virtual Hub Admin Mode, please input the Virtual Hub name. If connecting by server admin mode, please press Enter without inputting anything. Specify Virtual Hub Name: Password: ************** Connection has been established with VPN Server "localhost" (port 443). You have administrator privileges for the entire VPN Server. VPN Server>
ここまでで SoftEther VPN サーバーとしての設定は完了です。
L2TP/IPsec クライアントからの VPN 通信を受け付ける様になっています。(ufw で通信をブロックする設定とか入っていたら、そこは別途対処が必要ですが)
ただし、ほとんどの場合、SoftEther VPN サーバーはグローバル IP アドレスを持っていない環境と思います。今回僕が使っている ThinkCentre もそうで、172.16.2.202 というプライベート IP アドレスを使用しています。
この場合、ポート開放とかポートフォワードといった設定が必要になります。いわゆる DNAT、宛先 NAT というやつですね。これについては次の記事で書こうと思いますが、ご利用になられているルーター (ブロードバンドルーター) によって、設定方法はさまざまだと思います。
OS 起動時に SoftEther VPN サーバーを自動起動させる方法
この過去記事そのままの手順でオーケーでした。
おまけ
SoftEther VPN サーバーはデフォルト状態で複数の tcp ポートで接続を待ち受けます。L2TP/IPsec を使う場合、tcp ポートは不要なので、よりセキュアな設定にしたいときには tcp ポートでの待受をしないようにすることができます。
しかし、個人的にはそこまでしなくて良いのでは?と考えているので「おまけ」として書いておきます。
以下のように、ListenerDelete コマンドを使って tcp ポートでの待受をストップさせます。
VPN Server>listenerlist ListenerList command - Get List of TCP Listeners Port Number|Status -----------+--------- TCP 443 |Listening TCP 992 |Listening TCP 1194 |Listening TCP 5555 |Listening The command completed successfully. VPN Server>listenerdelete 443 ListenerDelete command - Delete TCP Listener The command completed successfully. VPN Server>listenerdelete 992 ListenerDelete command - Delete TCP Listener The command completed successfully. VPN Server>listenerdelete 1194 ListenerDelete command - Delete TCP Listener The command completed successfully. VPN Server>listenerlist ListenerList command - Get List of TCP Listeners Port Number|Status -----------+--------- TCP 5555 |Listening The command completed successfully. VPN Server>
上記の例では tcp: 443, 992, 1194 での待ち受けをやめさせています。tcp: 5555 だけは待ち受ける設定のままにしています。
ListenerList コマンドで現在の tcp 待ち受けポートを確認することができます。
参考資料
→ 3.3.6 リスナーポート のところを読んでみてください。特に以下の注意事項には目を通す必要があります。
使用可能なすべてのリスナーポートを停止したり、削除したりしないでください。もしすべてのリスナーポートを停止または削除すると、その管理セッションが終了した後、次回から二度とその VPN Server に接続することができなくなります。その状態を復旧するためには、コンフィグレーションファイルを手動で編集する必要があります。