SoftEther VPN クライアントの仮想 LAN カードに固定 IP をコマンド操作で設定する方法
はじめに
本投稿での設定は、VPN クライアントの設定というよりも、OS (Ubuntu) の設定といったほうが適切かもしれない。
前回の記事では、VPN クライアントとしての設定を解説した。その中で仮想 LAN カードの作成が出てきたが、IP の設定については言及しなかった。別投稿としたほうが作業上の区切りが良いと思ったからだ。
仮想 LAN カードには IP を設定する必要がある。それが DHCP サーバーからもらってくる IP であれ、固定設定する IP であれ、とにかく設定しないことには VPN 通信がうまくいかないことは確実である。
今回、VPN クライアントは、さくらの VPS にある Ubuntu で稼働しているが、仮想 LAN カードには固定 IP を設定する。そしてその固定 IP は、VPN サーバーがある我が家のネットワークセグメントである 10.1.0.0/24 のアドレスを割り当てることにする。
参考記事:[Linux Lite] SoftEther VPN クライアントを自動起動させる設定
/etc/netplan ディレクトリに YAML ファイルを作る
まず、99-config.yaml という空ファイルを touch コマンドで作る。
$ cd /etc/netplan $ sudo touch 99-config.yaml $ ls -l total 4 -rw-r--r-- 1 root root 261 Jan 10 23:56 01-netcfg.yaml -rw-r--r-- 1 root root 0 Jan 16 20:21 99-config.yaml $
ぶっちゃけファイル名は 99-config.yaml でなくても機能するが、お作法的にはこのファイル名が好ましいようです。
vi でファイルに必要事項を書いて、完成したファイルの中身が以下である。
$ cat 99-config.yaml
network:
version: 2
ethernets:
vpn_hoge_vnic:
addresses: [10.1.0.211/24]
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
routes:
- to: 172.16.1.0/24
via: 10.1.0.1
$
4 行目の vpn_hoge_vnic に注目。これは仮想 LAN カードであるが、仮想 LAN カードは前回の記事で hoge_vnic という名前で作りました。
が、vpn_ という頭文字を付加しています。これは Linux の仕様かなんかだと思いますが、とにかくこのようにしてやる必要があります。
あと、
routes: - to: 172.16.1.0/24 via: 10.1.0.1
のところは、スタティックルートを書いています。172.16.1.0/24 は我が家にあるセグメントの 1 つです。VPN クライアントからこのセグメントに通信したいことがあるのでスタティックルートとして設定しています。とくにこういう要件がなければ書かなくて良いです。
この設定ファイルができあがったら
$ sudo netplan apply
を実行します。エラーなくコマンドが終了すればオーケーです。
ip コマンドで vpn_hoge_vnic に固定 IP が設定できたかを確認します。
$ ip address show vpn_hoge_vnic 6: vpn_hoge_vnic: mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000 link/ether 5e:56:41:76:d5:51 brd ff:ff:ff:ff:ff:ff inet 10.1.0.211/24 brd 10.1.0.255 scope global vpn_hgsnkn_vnic valid_lft forever preferred_lft forever inet6 fe80::5c56:41ff:fe76:d551/64 scope link valid_lft forever preferred_lft forever $ ping -c 3 10.1.0.211 PING 10.1.0.211 (10.1.0.211) 56(84) bytes of data. 64 bytes from 10.1.0.211: icmp_seq=1 ttl=64 time=0.025 ms 64 bytes from 10.1.0.211: icmp_seq=2 ttl=64 time=0.048 ms 64 bytes from 10.1.0.211: icmp_seq=3 ttl=64 time=0.049 ms --- 10.1.0.211 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2056ms rtt min/avg/max/mdev = 0.025/0.040/0.049/0.011 ms $
10.1.0.211 が設定されていること、その 10.1.0.211 へ自分自身で ping を打って疎通が取れることが確認できました。
VPN 接続できることを確認
ここまでの作業で VPN クライアントの設定がすべて終わりです。
VPN クライアントを起動すれば無事 VPN セッションが張れるはず。そこまで確認するために AccountConnect コマンドを使います。
VPN Client>AccountConnect AccountConnect command - Start Connection to VPN Server using VPN Connection Setting Name of VPN Connection Setting: vpn_to_hoge The command completed successfully. VPN Client>
接続状況を確認するためには AccountStatusGet コマンドを使います。
VPN Client>AccountStatusGet AccountStatusGet command - Get Current VPN Connection Setting Status Name of VPN Connection Setting: vpn_to_hoge Item |Value ------------------------------------------+-------------------------------------------------------- VPN Connection Setting Name |vpn_to_hoge Session Status |Connection Completed (Session Established) VLAN ID |- Server Name |hoge.softether.net Port Number |TCP Port 5555 Server Product Name |SoftEther VPN Server (64 bit) Server Version |4.34 Server Build |Build 9745 Connection Started at |2021-01-16 (Sat) 20:55:44 First Session has been Established since |2021-01-16 (Sat) 20:55:44 Current Session has been Established since|2021-01-16 (Sat) 20:55:44 Number of Established Sessions |1 Times Half Duplex TCP Connection Mode |No (Full Duplex Mode) VoIP / QoS Function |Enabled Number of TCP Connections |2 Maximum Number of TCP Connections |2 Encryption |Enabled (Algorithm: TLS_AES_256_GCM_SHA384) Use of Compression |No (No Compression) Physical Underlay Protocol |Standard TCP/IP (IPv4) |IPv4 UDPAccel_Ver=2 ChachaPoly_OpenSSL UDPAccel_MSS=1309 UDP Acceleration is Supported |Yes UDP Acceleration is Active |Yes Session Name |SID-NOBI-2 Connection Name |CID-3 Session Key (160 bit) |83ADBD1B7942CC06B09556277E73F5F4F719BC00 Bridge / Router Mode |No Monitoring Mode |No Outgoing Data Size |10,112 bytes Incoming Data Size |7,199 bytes Outgoing Unicast Packets |37 packets Outgoing Unicast Total Size |2,610 bytes Outgoing Broadcast Packets |21 packets Outgoing Broadcast Total Size |1,418 bytes Incoming Unicast Packets |22 packets Incoming Unicast Total Size |1,408 bytes Incoming Broadcast Packets |0 packets Incoming Broadcast Total Size |0 bytes The command completed successfully. VPN Client>
たとえば Outgoing Data Size とかを見るとすでに何らかのデータが流れていることがわかります。
適当にどこかに ping 打つ (以下 ↓ 参照) とかしながら何回か AccountStatusGet を叩いて、通信量が増えていくなら正常と考えて良いでしょう。
VPN Client> から抜けます。
VPN Client>exit
$
VPN クライアントから ping を打つ例
今回は以下のように ping を打ちました。
$ ping -c 3 10.1.0.1
PING 10.1.0.1 (10.1.0.1) 56(84) bytes of data.
64 bytes from 10.1.0.1: icmp_seq=1 ttl=255 time=23.8 ms
64 bytes from 10.1.0.1: icmp_seq=2 ttl=255 time=26.4 ms
64 bytes from 10.1.0.1: icmp_seq=3 ttl=255 time=23.7 ms
--- 10.1.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 23.735/24.626/26.391/1.248 ms
$
VPN クライアントの仮想 LAN カードには 10.1.0.211という IP を設定しました。そこから同じセグメントである 10.1.0.1 に ping を打った例です。
VPN クライアントは、さくらの VPS 上にある Ubuntu で稼働しています。ping を打った宛先である 10.1.0.1 は我が家にあるヤマハルータ RTX1100 に設定してある IP です。
ping で疎通が取れたということは、VPN セッションが正常に張れており、その VPN セッションを使って ping のパケットが行って返ってきたことを意味します。
つまり、これで想定通りに動いていることが確認できたというわけです。
ついでにスタティックルートを書いた 172.16.1.0/24 への ping も確認しておいた。
$ ping -c 3 172.16.1.2
PING 172.16.1.2 (172.16.1.2) 56(84) bytes of data.
64 bytes from 172.16.1.2: icmp_seq=1 ttl=63 time=25.2 ms
64 bytes from 172.16.1.2: icmp_seq=2 ttl=63 time=24.5 ms
64 bytes from 172.16.1.2: icmp_seq=3 ttl=63 time=24.1 ms
--- 172.16.1.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 24.089/24.598/25.186/0.451 ms
$
おまけ
本投稿では仮想 LAN カードに固定 IP を設定する方法について記載したが、普通のインターフェイス (物理 LAN ポート) に固定 IP を設定する時にもこのやり方は応用できる。Ubuntu Server 20.04 で同じやり方が使えることを確認した。