Ubuntu Weekly Recipe

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

今回は、第788回で設定したSoftEther VPNサーバーにアクセスするクライアント設定の方法を紹介します。

SoftEther VPNサーバーのクライアント

SoftEther VPNにはネイティブのほかいくつかのVPNサーバーエミュレーション機能があります。主に使用されるのはL2TP/IPsec、OpenVPN、SSTPでしょう。このうちL2TP/IPsecとOpenVPNは解説不要ではあるもののルーターの設定変更が必要なため今回の用途にはそぐわないので、使用しません。SSTPはSecure Socket Tunneling Protocolの略で、Microsoftが定めたVPNの規格です。Windows Serverを使用しているのであればおなじみでしょう。

SSTPはルーターの設定変更が不要で、またNetwork Manager SSTPというNetwork Manager用のVPNプラグインがあり、GUIで設定できます。

SoftEther VPNネイティブのクライアントはWindows用にはGUIが用意されていますが、Ubuntuでは設定をコマンドラインで行います。

今回はどちらの方法も紹介します。

SSTPサーバーを有効にする

第788回の設定ではSSTPサーバー機能を有効にしていないため、⁠Server Manager」を起動し、ログインして右下にある「OpenVPN/MS-SSTP Setting」をクリックしてください。

「Enable MS-SSTP VPN Clone Server Function」にチェックを入れます図1⁠。⁠OK」をクリックしてメニューを閉じてください。

図1 前もってMS-SSTP VPNサーバー機能を有効にしておく
図1

SSTPクライアント

SSTPクライアントは別途インストールが必要です。端末を起動し、次のコマンドを実行してください。

$ sudo apt install network-manager-sstp-gnome

「設定⁠⁠-⁠ネットワーク」にある「VPN」の右にある「+」をクリックし、設定するVPNの方式を選択します図2⁠。もちろん「Secure Socket Tunneling Protocol (SSTP)」をクリックします。

図2 network-manager-sstp-gnomeパッケージをインストールすると、SSTPが追加される
図2

あとは「ゲートウェイ」「Username」「パスワード」を入力します図3⁠。⁠名前」もよりわかりやすいものにしたほうがいいでしょう。

図3 具体的な設定項目
図3

ここでの設定のポイントは、⁠ゲートウェイ」はVPN Azureを使用したURLにすることです。具体的には「softether.net」ではなく「vpnazure.net」にします。Server Managerの下に表示されています図4⁠。あとはデフォルトの設定だとパスワードは毎回入力することになるので、覚えさせるといいでしょう図5⁠。⁠詳細設定」は特に変更する必要はありません。

図4 現在のドメイン名はServer Managerの下部で確認できる
図4
図5 パスワードを覚えさせる設定例
図5

あとは「設定⁠⁠-⁠ネットワーク」や右上のシステムメニューにある「VPNオフ」などから接続します図6⁠。

図6 実際にSSTPで接続できている様子
図6

こんなに簡単でいいのでしょうか、というくらいのお手軽さです。

SoftEther VPNネイティブクライアント

続いてSoftEther VPNネイティブクライアントの設定を紹介します。Ubuntu(デスクトップ)で使用するのであればSSTPクライアントでいいのではないかとは思いますが、そうでない場面もあるのできっと有用な情報でしょう。もちろん、SSTPと両方を設定する必要はありません。

何はなくともダウンロードページを表示し、⁠ダウンロードするソフトウェア」「SoftEther VPN (Freeware)」に、⁠コンポーネントを選択」「SoftEther VPN Client」に、⁠プラットフォームを選択」「Linux」に、⁠CPUを選択」「Intel x64 / AMD64 (64bit)」にし、⁠SoftEther VPN Client (Ver 4.42, Build 9798, rtm)」をダウンロードします。

またsystemdのユニットファイルもGitHubのリポジトリから取得しておきます。

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

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

さて、ここからいよいよ接続設定です。やることは、vpncmdコマンドを実行して仮想LANカードの作成、アカウントの作成、パスワードのセット、接続、自動接続設定です。手数は多いものの、流れとしてはさほど分かりにくくはありません。

まずはvpncmdコマンドを実行します。

$ sudo /opt/vpnclient/vpncmd
vpncmd コマンド - SoftEther VPN コマンドライン管理ユーティリティ
SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド)  
Version 4.42 Build 9798(Japanese) Compiled 2023/06/30 11:06:58 by buildsan at crosswin with OpenSSL 3.0.9
Copyright (c) 2012-2023 SoftEther VPN Project. All Rights Reserved.

