SoftEther VPN ClientのMac版を使って、VPN経由でインターネットに接続するお話。
まだ、Beta版のためか、私の環境ではVPNの接続中にvpnclientのCPU使用率が常に100%付近をうろうろします。
SoftEtherVPNのGitHubリポジトリにあるPull requests #165を適用することで解決しました。
-
SoftEther VPN Server側は設定済みな前提
(私はVPS上でSecureNATを有効にして利用しています) -
Mavericks(10.9.2),Yosemite(10.10.1), El Capitanで動作確認
事前準備
-
XcodeのCommand Line Toolsをインストール
SoftEther VPN Clientをmakeするのに必要です。 -
TunTapをインストール
仮想LANカードの作成に必要になります。
Homebrew Caskにパッケージがあったので、それでインストールしました。
署名付きっぽいです。
$ brew cask install tuntap
SoftEther VPN Clientのインストール
SoftEther VPN プロジェクトから、SoftEther VPN Clientをダウンロードしてきます。
Mavericksで確認したバージョン
SoftEther VPN Client (Ver 4.06, Build 9432, beta)
softether-vpnclient-v4.06-9432-beta-2014.03.20-macos-x64-64bit.tar.gz (4.83 MB)
Yosemiteで確認したバージョン
SoftEther VPN Client (Ver 4.12, Build 9514, beta)
softether-vpnclient-v4.12-9514-beta-2014.11.17-macos-x64-64bit.tar.gz (5.15 MB)
作業としては、解凍してmakeするだけです。
$ tar zxvf softether-vpnclient-v4.06-9432-beta-2014.03.20-macos-x64-64bit.tar
$ cd ./vpnclient/
$ make
# 適当にディレクトリを移動します
$ cd ../
$ mv ./vpnclient/ /usr/local/
$ cd /usr/local/vpnclient/
SoftEther VPN Clientの起動
sudoで実行させないと、仮想LANカードが扱えません。
$ sudo ./vpnclient start
Password:
SoftEther VPN Client Service Started.
SoftEther VPN Clientの設定
CUIで行います。
- VPN Clientへの接続
$ ./vpncmd
vpncmd コマンド - SoftEther VPN コマンドライン管理ユーティリティ
SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
Version 4.06 Build 9432 (Japanese)
Compiled 2014/03/20 16:24:14 by yagi at pc25
Copyright (c) SoftEther VPN Project. All Rights Reserved.
vpncmd プログラムを使って以下のことができます。
1. VPN Server または VPN Bridge の管理
2. VPN Client の管理
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)
1 - 3 を選択: 2
接続先の VPN Client が動作しているコンピュータの IP アドレスまたはホスト名を指定してください。
何も入力せずに Enter を押すと、localhost (このコンピュータ) に接続します。
接続先のホスト名または IP アドレス:
VPN Client "localhost" に接続しました。
- 仮想LANカードの作成
VPN Client>NicCreate
NicCreate コマンド - 新規仮想 LAN カードの作成
仮想 LAN カードの名前: VPN
コマンドは正常に終了しました。
- 接続設定の作成
VPN Client>AccountCreate
AccountCreate コマンド - 新しい接続設定の作成
接続設定の名前: Example
接続先 VPN Server のホスト名とポート番号: example.com:443
接続先仮想 HUB 名: default
接続するユーザー名: exampleuser
使用する仮想 LAN カード名: VPN
コマンドは正常に終了しました。
後は、適宜設定を行ってください。
私の場合は、追加でパスワード認証の設定を行います。
VPN Client>AccountPasswordSet
AccountPasswordSet コマンド - 接続設定のユーザー認証の種類をパスワード認証に設定
接続設定の名前: Example
パスワードを入力してください。キャンセルするには Ctrl+D キーを押してください。
パスワード: ********
確認入力 : ********
standard または radius の指定: standard
コマンドは正常に終了しました。
CUIで設定するのが面倒であれば、Windows版のClientに含まれるSoftEther VPN クライアント接続マネージャ
をWineで動かせばGUIで設定できます。
(引数に/remote
が必要?)
SoftEther VPN Serverへの接続
- SoftEther VPN Serverへの接続
VPN Client>AccountConnect
AccountConnect コマンド - 接続設定を使用して VPN Server へ接続を開始
接続設定の名前: Example
コマンドは正常に終了しました。
- DHCPやルーティングの設定
ここからはvpncmdから抜けて、シェルでの作業。
各インタフェースやIPアドレス等は各自の環境に合わせてください。
# DHCPによるIPアドレスの取得
$ sudo ipconfig set tap0 DHCP
# IPアドレスの確認
$ ifconfig tap0
tap0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 00:ac:xx:xx:xx:xx
inet 192.168.30.10 netmask 0xffffff00 broadcast 192.168.30.255
open (pid 290)
# ルーティングテーブルの確認
$ netstat -nr
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.11.1 UGSc 15 0 en0
default 192.168.30.1 UGScI 0 0 tap0
...
# VPN Serverへの接続が切れないように静的ルーティングを追加
# (example.comのIPアドレスが203.0.113.100の場合)
$ sudo /sbin/route add -net 203.0.113.100 192.168.11.1 255.255.255.255
$ netstat -nr
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.11.1 UGSc 14 0 en0
default 192.168.30.1 UGScI 0 0 tap0
...
203.0.113.100/32 192.168.11.1 UGSc 1 0 en0
...
# 既存のデフォルトゲートウェイの削除
$ sudo route delete default 192.168.11.1
delete net default: gateway 192.168.11.1
# DHCPで設定されるデフォルトゲートウェイはうまく機能しないので、
# 手動でデフォルトゲートウェイを追加
$ sudo route add default 192.168.30.1
add net default: gateway 192.168.30.1
$ netstat -nr
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.30.1 UGSc 0 0 tap0
default 192.168.30.1 UGScI 1 0 tap0
...
203.0.113.100/32 192.168.11.1 UGSc 1 0 en0
...
後は、IPアドレスを確認するWebサイトで、IPアドレスが変わっているかどうかを確認してください。
SoftEther VPN Serverとの切断
ルーティングを戻して、vpncmd
で切断すればOKです。
# 追加したデフォルトゲートウェイを削除
$ sudo route delete default 192.168.30.1
delete net default: gateway 192.168.30.1
# 元々のデフォルトゲートウェイを追加
sudo route add default 192.168.11.1
add net default: gateway 192.168.11.1
# VPN Serverへの静的ルーティングを削除
$ sudo /sbin/route delete -net 203.0.113.100
delete net 203.0.113.100
$ netstat -nr
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.11.1 UGSc 2 0 en0
default 192.168.30.1 UGScI 4 0 tap0
...
# VPN Serverとの切断
$ ./vpncmd
vpncmd コマンド - SoftEther VPN コマンドライン管理ユーティリティ
SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
Version 4.06 Build 9432 (Japanese)
Compiled 2014/03/20 16:24:14 by yagi at pc25
Copyright (c) SoftEther VPN Project. All Rights Reserved.
vpncmd プログラムを使って以下のことができます。
1. VPN Server または VPN Bridge の管理
2. VPN Client の管理
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)
1 - 3 を選択: 2
接続先の VPN Client が動作しているコンピュータの IP アドレスまたはホスト名を指定してください。
何も入力せずに Enter を押すと、localhost (このコンピュータ) に接続します。
接続先のホスト名または IP アドレス:
VPN Client "localhost" に接続しました。
VPN Client>AccountDisconnect
AccountDisconnect コマンド - 接続中の接続設定の切断
接続設定の名前: Example
コマンドは正常に終了しました。
VPN Client>exit
# VPN Clientの停止
$ sudo ./vpnclient stop
Stopping SoftEther VPN Client Service...
SoftEther VPN Client Service Stopped.