RaspberryPi[7] SoftEther Client on Raspberry Pi

Clientのインストール

Raspberry PiにSoftEtherのクライアントを構築してみました。サーバーはさくらネットのVPSサーバー上にUbuntu で構築してあります。

RasPiもLinuxなので、LinuxのSoftEther Clientをインストールすればいいことになります。

https://ja.softether.org/5-download ここから、Linux版のARM EABI(32bitまたは62bit)をダウンロードします。コンソールからダウンロードするよりも、GUI画面でラズパイを立ち上げて、ダウンロードしたほうが楽ですね。私は、Windowsのリモートデスクトップでラズパイに繋いでダウンロードしました。一旦ダウンロードしてしまえば、あとは、Teraterm でssh接続して環境を作っていくのがいいでしょう。

ダウンロードフォルダにダウンロードされるので、ssh でつないだ後に、そこまで移動します。多分、/home/pi/Downloadの下にファイルがあると思います。

sudo tar zxfv softether-vpnclient-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.tar.gz

として展開します。展開した vpnclient に入って、make すればコンパイルできます。

もしエラーが出るようなら、GUI環境でソフトのインストールをした方が楽でいいと思います。

権限設定は以下のようにしておきます。

chmod 600 *
chmod 700 vpncmd
chmod 700 vpnclient

起動は

sudo ./vpnclilent start

停止は

sudo ./vpnclient stop です。

Clientの設定

クライアントはできたので、ここからクライアントの設定をします。これは、クライアントに接続して行うので、クライアントを起動しておく(vpnclient start としておく)必要があります。その状態で、

sudo ./vpncmd と打ち込むと、

1.VPN Server または VPN Bridgeの管理

2.VPN Clientの管理

3.VPN Tools コマンドの使用(証明書作成や通信速度設定)

とでるので、「2.VPN Clientの管理」 を選択します。すると、ホスト名を聞いて来るので、そのまま、リターンすると、localhost となります。次にHUB名を聞いて来るので、サーバー管理モードで管理するのでそのままリターンします。HUB毎に管理するときは、管理対象のHUB名を入れます。

すると、

VPN Client> とプロンプトが出たらClient管理ができるようになります。 下記のコマンドリファレンスを見てもらうと何ができるか分かります。

VPN Client の管理コマンドリファレンス

次に設定をしていきます。

1.まずは仮想LANカードいわゆる nic を作ります。

書式:NicCreate [name]

name仮想 LAN カードの名前を指定します。
パラメータ引数の一覧

VPN Client>NicCreate nic (nicの名称を入れます。ここでは、例として、nic としておきます。なぜか、あとで、vpn_が前につくので、vpn_nic になってしまいます。)

nic には好き名前でいいと思いますが、4文字以内が無難と書いてあるサイトもあるのでそうしておいた方が良いかもしれません。

2.新しい接続設定の作成

書式: AccountCreate [name] [/SERVER:hostname:port] [/HUB:hubname] [/USERNAME:username] [/NICNAME:nicname]

name作成する接続設定の名前を指定します。
/SERVER[ホスト名:ポート番号] の形式で、接続先の VPN Server のホスト名と、ポート番号を指定します。IP アドレスで指定することもできます。
/HUB接続先の VPN Server 内の仮想 HUB を指定します。
/USERNAME接続先の VPN Server に接続する際の、ユーザー認証で使用するユーザー名を指定します。(ユーザー管理(登録)はwindowsのアプリでやった方が楽です。)
/NICNAME接続に使用する仮想 LAN カード名を指定します。
パラメータ引数の一覧

VPN Client>AccountCreate setuzokusaki /SERVER:www.sample.com:443 /HUB:HUVname /USERNAME:username /NICNAME:nic

3.仮想LANカードの有効化。既存の仮想LAN カードが無効化されている場合は、有効化します。

書式:NicEnable [name]

name仮想 LAN カードの名前を指定します。
パラメータ引数の一覧

VPN Client>NicEnable nic

4.接続設定の接続に使用するユーザー名の設定

書式:AccountUsernameSet [name] [/USERNAME:username]

name設定を変更する接続設定の名前を指定します。
/USERNAME接続設定が VPN Server に接続する際の、ユーザー認証に必要なユーザー名を指定します。
パラメータ引数の一覧

VPN Client>AccountUsernameSet setuzokumei /USERNAME: username

5.接続設定のユーザー認証の種類をパスワード認証に設定

書式:AccountPasswordSet [name] [/PASSWORD:password] [/TYPE:standard|radius]

