Ubuntu Weekly Recipe

第788回SoftEther VPNでIPoEインターネット接続でも自宅サーバーにアクセスする[サーバー編]

今回は自宅サーバーにログインするためSoftEther VPNの設定方法を紹介します。

SoftEther VPNを紹介する意義

本連載は始まって15年以上になります。SoftEther VPNもリリースされて10年以上になりますが、本連載で正面切って紹介されたことはありませんでした。

SoftEther VPNは、おそらく聞いたことがないという読者はいないでしょう。著名なVPNサーバークライアントです。多機能なぶん設定はやや難しく、今となっては純粋にVPNサーバーを構築するのであれば第614回を参考してWireGuardを検討するのが簡単です。第759回で紹介したように、Ubuntu 23.04以降であればクライアント側の設定もGUIでできます。

ではなぜ今SoftEther VPNなのでしょうか。現在はNTT東西とフレッツ光サービスを契約している場合、IPoE方式によるインターネット接続が使用できます。メリットも多いですがデメリットもあり、これまでのような容易さで自宅サーバーへのアクセスができなくなります。

対策はいくつか考えられます。そのうちの1つはSoftEther VPNに付随するVPN Azureを使用することです。これはSoftEther VPNから簡単に使えるダイナミックDNS機能です。

今どき自宅サーバーが必要な用途はNASくらいしかなく、NAS専用機であればこのあたりの機能を持っているだろうという意見も分からなくはないのですが、筆者のように自宅サーバーに回帰するのが妥当ではないかと考える勢もいるのです。

そんな中選択したのがこの方式で、今更感があっても紹介することにしました。

準備

