Ubuntu(Linux)でSoftEther VPNクライアント構築 詳細メモ

スポンサーリンク

VPN(Virtual Private Network)は、仮想的な通信トンネルを構成したプライベートネットワークのこと。

通信内容を暗号化しつつ、仮想的にネットワークを接続できる技術です。VPNを使って通信の安全性を高めたり、自宅にVPNサーバーを設置することで、外にいるのに家のネットワークにつながることができたりします。

本記事は、別のコンピュータに構築したSoftEther VPNサーバーに対して、Ubuntuコンピュータ内にVPN Clientを構築して接続するまでのメモです。

VPNサーバー構築の記事は別記事です。

なお、本記事は主に自分用の備忘録を兼ねているというかそれが主目的なので、いろいろと記載が足らないことがありますがご了承ください。

使用OSはUbuntu 24.04 LTSです。

スポンサーリンク

インストールする

公式サイトから、Linux用のパッケージを落としてきます。x86-64用やARM用などはマシンに合わせてください。

wget https://jp.softether-download.com/files/softether/v4.43-9799-beta-2023.08.31-tree/Linux/SoftEther_VPN_Client/64bit_-_Intel_x64_or_AMD64/softether-vpnclient-v4.43-9799-beta-2023.08.31-linux-x64-64bit.tar.gz
tar xzvf softether*tar.gz
cd vpnclient/
sudo apt install -y make gcc
make
cd ../
sudo mv vpnclient/ /usr/local/
cd /usr/local
sudo chown -R root:root vpnclient
cd vpnclient/
sudo chmod 600 *
sudo chmod 700 vpncmd
sudo chmod 700 vpnclient

サービス化

VPN Clientをサービスにします。

sudo vi /etc/systemd/system/vpnclient.service

下記の内容にして保存します。

[Unit]
Description=SoftEther VPN Client
After=network.target network-online.target

[Service]
ExecStart=/usr/local/vpnclient/vpnclient start
ExecStop=/usr/local/vpnclient/vpnclient stop
WorkingDirectory=/usr/local/vpnclient/
#ExecStartPost=dhclient vpn_vpn
Type=forking
RestartSec=3s

[Install]
WantedBy=multi-user.target

保存したら、下記コマンドで有効化します。

sudo systemctl daemon-reload
sudo systemctl start vpnclient
sudo systemctl enable vpnclient

クライアント設定

vpncmdが、設定用のプログラムです。

sudo /usr/local/vpncmd

こんな感じになります。

ctrluser@xxx:/usr/local/vpnclient$ sudo ./vpncmd
vpncmd command - SoftEther VPN Command Line Management Utility
SoftEther VPN Command Line Management Utility (vpncmd command)
Version 4.43 Build 9799   (English)
Compiled 2023/08/31 10:50:49 by buildsan at crosswin with OpenSSL 3.0.9
Copyright (c) 2012-2023 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:

2を入力してエンター

Select 1, 2 or 3: 2

Specify the host name or IP address of the computer that the destination VPN Client is operating on.
If nothing is input and Enter is pressed, connection will be made to localhost (this computer).
Hostname of IP Address of Destination:

Clientへの接続先ですが、自分自身なので、空白でエンター

Hostname of IP Address of Destination:

Connected to VPN Client "localhost".

VPN Client>

ここから、プロンプトがいろいろと記入できますが、いっぱいあるので詳細は公式マニュアル参照。

基本的な設定の流れ

ここからはやることは人によりますが、一番一般的な、仮想Nicを作り、接続設定を作って、接続するという流れをやっていきます。

Nicはなにもないことを確認します。

VPN Client>NicList
NicList command - Get List of Virtual Network Adapters
Item|Value
----+-----
The command completed successfully.

vNICを作成します。名前は何でもいいです。名前は「vNIC-XXX」にします。

NicCreate vNIC-XXX

接続アカウントを作ります。接続名は「Connect-XXX」にします。

AccountCreate Connect-XXX /SERVER:xxx.softether.net:443 /HUB:サーバー側のHUBの名前 /USERNAME:サーバー側のユーザーネーム /NICNAME:vNIC-XXX

パスワードをセットします。

AccountPasswordSet Connect-XXX /PASSWORD:パスワード /TYPE:standard

接続します。

