SoftEtherを利用してVPN Clientを構築する手順です
環境は Fedora Workstation を利用です
マシンの中に 仮想NIC を作って、VPN Server と通信できるようにします
構築イメージ
---------------------------------
|
| VPN-Hub1 (10.10.10.110):VpnHub1(仮想DHCP)
| ↑↓ ↑↓
| ↑↓ VPN-Nic1 (10.10.10.111):tap_tap1
| ↑↓
| ↑↓ 物理NIC(192.168.56.101):待ち受けポート:44444
| ↑↓
--↑↓----------------[CentOS7 SoftEther Server]
↑↓
↑↓ (10.10.10.0/24)
↑↓
--↑↓--------------------[SoftEther Client]
| ↑↓
| ↑↓ 物理NIC(192.168.56.222)
| ↑↓
| Vpn-Nic (10.10.10.222):vpn_tap1
|
---------------------------------
※ この記事は SoftEther Client の構築手順です
SoftEther インストール
コンパイル環境
sudo dnf group install -y c-development development-tools
SoftEther - Clientのダウンロード
最新版は確認:http://jp.softether-download.com/files/softether/
curl -O https://jp.softether-download.com/files/softether/v4.44-9807-rtm-2025.04.16-tree/Linux/SoftEther_VPN_Client/64bit_-_Intel_x64_or_AMD64/softether-vpnclient-v4.44-9807-rtm-2025.04.16-linux-x64-64bit.tar.gz
ls -l softether-vpnclient*
-rw-r--r--. 1 root root 8401878 7月 10 11:13 softether-vpnclient-v4.44-9807-rtm-2025.04.16-linux-x64-64bit.tar.gz
SoftEther Client 展開&コンパイル
sudo tar xvfz softether-vpnclient-v4.44-9807-rtm-2025.04.16-linux-x64-64bit.tar.gz
sudo mv vpnclient /usr/local/
cd /usr/local/vpnclient
sudo make
SoftEther Client セキュリティ設定
sudo chmod 600 *
sudo chmod 700 . vpncmd vpnclient code lib
sudo ls -l
-rw-------. 1 root root 82 4月 16 2025 Authors.txt
-rw-------. 1 root root 3550 4月 16 2025 Makefile
-rw-------. 1 root root 34694 4月 16 2025 ReadMeFirst_Important_Notices_cn.txt
-rw-------. 1 root root 40185 4月 16 2025 ReadMeFirst_Important_Notices_en.txt
-rw-------. 1 root root 55417 4月 16 2025 ReadMeFirst_Important_Notices_ja.txt
-rw-------. 1 root root 5570 4月 16 2025 ReadMeFirst_License.txt
drwx------. 1 root root 38 7月 10 11:16 code
-rw-------. 1 root root 2015854 4月 16 2025 hamcore.se2
drwx------. 1 root root 184 7月 10 11:16 lib
-rwx------. 1 root root 6689568 7月 10 11:16 vpnclient
-rwx------. 1 root root 6689496 7月 10 11:16 vpncmd
SoftEther Client の仮想NICにIPアドレスを設定するシェル
#!/bin/bash
# case Static IP
TAP_IF="vpn_tap1"
# 30sec Loop
for i in {1..30}
do
sleep 1
ip tap | grep --quiet ${TAP_IF}
STATUS=$?
if [ "${STATUS}" == "0" ]
then
ip address add dev ${TAP_IF} 10.10.10.90/24
break;
fi
done
exit 0
sudo chmod 700 /usr/local/vpnclient/setting_ip.sh
SoftEther Client の自動起動設定
サービスの起動時に、仮想NIC (vpn_tap1) に固定IPアドレスを付与する
[Unit]
Description=SoftEther VPN Client
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/vpnclient/vpnclient start
ExecStartPost=/usr/local/vpnclient/setting_ip.sh
ExecStop=/usr/local/vpnclient/vpnclient stop
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable vpnclient
Created symlink '/etc/systemd/system/multi-user.target.wants/vpnclient.service' → '/usr/lib/systemd/system/vpnclient.service'.
SoftEther Client の設定
□ VPN Client へ接続
まだいろいろ設定していないので、サービス(systemctl)としてではなく直接 vpnclient を起動する
sudo /usr/local/vpnclient/vpnclient start
The SoftEther VPN Client service has been started.
sudo /usr/local/vpnclient/vpncmd localhost /CLIENT
vpncmd コマンド - SoftEther VPN コマンドライン管理ユーティリティ
SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
Version 4.44 Build 9807 (Japanese)
Compiled 2025/04/16 04:50:46 by buildsan at crosswin with OpenSSL 3.0.9
Copyright (c) 2012-2025 SoftEther VPN Project. All Rights Reserved.
VPN Client "localhost" に接続しました。
VPN Client>
□ VPN Client の管理者パスワードの設定
>PasswordSet
>Quit
□ VPN Client の管理者パスワードの設定確認
起動時にパスワード入力を必要とする
sudo /usr/local/vpnclient/vpncmd localhost /CLIENT
vpncmd コマンド - SoftEther VPN コマンドライン管理ユーティリティ
SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
Version 4.44 Build 9807 (Japanese)
Compiled 2025/04/16 04:50:46 by buildsan at crosswin with OpenSSL 3.0.9
Copyright (c) 2012-2025 SoftEther VPN Project. All Rights Reserved.
アクセスが拒否されました。パスワードが間違っているか、接続する管理モードが正しくない可能性があります。パスワードをもう一度入力することができます。キャンセルする場合は、Ctrl + D を押してください。
パスワード: ******************************************
VPN Client "localhost" に接続しました。
VPN Client>
□ VPN Client のヘルプ確認
VPN Client> help
下記の 66 個のコマンドが使用できます:
About - バージョン情報の表示
AccountAnonymousSet - 接続設定のユーザー認証の種類を匿名認証に設定
AccountCertGet - 接続設定に用いるクライアント証明書の取得
AccountCertSet - 接続設定のユーザー認証の種類をクライアント証明書認証に設定
AccountCompressDisable - 接続設定の通信時のデータ圧縮の無効化
AccountCompressEnable - 接続設定の通信時のデータ圧縮の有効化
AccountConnect - 接続設定を使用して VPN Server へ接続を開始
AccountCreate - 新しい接続設定の作成
AccountDelete - 接続設定の削除
AccountDetailSet - 接続設定の高度な通信設定の設定
AccountDisconnect - 接続中の接続設定の切断
AccountEncryptDisable - 接続設定の通信時の暗号化の無効化
AccountEncryptEnable - 接続設定の通信時の暗号化の有効化
AccountExport - 接続設定のエクスポート
AccountGet - 接続設定の設定の取得
AccountImport - 接続設定のインポート
AccountList - 接続設定一覧の取得
AccountNicSet - 接続設定で使用する仮想 LAN カードの設定
AccountPasswordSet - 接続設定のユーザー認証の種類をパスワード認証に設定
AccountProxyHttp - 接続設定の接続方法を HTTP プロキシサーバー経由接続に設定
AccountProxyNone - 接続設定の接続方法を直接 TCP/IP 接続に設定
AccountProxySocks - 接続設定の接続方法を SOCKS プロキシサーバー経由接続に設定
AccountRename - 接続設定の名前の変更
AccountRetrySet - 接続設定の接続失敗または切断時の再試行回数と間隔の設定
AccountSecureCertSet - 接続設定のユーザー認証の種類をスマートカード認証に設定
AccountServerCertDelete - 接続設定のサーバー固有証明書の削除
AccountServerCertDisable - 接続設定のサーバー証明書の検証オプションの無効化
AccountServerCertEnable - 接続設定のサーバー証明書の検証オプションの有効化
AccountServerCertGet - 接続設定のサーバー固有証明書の取得
AccountServerCertSet - 接続設定のサーバー固有証明書の設定
AccountSet - 接続設定の接続先の設定
AccountStartupRemove - 接続設定のスタートアップ接続を解除
AccountStartupSet - 接続設定をスタートアップ接続に設定
AccountStatusGet - 接続設定の現在の状態の取得
AccountStatusHide - VPN Server への接続中に接続状況やエラー画面を表示しないように設定
AccountStatusShow - VPN Server への接続中に接続状況やエラー画面を表示するように設定
AccountUsernameSet - 接続設定の接続に使用するユーザー名の設定
CertAdd - 信頼する証明機関の証明書の追加
CertDelete - 信頼する証明機関の証明書の削除
CertGet - 信頼する証明機関の証明書の取得
CertList - 信頼する証明機関の証明書一覧の取得
Check - SoftEther VPN の動作が可能かどうかチェックする
KeepDisable - インターネット接続の維持機能の無効化
KeepEnable - インターネット接続の維持機能の有効化
KeepGet - インターネット接続の維持機能の取得
KeepSet - インターネット接続の維持機能の設定
MakeCert - 新しい X.509 証明書と秘密鍵の作成 (1024 bit)
MakeCert2048 - 新しい X.509 証明書と秘密鍵の作成 (2048 bit)
NicCreate - 新規仮想 LAN カードの作成
NicDelete - 仮想 LAN カードの削除
NicDisable - 仮想 LAN カードの無効化
NicEnable - 仮想 LAN カードの有効化
NicGetSetting - 仮想 LAN カードの設定の取得
NicList - 仮想 LAN カード一覧の取得
NicSetSetting - 仮想 LAN カードの設定の変更
NicUpgrade - 仮想 LAN カードのデバイスドライバのアップグレード
PasswordGet - VPN Client サービスに接続するためのパスワードの設定の取得
PasswordSet - VPN Client サービスに接続するためのパスワードの設定
RemoteDisable - VPN Client サービスのリモート管理の禁止
RemoteEnable - VPN Client サービスのリモート管理の許可
SecureGet - 使用するスマートカードの種類の ID の取得
SecureList - 使用できるスマートカードの種類の一覧の取得
SecureSelect - 使用するスマートカードの種類の選択
TrafficClient - 通信スループット測定ツールクライアントの実行
TrafficServer - 通信スループット測定ツールサーバーの実行
VersionGet - VPN Client サービスのバージョン情報の取得
それぞれのコマンドの使用方法については、"コマンド名 ?" と入力するとヘルプが表示されます。
コマンドは正常に終了しました。
□ VPN Client サービスのリモート管理の禁止
リモートから接続可能にしとくと怖いので・・
>RemoteDisable
□ インターネット接続の維持機能の無効化
>KeepDisable
>KeepGet
現在の状態 |無効
□ 新規仮想NIC の作成
>NicCreate tap1
>NicList
仮想 LAN カード名|tap1
状態 |有効 (使用可能)
MAC アドレス |5E46D7D49A45
バージョン |Version 4.44 Build 9807 (Japanese)
□ サーバ接続用VPNアカウント作成(設定)
クライアント管理の「アカウント」と、サーバ側で作成した「ユーザ」は別物
サーバ側で設定した「ユーザ」で接続するための「アカウント」を設定です
>AccountCreate USER1 /SERVER:192.168.56.101:44444 /HUB:VpnHub1 /USERNAME:HubUser1 /NICNAME:tap1
>AccountList
接続設定名 |USER1
状態 |オフライン
接続先 VPN サーバー|192.168.56.101:44444 (直接 TCP/IP 接続)
仮想 HUB 名 |VpnHub1
仮想 LAN カード名 |tap1
□ サーバ接続用VPNアカウントパスワード設定 & 自動起動設定
サーバ側で作成した「ユーザ」で接続するためのパスワードを設定します
また、vpnclient が起動したときに自動的に接続に行くようにも設定しときます
※ これやらないと毎回接続操作が必要です
>AccountPasswordSet USER1 /TYPE:standard
>AccountStartupSet USER1
>AccountGet USER1
接続設定名 |USER1
接続先 VPN Server のホスト名 |192.168.56.101
接続先 VPN Server のポート番号 |44444
接続先 VPN Server の仮想 HUB 名 |VpnHub1
経由するプロキシサーバーの種類 |直接 TCP/IP 接続
サーバー証明書の検証 |無効
接続に使用するデバイス名 |tap1
認証の種類 |標準パスワード認証
ユーザー名 |HubUser1
□ サーバ接続
設定できたので接続してみます
もし、「接続完了」にならなければ、ユーザ名、パスワード、HUB名、サーバアドレス、ポート等々を確認してみてくださいです
サーバ側のログ( /usr/local/vpnserver/server_log/vpn_yyyymmdd.log )も確認した方が良いかも
>AccountConnect USER1
>AccountList
接続設定名 |USER1
状態 |接続完了
接続先 VPN サーバー|192.168.56.101:44444 (直接 TCP/IP 接続)
仮想 HUB 名 |VpnHub1
仮想 LAN カード名 |tap1
□ 仮想NIC 確認
仮想NIC が作成されていることの確認
>Quit
# ip tap
vpn_tap1: tap
□ サービス停止
sudo /usr/local/vpnclient/vpnclient
□ UDPホールパンチングの無効化
設定ファイを直接編集
※ 必要ないのでパンチしないよーにしときます
sudo cp /usr/local/vpnclient/vpn_client.config /usr/local/vpnclient/vpn_client.config.org
# vi vpn_client.config
declare AccountDatabase
{
declare Account0
{
declare ClientOption
{
string AccountName USER1
bool NoUdpAcceleration true
SELinux 設定
SELinux 的に実行可能としておく
sudo chcon -t bin_t /usr/local/vpnclient/vpnclient
sudo chcon -t bin_t /usr/local/vpnclient/vpncmd
sudo chcon -t bin_t /usr/local/vpnclient/setting_ip.sh
□ サービス再起動(自動接続 & 自動IP付与)
サービスとして起動すると、ちゃんとIPアドレスを仮想NICに設定してくれることを確認
sudo systemctl start vpnclient
sudo systemctl status vpnclient
● vpnclient.service - SoftEther VPN Client
Loaded: loaded (/usr/lib/systemd/system/vpnclient.service; enabled; preset: disabled)
Drop-In: /usr/lib/systemd/system/service.d
└─10-timeout-abort.conf
Active: active (running) since Fri 2026-07-10 11:39:43 JST; 2s ago
Invocation: 1c54deaeb6184d2dba13128d86daaed2
Process: 146719 ExecStart=/usr/local/vpnclient/vpnclient start (code=exited, status=0/SUCCESS)
Process: 146724 ExecStartPost=/usr/local/vpnclient/setting_ip.sh (code=exited, status=0/SUCCESS)
Main PID: 146721 (vpnclient)
Tasks: 14 (limit: 629145)
Memory: 16.6M (peak: 22.5M)
CPU: 125ms
CGroup: /system.slice/vpnclient.service
├─146721 /usr/local/vpnclient/vpnclient execsvc
└─146722 /usr/local/vpnclient/vpnclient execsvc
7月 10 11:39:42 fedora systemd[1]: Starting vpnclient.service - SoftEther VPN Client...
7月 10 11:39:42 fedora vpnclient[146719]: The SoftEther VPN Client service has been started.
7月 10 11:39:43 fedora systemd[1]: Started vpnclient.service - SoftEther VPN Client.
## IPアドレスが設定されていること
ip addr show vpn_tap1
5: vpn_tap1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether 5e:46:d7:d4:9a:45 brd ff:ff:ff:ff:ff:ff
inet 10.10.10.90/24 scope global vpn_tap1
valid_lft forever preferred_lft forever
□ 自動接続ステータス確認(クライアント)
アカウントがサービス起動時に自動的に接続に行っていることも確認
sudo /usr/local/vpnclient/vpncmd localhost /CLIENT
>AccountStatusGet USER1
接続設定名 |USER1
セッション接続状態 |接続完了 (セッション確立済み)
サーバー名 |192.168.56.101
ポート番号 |TCP ポート 44444
>Quit
通信確認(クライアント -> サーバ)
ちゃんとサーバと接続されていることも確認
# ping -c 3 10.10.10.111
PING 10.10.10.111 (10.10.10.111) 56(84) bytes of data.
64 bytes from 10.10.10.111: icmp_seq=1 ttl=64 time=2.42 ms
64 bytes from 10.10.10.111: icmp_seq=2 ttl=64 time=1.02 ms
64 bytes from 10.10.10.111: icmp_seq=3 ttl=64 time=1.01 ms
--- 10.10.10.111 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.010/1.489/2.428/0.664 ms
以上
クライアント側構築も完了
再起動した時にも自動的につながることとか確認してみてくださいです