SoftEther VPNは、現在のUbuntuであればリポジトリにパッケージもあるのですが、これは使用しません。SoftEther VPNがオープンソースApache License 2.0であることはご存知でしょう。そして現在SoftEthter VPNSoftEther VPN Stableの2本立てで開発されています。前者は開発が活発に行われており、さまざまな変更点があります。後者はその名のとおり変更点もあまり多くなく(ただし必要であれば大胆な変更も入る⁠⁠、メンテナンスも楽です。

Ubuntuのパッケージにあるのは(やや古い)前者ですが、今回は後者を使用します。

使用するバージョンは最新のRTM(Release to Manufacturing)のv4.42-9798-rtmとします。ダウンロードセンターにアクセスし、⁠コンポーネント」「SoftEther VPN Server⁠⁠、⁠プラットフォーム」「Linux⁠⁠、CPUを「Intel x64 / AMD64 (64bit)」にして「SoftEther VPN Server (Ver 4.42, Build 9798, rtm)」をクリックしてバイナリをダウンロードします図1⁠。もちろんRaspberry Piなどを使用している場合は適切な選択肢に読み替えてください。

図1 バイナリのダウンロード方法
図1

バイナリ内にsystemdのユニットファイルは含まれないため、GitHubのリポジトリから取得しておきます。

インストール

端末を起動し、前述の2つのファイルをダウンロードしたフォルダーに変更し、次のコマンドを実行してください。

$ tar xf softether-vpnserver-v4.42-9798-rtm-2023.06.30-linux-x64-64bit.tar.gz
$ sudo cp -r vpnserver/ /opt/
$ sudo cp softether-vpnserver.service /etc/systemd/system
$ cd /opt/vpnserver/
$ sudo make
$ sudo systemctl daemon-reload 
$ sudo systemctl enable --now softether-vpnserver.service 

これでSoftEther VPNサーバーが動作したでしょう。確認にはsystemctl status softether-vpnserver.service コマンドを実行してください。

続けて、Server Managerも取得します。設定自体はコマンドからも行えますが、複雑になるので設定ツールを使用したほうがいいでしょう。Web管理画面もありますが、これから紹介する初期設定は行えませんでした。

Windows PCがある場合はそちらで実行してください。UbuntuでもWineがあれば動作します。せっかくなので今回はWineを使用する方法を紹介します。

前述のダウンロードセンターにアクセスし、⁠コンポーネント」「SoftEther VPN Server Manager for Windows⁠⁠、⁠プラットフォームを選択」「Windows (.zip package without installers)⁠⁠、⁠CPUを選択」「Intel (x86 and x64)」にし、⁠ZIP Package of vpnsmgr.exe and vpncmd.exe (without installers) (Ver 4.42, Build 9798, rtm)」をクリックします図2⁠。

図2 Server Managerのダウンロード方法
図2

やはり端末を起動し、カレントフォルダーをダウンロードしたフォルダーに移動して次のコマンドを実行してください。

$ unzip softether-vpn_admin_tools-v4.42-9798-rtm-2023.06.30-win32.zip 
$ sudo apt install wine
$ wine ./vpnsmgr.exe 

サーバー設定

Wineで起動するとなぜかServer Managerが英語メニューになりますので、そのまま紹介します。起動するとまずは「New Settings」をクリックします図3⁠。

図3 Server Managerを起動し、中央左の「New Setting」をクリックする
図3

接続設定が表示されるので、⁠Setting Name」だけ入力して「OK」をクリックします図4⁠。

図4 新しい接続設定。⁠Setting Name」を入力する
図4

Server Managerに戻りますが、新しい項目が追加されているので、そこを選択して「Connect」をクリックします。

図5 作成した設定に接続する
図5

管理パスワードを決定します図6⁠。同じものを2回入力して「OK」をクリックしてください。

図6 管理パスワードを入力する
図6

サーバーにするかブリッジにするかの選択が表示されるので、一番上の「Remote Access VPN Server」にチェックを入れて「Next」をクリックします図7⁠。確認ダイアログが表示されるので「はい」をクリックします図8⁠。

図7 今回はVPNサーバーへのリモートアクセスとする
図7
図8 表示される確認ダイアログ。初期化するので「はい」をクリックする
図8

仮想ハブの名称を入力します図9⁠。通常はデフォルトのままでいいでしょう。

図9 仮想ハブの名前を入力する
図9

今回のキモである「Dynamic DNS Function」の設定です。ホスト名をわかりやすいものに変更して「Exit」をクリックしてください図10⁠。

図10 モザイクだらけでわかりにくいが、ホスト名は右側の入力欄で変更する
図10

メインメニューが表示されるので、下にある「VPN Azure Settings」をクリックします図11⁠。⁠Enable VPN Azure」を選択してOKをクリックしてください。

図11 Server Managerのメインメニュー
図11
図12 VPN Azureを有効にする
図12

「Local Bridge Setting」をクリックし、Tapデバイスを作成してください図13⁠。Tapデバイスが必要な理由は後述します。

図13 Tapデバイス名を入力し、Tapデバイスを作成する
図13

「Manage Virtual Hub」をクリックし、さらに「Manage Users」をクリックしてユーザーを作成します図14⁠。ここではユーザー名とパスワードで認証することにします。

図14 ユーザーを作成する
図14

これで最低限必要な設定が完了しました。

TapデバイスへのIPアドレス付与

SoftEther VPNサーバーは稼働しましたが、このままだとSoftEther VPN経由では稼働しているサーバー(SSHやSambaなど)へのアクセスができません。そのため、先ほど作成したTapデバイスにローカルブリッジ用のIPアドレスを付与します。

Tapデバイス名が「tap_softether⁠⁠、付与するIPアドレスが192.168.13.11の場合、次のコマンドを実行してください。

$ sudo ip addr add 192.168.13.11/24 dev tap_softether

なお、Tapデバイス名はip tapコマンドを実行すると表示されます。

これで付与したIPアドレスでアクセスできるようになりますが、このままだと起動するたびに手動でこのコマンドを実行することになります。それは面倒なので、systemdのユニットファイルを変更して自動的にIPアドレスを付与するようにします。次のコマンドを実行してください。

$ sudo editor /etc/systemd/system/softether-vpnserver.service

以下を参考に「Service」セクションを編集してください。

[Service]
Type=forking
EnvironmentFile=-/opt/vpnserver
ExecStart=/opt/vpnserver/vpnserver start
ExecStop=/opt/vpnserver/vpnserver stop
KillMode=process
Restart=on-failure
ExecStartPost=/bin/sleep 5
ExecStartPost=/sbin/ip addr add 192.168.13.11/24 dev tap_softether
ExecStartPost=/sbin/ip link set mtu 1280 dev tap_softether
ExecStop=/sbin/ip addr del 192.168.13.11/24 dev tap_softether

おなじみのコマンドを実行して適用します。

$ sudo systemctl start softether-vpnserver.service 
$ sudo systemctl daemon-reload

続けてクライアントの設定を

サーバーの設定は以上です。引き続きクライアントを設定する必要がありますが、紹介すべきかどうかは悩ましいところで、続くかどうかは未定です。Windowsクライアントであれば特に説明する必要はありませんしね。

おすすめ記事

記事・ニュース一覧