RaspberryPi[6] Softether server on Ubuntu

さくらネットに仮想HUBを構築してみたのでその覚書です。

さくらネットには「さくらのVPS(v5) 512 TK02」を新規で契約しました。一年間を一括で支払うと30%引きなので年での契約です。VPSサーバーはUNIX系のほかにwindowsサーバーもありますが、コストが高いのでunix系のサーバーを契約しました。OSは、CentOS、AlmaLinux、Rocky Linux、ubuntu、KUSANAGIから選ぶことができます。ヴァージョンも選べます。私はubuntuを選択しました。VPSサーバーはroot権限をもらえるので一台のリモートサーバーを借りていると同じです。VPSコントロールパネルから電源操作やOSの再インストールができます。結構便利ですよ。

コントロールパネルからシリアルコンソールにアクセスできるので、シリアルコンソールからインストールすることになります。

さくらネットの場合、user名はubuntuです。ubuntuはsuコマンドが使えないので、root権限が必要な時は、sudoを使ってください。これ、良く忘れるんです。パスワードエラーを返すのでパスワードが違うと勘違いしてしまう。

Ubuntu 20.04でSoftEther VPN Serverを建てる を参考にさせていただきました。この通りにやれば問題なく構築できます。

$ sudo apt-add-repository ppa:paskal-07/softethervpn
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo a$ sudo systemctl start softether-vpnserver.service
$ sudo systemctl enable softether-vpnserver.servicept-get install softether-vpnserver

これでサーバーの構築は終わりです。

サーバーの設定はサーバー管理ソフトで行います。まずは、ソフトを落とします。

SoftEther VPN のダウンロードから落とします。コンポーネントで「SoftEther VPN Server Manager for Windows」を選択します。プラットフォームは自分の環境によって選択してください。ダウンロードできるファイルが沢山出てきますが、一番上のやつが最新なのでこれをダウンロードします。ダウンロードしたファイルをインストールすると、インストールするソフトウエアの選択を促されるので、SoftEther VPNサーバー管理マネージャー(管理ツールのみ)を選択します。インストールが終わると、SoftEther VPN Server Manager が起動するので新しい接続を設定します。

ホスト名:さくらネットのVPSサーバーのFQDN

管理パスワード:任意のパスワード

管理者用のパスワードの再設定

つい管理者用のパスワードを忘れると管理ができなくなります。

VPNサーバーはいくつかのパスワードがありますが、仮想HUB管理モードとサーバ管理モードがあります。通常サーバ管理モードで良いかなと思います。間違って設定を仮想HUB管理モードにしてしまうと入れなくなります。入れなくなったときは、SoftEther VPN Server Managerでチェックを確認してください。

ちなみに、本当に入れなくなってパスワードを書き換えたい場合は、

サーバーのvpn_sever.confをエディターで立ち上げて、Server Configのbyte HashedPasswordの行を削除します。HashPasswordがいくつかありますが、「Server Configのbyte」のところだけで大丈夫の様です。また、サーバーを停止させる必要があると書いてあるWEBもありましたが、サーバーが動いている状態でも書き換えることができました。

私の場合は、/usr/libexec/softether/vpnserver/の下に、vpn_sever.confがあります。root権限でないと削除できないので、

sudo vi vpn_sever.conf と打ち込んだ後に、rootのパスワードを聞かれるので、パスワードを入れればエディターで修正できるようになります。

Server Configのbyte HashedPasswordの行を削除したあと、

sudo /usr/libexec/softether/vpncmd/vpncmd と打ち込むと、1~3の選択肢が出てくるので、1を選択す、そのまま一回リターンをたたいて、ホストの設定を、localhost になります。次に、Specify Virtual Hub Name:を聞かれるので何も入れずにそのまま改行します。

正しくいけば、VPN Server> と出るので、

VPN Server>ServerPasswordSet と入力すればパスワードの設定画面になります。

しかし、仮想HUB名を入れてしまうとパスワード入力で下記のエラーが出ます。

Error occurred. (Error code: 52)
Not enough privileges.

The command completed successfully.と表示されたら、変更完了です。

トラブル発生

構築したVPNサーバーに接続したクライアントのモバイルルーターのパケットが数メガ bps になり、あっという間にSIMを使い切ることがわかりました。クライアントのWindows側ではWindows updateを止めたり、スタートアッププログラムをすべて停止しても減らない。モバイルルーターに繋いだ状態でVPNを切断するとパケットは0になる。どうも、パケットは少ないときは数十キロbpsで時々数十メガになるという症状。それも受信パケットだけが多い。やはり、VPNサーバーの問題っぽい。パケット量が増えるときに、 Wiresharkでどんなパケットを受信しているかを確認したら、サーバーからクライアントに多くのUDPデータが送信されてた。解決策は「UDP高速化機能を無効にする」です。これは、サーバー側の設定でもできますし、クライアントの設定でもできます。

クライアント側で設定する場合は右側のUDP高速化機能を無効にするにチェックを入れます。私はサーバー側で設定したので下図ではチェックは入っていません。

サーバー側で設定する場合は、DisabaleUdpAcceleration の設定値を0にします。

受信パケットが増える。

モバイルルータを使用してローカル通信だけを行いたいのですが、何故かたまに受信パケットがまだ1Mになることがあります。使用しているwindowsでは余計な通信をしないようにしていますが、それでも何か通信しているようです。これだと格安SIMでは通信ができなくなり、softether クライアントの接続が切れます。いろいろ調べた結果、ローカルブリッジを設定しているのが原因のようです。ローカルブリッジは仮想HUBとサーバーのリアルLANカード間でブリッジするもので、クライアントからの要求を外に出すもののようです。今回は、VPNが目的ではなく、あくまでもローカル内での通信が必要なので、外に出ていくものは必要ありません。なので、このローカルブリッジを削除しました。その結果、クラインとのVPNパケットはほぼ0にすることができました。下記の「ローカルブリッジを削除」を実行します。