AccountConnect Connect-XXX

アカウントリストを確認します。

AccountList

こんな感じになります。

VPN Client>AccountList
AccountList command - Get List of VPN Connection Settings
Item                        |Value
----------------------------+-------------------------------------------------
VPN Connection Setting Name |Connect-XXX
Status                      |Connected
VPN Server Hostname         |xxx.softether.net:443 (Direct TCP/IP Connection)
Virtual Hub                 |XXX-HUB
Virtual Network Adapter Name|vNIC-XXX
The command completed successfully.

StatusがConnectedになってるので、成功です。
一応状況確認します。

AccountGet Connect-XXX

このようになります。

VPN Client>AccountGet Connect-XXX
AccountGet command - Get Setting of VPN Connection Setting
Item                                                 |Value
-----------------------------------------------------+--------------------------------
VPN Connection Setting Name                          |Connect-XXX
Destination VPN Server Host Name                     |xxx.softether.net
Destination VPN Server Port Number                   |443
Destination VPN Server Virtual Hub Name              |XXX-HUB
Proxy Server Type                                    |Direct TCP/IP Connection
Verify Server Certificate                            |Disable
Device Name Used for Connection                      |vNIC-XXX
Authentication Type                                  |Standard Password Authentication
User Name                                            |cloud(自分で決めたもの)
Number of TCP Connections to Use in VPN Communication|1
Interval between Establishing Each TCP Connection    |1
Connection Life of Each TCP Connection               |Infinite
Use Half Duplex Mode                                 |Disable
Encryption by SSL                                    |Enable
Data Compression                                     |Disable
Connect by Bridge / Router Mode                      |Disable
Connect by Monitoring Mode                           |Disable
No Adjustment for Routing Table                      |Disable
Do not Use QoS Control Function                      |Disable
The command completed successfully.

次に、これをスタートアップ設定にします。こうすることでコンピュータ再起動後も自動でVPNが張られます。

AccountStartupSet Connect-XXX

設定は終わったので、vpncmdを終了します。

quit

IPアドレス設定

上記で、接続は完了してますが、IPアドレスがちゃんと振られていないことがあります(私の場合、IPv6しか振られてなかった)。

IPアドレスの状況を確認します。

ip a

このようになります。

~~~
58: vpn_vnic-xxx: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet6 240b:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:1c29/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 2592000sec preferred_lft 604800sec
    inet6 fe80::5cb8:63ff:fe7d:XXXX/64 scope link
       valid_lft forever preferred_lft forever
~~~

このようにさっき作ったvNICがネットワークインターフェイスとして認識しています。「vpn_~~~」という名前ですが、長かったら丸められます。

ここから、netplanを使ってIP設定します。なお、netplanのコンフィグの状況は人によりますので注意。

sudo vi /etc/netplan/50-cloud-init.yaml

50-cloud-initを勝手にいじっても問題ないですが、一応こいつはリネームしておいて、99-config.yamlを作っておきます。

sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/99-config.yaml
sudo mv /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak
network:
    version: 2
    ethernets:
        ens3:
            dhcp4: false
            match:
                macaddress: XX:XX:XX:0a:27:67
            mtu: 1500
            set-name: ens3
            addresses: [XXX.XXX.72.39/24]
            routes:
                - to: default
                  via: XXX.XXX.72.1
            nameservers:
                addresses: [8.8.8.8,1.1.1.1]
        vpn_vnic-xxx:
         optional: true
         dhcp4: false
         dhcp6: true
         addresses:
         - 192.168.100.252/24
         nameservers:
           addresses:
           - 192.168.100.1
           search: []

こんな感じでvNICの設定を足します。

sudo netplan apply

で適用します。失敗したらネットワーク切れるのでご注意。

ip a
~~~
58: vpn_vnic-xxx: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.252/24 brd 192.168.100.255 scope global vpn_vnic-yokoha
       valid_lft forever preferred_lft forever
    inet6 240b:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:1c29/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 2592000sec preferred_lft 604800sec
    inet6 fe80::5cb8:63ff:fe7d:XXXX/64 scope link
       valid_lft forever preferred_lft forever
~~~

ちゃんとIPv4アドレスも設定できてますね。

終了~~~

コメント

タイトルとURLをコピーしました