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 64bit(他のはうまく動かない)をダウンロードします。コンソールからダウンロードするよりも、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をもらうようにします。

7. AccountDisconnect setuzokusaki
コマンドの概要 接続中の接続設定の切断

沢山設定していると、アカウントを変更したくなる場合がありますが、その場合は一旦接続を切断しないとエラーになります。

8.AccountDelete setuzokusaki

コマンドリファレンスでは自動で接続先を切ると書いてありますが、なぜか切れないので先に明示的に切ってあげます。

このあと、新たにアカウントを作ってあげれば大丈夫です。

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
sudo /usr/local/vpnclient/vpnclient start
sleep 10
#Connect to vertual HUB
sudo /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が振られている確認します。

rc.local から起動すると root 権限で実行されますが、autostart から起動するとユーザー権限なので、vpnclinet は sudo が必要です。