vpncmd プログラムを使って以下のことができます。

1. VPN Server または VPN Bridge の管理
2. VPN Client の管理
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定) 

1 - 3 を選択: 2

ここではVPN Clientの管理に該当するので「2」を入力し、エンターキーを押します。

接続先の VPN Client が動作しているコンピュータの IP アドレスまたはホスト名を指定してください。
何も入力せずに Enter を押すと、localhost (このコンピュータ) に接続します。
接続先のホスト名または IP アドレス:

VPN Client "localhost" に接続しました。

VPNクライアントはローカルホストで動いているため、⁠接続先のホスト名またはIPアドレス」は空欄のままで構いません。

続いて仮想LANカードを作成します。名前はなんでもいいですが、ここでは「softether」とします。

VPN Client>niccreate softether 
NicCreate コマンド - 新規仮想 LAN カードの作成
コマンドは正常に終了しました。

このように設定項目は引数にできるので、積極的に使用していきます。

アカウントを作成します。ここではアカウント名は「homesoftether」としています。

VPN Client>accountcreate homesoftether
AccountCreate コマンド - 新しい接続設定の作成
接続先 VPN Server のホスト名とポート番号: (設定したホスト名).softether.net:443

接続先仮想 HUB 名: VPN

接続するユーザー名: (作成したユーザー名)

使用する仮想 LAN カード名: softether

コマンドは正常に終了しました。

「接続先仮想HUB」はデフォルトのまま変えていなければ「VPN」で、⁠使用する仮想LANカード名」は先ほど作成したものです。

パスワードも設定します。

VPN Client>accountpasswordset homesoftether
AccountPasswordSet コマンド - 接続設定のユーザー認証の種類をパスワード認証に設定 
パスワードを入力してください。キャンセルするには Ctrl+D キーを押してください。

パスワード: *********
確認入力  : *********


standard または radius の指定: standard

コマンドは正常に終了しました。

設定としては以上で、実際に接続してみます。

VPN Client>accountconnect homesoftether
AccountConnect コマンド - 接続設定を使用して VPN Server へ接続を開始 
コマンドは正常に終了しました。

接続できたかどうかはわかりませんので、状況を確認します。

VPN Client>accountstatusget homesoftether
AccountStatusGet コマンド - 接続設定の現在の状態の取得
項目  |値
------------------------------+------------------------------------------------------------------------
接続設定名  |homesoftether
セッション接続状態|接続完了 (セッション確立済み) 
(中略)
コマンドは正常に終了しました。 

「セッション接続状態」「接続完了」になっていれば接続に成功しています。その場合は、SoftEtherクライアントが起動したら自動的に接続するように設定します。

VPN Client>accountstartupset homesoftether
AccountStartupSet コマンド - 接続設定をスタートアップ接続に設定
コマンドは正常に終了しました。

接続に失敗した場合は次のようになります。

VPN Client>accountstatusget homesoftether
AccountStatusGet コマンド - 接続設定の現在の状態の取得
項目  |値
------------------------+------------------------------- 
接続設定名  |homesoftether 
セッション接続状態|再試行中
(中略)
コマンドは正常に終了しました。

「セッション接続状態」「再試行中」になっている場合は、設定に誤りがある可能性が極めて高いです。

その場合は、接続を停止してアカウントを削除し、アカウント作成からやり直します。

VPN Client>accountdisconnect homesoftether
AccountDisconnect コマンド - 接続中の接続設定の切断
コマンドは正常に終了しました。

VPN Client>accountdelete homesoftether
AccountDelete コマンド - 接続設定の削除
コマンドは正常に終了しました。

VPN Client>accountcreate homesoftether
AccountCreate コマンド - 新しい接続設定の作成
(以下略)

接続に成功したらvpnclientを終了します。

VPN Client>accountstartupset homesoftether
AccountStartupSet コマンド - 接続設定をスタートアップ接続に設定
コマンドは正常に終了しました。

最後に、作成した仮想LANカードにIPアドレスを付与します。次のコマンドを実行してください。

$ sudo systemctl edit --full softether-vpnclient.service
[Unit]
(中略)

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

(後略)

固定IPアドレスを割り当てることを推奨します。

softether-vpnclient.serviceを再起動すれば、SoftEther VPNサーバーに接続できるようになるでしょう。

おすすめ記事

記事・ニュース一覧