18
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Fedora】SoftEther Client 構築手順【L2TP/IPsec】

18
Last updated at Posted at 2017-06-09

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アドレスを設定するシェル

/usr/local/vpnclient/setting_ip.sh
#!/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アドレスを付与する

/usr/lib/systemd/system/vpnclient.service
[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

以上
クライアント側構築も完了
再起動した時にも自動的につながることとか確認してみてくださいです

18
24
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?