[Peppermint] SoftEther VPN クライアントを設定して VPN 接続する方法

前回の記事の続きです。

SoftEther VPN クライアントのプロセスがすでに起動しているところから設定方法を解説していきます。

VPN クライアントの設定で何を設定するのか?

ココが非常に重要です。

具体的に、「何」を設定するのかを頭に入れてから設定していくことが、とてもとても大切です。ここでの具体的なものとは、

  1. 仮想 LAN カード設定
  2. SoftEther VPN サーバへの接続設定
  3. VPN 接続するユーザーとそのパスワードの設定

これら 3 つを「VPN クライアント側 PC = ペパーミント」に設定することです。「自分が今なにをしようとしているのか?」 これを意識しながら以下を行っていってください。

また順序性も重要です。上記 3 つを順番通りに実行してください。

【1】仮想 LAN カードの設定(作成)

まず仮想 LAN カードを作成します。SoftEther VPN クライアント上の仮想 LAN カードが、SoftEther VPN サーバ上で動いている仮想 HUB に接続することになります。

仮想 HUB に接続するのが仮想 LAN カードです。だから仮想 LAN カードを作らないと始まらないわけです。

vpnclient のプロセスが起動していることを確認して vpncmd を使ってコマンド操作で仮想 LAN カードを作成します。

ps -ef | grep vpn
root 15696 1 0 22:43 ? 00:00:00 /usr/local/vpnclient/vpnclient execsvc
root 15697 15696 2 22:43 ? 00:00:00 /usr/local/vpnclient/vpnclient execsvc
nobi 15705 3304 0 22:43 pts/3 00:00:00 grep --colour=auto vpn
$ sudo ./vpncmd
vpncmd command - SoftEther VPN Command Line Management Utility
SoftEther VPN Command Line Management Utility (vpncmd command)
Version 4.22 Build 9634 (English)
Compiled 2016/11/27 15:23:56 by yagi at pc30
Copyright (c) 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

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: localhost

Connected to VPN Client "localhost".

VPN Client>

ここまでが準備段階。ここから仮想 LAN カードを作成します。NicCreate というコマンドを使用します。

VPN Client>NicCreate
NicCreate command - Create New Virtual Network Adapter
Virtual Network Adapter Name: to_hgsnkn

The command completed successfully.

VPN Client>NicList
NicList command - Get List of Virtual Network Adapters
Item |Value
----------------------------+-----------------------------------
Virtual Network Adapter Name|to_hgsnkn
Status |Enabled
MAC Address |00AC8E962D6F
Version |Version 4.22 Build 9634 (English)
The command completed successfully.

VPN Client>

仮想 LAN カードを作るにあたって名前をつけてあげる必要があります。上記では to_hgsnkn としました。仮想 LAN カードが作成できたら NicList コマンドで確認しています。

【重要事項】仮想 LAN カードの名前を短くする

あとでこの仮想 LAN カードを起動するとき、vpn_ という 4 文字が付加されて vpn_to_hgsnkn というインターフェイス名として扱われます。vpn_ の 4 文字が付加された時のインタフェース名が 17 文字だと「長すぎてダメ」となりアウトでした。17 – 4 = 13 だから NicCreate で仮想 LAN カード名を指定するとき、13 文字あったらアウトです。細かく調べてないので「何文字までならオーケー」はわかりませんが、あとで「長すぎてダメ」と怒られた場合は、ここで名づけた仮想 LAN カード名の文字数が多すぎたと理解すれば良いでしょう。たぶんこれは Linux or ペパーミントの制限なんじゃないかと思います。

【2】SoftEther VPN サーバへの接続設定

次が SoftEther VPN サーバへの接続設定です。AccountCreate コマンドを使用します。

VPN Client>AccountCreate
AccountCreate command - Create New VPN Connection Setting
Name of VPN Connection Setting: connect_to_hgsnkn

Destination VPN Server Host Name and Port Number: ranranran.softether.net:443

Destination Virtual Hub Name: Hgsnkn_VPN_HUB1

Connecting User Name: vpnuser

Used Virtual Network Adapter Name: to_hgsnkn

The command completed successfully.

VPN Client>AccountList
AccountList command - Get List of VPN Connection Settings
Item |Value
----------------------------+---------------------------------------------------
VPN Connection Setting Name |connect_to_hgsnkn
Status |Offline
VPN Server Hostname |ranranran.softether.net:443 (Direct TCP/IP Connection)
Virtual Hub |Hgsnkn_VPN_HUB1
Virtual Network Adapter Name|to_hgsnkn
The command completed successfully.

VPN Client>

上記で設定しているものは、

  • この接続設定の名前(なんでも良い)
  • SoftEther VPN サーバの FQDN とポート番号
  • SoftEther VPN サーバの仮想 HUB 名
  • SoftEther VPN サーバに接続するユーザー名
  • SoftEther VPN サーバの仮想 HUB に接続する SoftEther VPN クライアントの仮想 LAN カード名

です。

SoftEther VPN サーバの FQDN は、ダイナミック DNS のホスト名になることが多いでしょう。

最後に AccountList コマンドで内容の確認をしています。

