Mac
VPN
SoftEther

MacでSoftEther VPN Clientを使う

More than 1 year has passed since last update.

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.