name設定を変更する接続設定の名前を指定します。
/PASSWORDパスワード認証で使用するパスワードを指定します。指定しない場合は、パスワードを入力するためのプロンプトが表示されます。
/TYPEパスワード認証の種類として、"standard" (標準パスワード認証) または "radius" (RADIUS または NT ドメイン認証) の、どちらかを指定します。
パラメータ引数の一覧

VPN Client>AccountPasswordSet setuzokusaki /PASSWORD:password /TYPE:standard

6.接続設定を使用して VPN Server へ接続を開始

書式:AccountConnect [name]

接続を開始する接続設定の名前を指定します。
パラメータ引数の一覧

VPN Client>AccountConnect setuzokusaki

これで、サーバーにつなげることができます。しかし、このままでは、IPアドレスが付与されません。なので、サーバー側でDHCPを動かしてIPをもらうようにします。

DHCPの設定は、windowsのサーバー管理マネージャーアプリで設定するのが楽だと思います。直接、サーバーにコンソールからアクセスして、vpncmd を起動してDHCPを動かすことも可能ですが面倒かなと思います。

windowsのサーバー管理マネージャーアプリででサーバーにアクセスしたのちに、仮想HUBの管理(A)を押し、VPNの管理画面に入り、右下の方にある「仮想NAT及び仮想DHCPサーバー機能(V)」を選択します。仮想仮想NAT及び仮想DHCPサーバー機能の設定画面(下記図参照)で、SecureNAT機能を有効にして、SecureNATの設定(C)をクリックします。すると、SecureNATの設定になるので、仮想DHCPサーバーを使用するにチェックをつけます。配布IPアドレスとサブネットマスクを入れてOKを押せば仮想のDHCPサーバーが動きます。

この状態でクライアントを接続したのちに、下記のコマンドでIPアドレスを受け取ります。

sudo dhclient vpn_nicname (なずけたnicnameの前に vpn_ を忘れないようにしてください。)

固定ip を振りたい場合は以下のようにします。

sudo ip address add 192.168.100.100/24 dev vpn_nicname

ifconfig で正しくIPアドレスが振られていれば完成です。

自動起動

このままでは、起動時に毎回コマンドを打たないといけないので、起動時に自動でクライアント(ラズパイ)がサーバー(仮想HUB)に接続できるようにします。

まず、起動スクリプトを書きます。

#vpnclient_start.sh

#Modify nicname and setuzokusaki your real setting.
#Start vpnclient
/usr/local/vpnclient/vpnclient start
sleep 10
#Connect to vertual HUB
/usr /local/vpnclient/vpncmd /client localhost /cmd AccountConnect setuzokusaki
sleep 1
#If Ip from DHCP then
#dhclient vpn_nicname

#If fixed IP
ip address add 192.168.x.x/24 dev vpn_nicname

ーーー

起動スクリプトに実行パーミッションをつけます。

chmod +x vpnclient_start.sh

/etc/rc.local に起動スクリプトを登録します。

rc.local にはデフォルトで下記の内容が書かれていますので、#ここから #ここまでを追記します。

_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi

# ここから
echo "Connecting virtual HUB."  
sudo bash /usr/local/vpnclient_start.sh &

#ここまでを追加
exit 0

確認のために

sudo bash /etc/rc.local

これでちゃんと期待通りに起動すれば大丈夫です。最後に、パイを再起動してちゃんとIPが振られている確認します。

その後不思議な現象に悩むことになりました。仮想HUBは機能していて、ちゃんと仮想HUB上のIPは降られるのですが、どうしてもラズパイから仮想HUBへのルート通らない。windows のクライアントからpingもsshもできるので、症状としてラズパイがroutingが正しく設定できていないよう思える。私はあまりroutingは得意ではないのですが、192.168.100.0/24のアドレスは仮想nicに渡せばいいだけと思うのだが、どうもうまくいかない。時間があるときに試してみようと思う。誰かわかる方がいればコメントを入れていただけると嬉しいです。routeingは以下のように設定してます。

pi@raspberrypi:~ $ route
カーネルIP経路テーブル
受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフ ェース
default 192.168.1.1 0.0.0.0 UG 202 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 vpn_nic

試しに、Ubuntu MATEを入れてみたところ、苦労せずにpingが通りました。その時の、routeの結果は以下になってました。link-localがミソなのかも。





Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    600    0        0 wlan0
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 vpn_nic
192.168.1.0     0.0.0.0         255.255.255.0   U     600    0        0 wlan0
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 vpn_nic

コメントを残す

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