【3】VPN 接続するユーザー名とパスワードの設定

SoftEther VPN サーバに VPN 接続するユーザ名とパスワードを、SoftEther VPN クライアント側に作ります。

AccountUsernameSet コマンドと AccountPasswordSet コマンドを使用します。

VPN Client>AccountUsernameSet
AccountUsernameSet command - Set User Name of User to Use Connection of VPN Connection Setting
Name of VPN Connection Setting: connect_to_hgsnkn

Connecting User Name: vpnuser

The command completed successfully.

VPN Client>AccountPasswordSet
AccountPasswordSet command - Set User Authentication Type of VPN Connection Setting to Password Authentication
Name of VPN Connection Setting: connect_to_hgsnkn

Please enter the password. To cancel press the Ctrl+D key.

Password: *******
Confirm input: *******


Specify standard or radius: standard

The command completed successfully.

VPN Client>

ここまでの設定内容をまとめて確認するために AccountGet コマンドを実行します。

VPN Client>AccountGet
AccountGet command - Get Setting of VPN Connection Setting 
Name of VPN Connection Setting: connect_to_hgsnkn

Item |Value
-----------------------------------------------------+--------------------------------
VPN Connection Setting Name |connect_to_hgsnkn
Destination VPN Server Host Name |ranranran.softether.net
Destination VPN Server Port Number |443
Destination VPN Server Virtual Hub Name |Hgsnkn_VPN_HUB1
Proxy Server Type |Direct TCP/IP Connection
Verify Server Certificate |Disable
Device Name Used for Connection |to_hgsnkn
Authentication Type |Standard Password Authentication
User Name |vpnuser
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 Client>

ざっと目を通しておきましょう。

VPN 接続してみる!

それでは SoftEther VPN サーバへ接続してみましょう。AccountConnect コマンドを使用します。

VPN Client>AccountConnect
AccountConnect command - Start Connection to VPN Server using VPN Connection Setting
Name of VPN Connection Setting: connect_to_hgsnkn

The command completed successfully.

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

VPN Client>

AccountList の Status 欄を見ると Connected となっていることから、AccountConnect コマンドはうまく実行できたように見えます。しかしこの段階ではまだ VPN 接続を使った通信まではできません。

IP アドレス、ルーティングテーブルを確認します。

$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:21:70:16:fb:1a 
 UP BROADCAST MULTICAST MTU:1500 Metric:1
 RX packets:0 errors:0 dropped:0 overruns:0 frame:0
 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:1000 
 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
 Interrupt:21 Memory:fe9e0000-fea00000 

eth1 Link encap:Ethernet HWaddr a4:71:74:69:7d:42 
 inet6 addr: fe80::a671:74ff:fe69:7d42/64 Scope:Link
 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
 RX packets:56024 errors:0 dropped:6171 overruns:0 frame:0
 TX packets:28622 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:1000 
 RX bytes:61578864 (61.5 MB) TX bytes:2307480 (2.3 MB)

lo Link encap:Local Loopback 
 inet addr:127.0.0.1 Mask:255.0.0.0
 inet6 addr: ::1/128 Scope:Host
 UP LOOPBACK RUNNING MTU:65536 Metric:1
 RX packets:8327 errors:0 dropped:0 overruns:0 frame:0
 TX packets:8327 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:0 
 RX bytes:1057394 (1.0 MB) TX bytes:1057394 (1.0 MB)

vpn_to_hgsnkn Link encap:Ethernet HWaddr 00:ac:8e:96:2d:6f 
 inet6 addr: fe80::2ac:8eff:fe96:2d6f/64 Scope:Link
 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
 RX packets:40 errors:0 dropped:0 overruns:0 frame:0
 TX packets:35 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:500 
 RX bytes:6613 (6.6 KB) TX bytes:2898 (2.8 KB)

wlan0 Link encap:Ethernet HWaddr 34:76:c5:14:fd:2e 
 inet addr:192.168.0.10 Bcast:192.168.0.255 Mask:255.255.255.0
 inet6 addr: fe80::3676:c5ff:fe14:fd2e/64 Scope:Link
 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
 RX packets:6849150 errors:0 dropped:0 overruns:0 frame:0
 TX packets:4459976 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:1000 
 RX bytes:1072715123 (1.0 GB) TX bytes:466021176 (466.0 MB)

$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
$

ifconfig コマンドの実行結果に

vpn_to_hgsnkn

というインタフェースが確認できます。

これは先ほど作成した仮想 LAN カード to_hgsnkn です。vpn_ という文字が付加され vpn_to_hgsnkn として扱われています。

vpn_to_hgsnkn には IPv4 の IP アドレスが設定されていません。だからまだ通信できる状態にはなっていないわけです。

netstat コマンドでルーティングテーブルを確認しても、一連の VPN クライアント設定を行う前と変化がありません。このことからも実際の VPN 通信ができていないことがわかります。

これを解消するためには vpn_to_hgsnkn に IPv4 のアドレスが設定される必要があります。今回は DHCP で IP を設定すべく dhclient コマンドを実行します。

