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アドレスも設定できてますね。
終了~~~
コメント