$ sudo dhclient vpn_to_hgsnkn
$ echo $?
0
$ ifconfig vpn_to_hgsnkn
vpn_to_hgsnkn Link encap:Ethernet HWaddr 00:ac:8e:96:2d:6f 
 inet addr:10.1.0.11 Bcast:10.1.0.255 Mask:255.255.255.0
 inet6 addr: fe80::2ac:8eff:fe96:2d6f/64 Scope:Link
 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
 RX packets:361 errors:0 dropped:0 overruns:0 frame:0
 TX packets:297 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:500 
 RX bytes:54294 (54.2 KB) TX bytes:25400 (25.4 KB)

$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
10.1.0.0 0.0.0.0 255.255.255.0 U 0 0 0 vpn_to_hgsnkn
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
$

無事 dhclient コマンドで vpn_to_hgsnkn に IPv4 のアドレス 10.1.0.11 が割り当てられました。このアドレスは VPN サーバ側にある DHCP サーバから受け取ったものです。

VPN トンネルの中を DHCP パケットが正しくやりとりされた結果です。

VPN サーバ側に複数のネットワークがある場合のルーティング設定

netstat -rn の実行結果を確認すると 10.1.0.0/24 のネットワークあてのパケットは vpn_to_hgsnkn インタフェースが使われます。

ここで、VPN サーバ側に 10.1.0.0/24 以外のネットワークがある場合、VPN クライアント (今回の場合はペパーミント) にスタティックルートを追加してやる必要があります。

僕が運営している VPN サーバ側には 10.1.0.0/24 以外に 172.16.1.0/24 というネットワークがあるので、これをスタティックルートとして追加します。

$ sudo route add -net 172.16.1.0 netmask 255.255.255.0 gw 10.1.0.1
$ echo $?
0
$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
10.1.0.0 0.0.0.0 255.255.255.0 U 0 0 0 vpn_to_hgsnkn
172.16.1.0 10.1.0.1 255.255.255.0 UG 0 0 0 vpn_to_hgsnkn
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
$

ルーティングテーブルに 172.16.1.0/24 宛のルートが追加されました。ping も以下のように通ります。

$ ping 172.16.1.1 -c 5
PING 172.16.1.1 (172.16.1.1) 56(84) bytes of data.
64 bytes from 172.16.1.1: icmp_seq=1 ttl=255 time=137 ms
64 bytes from 172.16.1.1: icmp_seq=2 ttl=255 time=62.0 ms
64 bytes from 172.16.1.1: icmp_seq=3 ttl=255 time=61.2 ms
64 bytes from 172.16.1.1: icmp_seq=4 ttl=255 time=62.7 ms
64 bytes from 172.16.1.1: icmp_seq=5 ttl=255 time=65.1 ms

--- 172.16.1.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4001ms
rtt min/avg/max/mdev = 61.255/77.730/137.501/29.915 ms
$

いい感じです。

自動起動関連の設定

最後に自動起動関連です。

VPN クライアントのプロセス (= /usr/local/vpnclient/vpnclient) を主導で起動させた時に、今回設定した VPN クライアントの設定が自動実行されるように設定しておきます。

VPN Clietn>AccountStartupSet
AccountStartupSet command - Set VPN Connection Setting as Startup Connection
Name of VPN Connection Setting: connect_to_hgsnkn

The command completed successfully.

VPN Client>exit
$

これだけだと仮想 LAN カードが起動しないので /etc/network/interface に

allow-hotplug vpn_to_hgsnkn
iface vpn_to_hgsnkn inet dhcp

の 2 行を追記します。 cat すると以下のような感じ

$ cd /etc/network
$ cat interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

allow-hotplug vpn_to_hgsnkn
iface vpn_to_hgsnkn inet dhcp
$

これで VPN クライアントのプロセスを手動で起動させた時に vpn_to_hgsnkn が DHCP で IP アドレスを設定するようになります。

しかしこれだけだとスタティックルートは設定されないので、/etc/network/if-up.d ディレクトリにstatic-routes-for-vpn のようなファイルを作成して実行可能にしておきます。

$ cd /etc/network/if-up.d
$ cat static-routes-for-vpn 
#!/bin/sh
/sbin/route add -net 172.16.1.0 netmask 255.255.255.0 gw 10.1.0.1 dev vpn_to_hgsnkn
$ sudo chmod 755 static-routes-for-vpn
$ ls -l static-routes-for-vpn
-rwxr-xr-x 1 root root 94 5月 9 01:15 static-routes-for-vpn
$

「VPN クライアントのプロセスを手動で起動させた時に」と書いたのは、/usr/local/vpnclient/vpnclient が OS 起動時に自動で実行される設定を今回考えていないからです。いつか時間があるときに調べてブログにアップするかもしれません。

以上のことから、ここまでの自動起動関連の設定がちゃんと機能するかどうかの確認方法としては、ペパーミントを再起動した上で手動で

$ sudo /usr/local/vpnclient/vpnclient start

を実行して、

$ ps -ef | grep vpn
$ ifconfig vpn_to_hgsnkn
$ netstat -rn

の実行結果が想定通りになったので良しとしています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください