2018年4月4日水曜日

DD-WRTでSoftEther VPNを使ってみた。

iPhoneでVPNで自宅のネットワークに接続するためにDD-WRTでSoftEther VPNを有効化してL2TPで接続してみた。最近の市販ルータはPPTPぐらいには対応してるのが多いけど、せっかくDD-WRTなのでSoftEatherを使ってみた。

使用しているルータはDD-WRT化したWZR-1166DHP。NANDの容量が多いこともあって、公開されているROMでもいろんな機能が付加されている。
ServiceのVPNにはなんとOpenVPNはもちろん、SoftEther VPNの項目まであった。

ただこの項目からSoftEather VPNを有効にしても設定ファイルをコピペしたりしてもうまく動かない…
ということでSSHから手動で設定することに。

まずはSoftEatherの設定を保存するためにAdministration→ManagementでJFFS2を有効化する。

このルーターの場合は結構な容量がつかえるっぽい。

SSHからコマンドを実行したいのでServicesでSecure Shellを有効にしておいた。

SSHでルーターに接続したらとりあえずSoftEather VPNを起動してみる。

vpnserver start
でSoftEather VPNが起動する。

SoftEatherのダウンロードセンターからSoftEher VPN Server Managerをダウンロードしてきて実行する。このツールでサーバーの詳細設定をすることができる。

今回はGUIのvpnsmgr.exeを使用した。

新しい接続設定からルーターのIPアドレスを設定して、接続するとパスワードを設定するように促されるので、設定パスワードを設定し、そのままウイザード形式でVPNの設定を済ませる。このへんは普通のSoftEther VPNの設定と同様に設定できる。
とりあえず今回はL2TPを有効化しておいた。

ウイザードによる設定が完了したら、ローカルブリッジ設定を開く。

ここでは物理的な既存のLANカードとブリッジするのではなくて、新しいtapデバイスを作成した。先程L2TPを設定した仮想ハブにvpnという名前のtapデバイスを作成してローカルブリッジを設定した。
新しいtapデバイス作成時にエラーが発生する場合はシェルからmodprobe tunをすると良いかも。

ローカルブリッジを設定したら、サーバーマネージャーを終了してSSHのターミナルに戻るって下記コマンドを実行する。

mkdir /jffs/etc (もしフォルダが存在する場合は不要)
cp /tmp/var/lib/vpn_server.config /jffs/etc


これでSoftEatherの設定ファイルがjffsにコピーされて再起動しても消えなくなる。
後はWebの設定画面からAdministrationのCommandsを開いて、下記のスクリプトをスタートアップに登録する。

#!/bin/sh

modprobe tun
ln -s /jffs/etc/vpn_server.config /tmp/var/lib/vpn_server.config
/usr/libexec/softethervpn/vpnserver start
sleep 5
brctl addif br0 tap_vpn


これをCommandsのところに入力してSave Startupをクリックすればスタートアップスクリプトとして登録される。

あとはルーターを再起動すれば自動的にSoftEther VPNが起動して設定が読み込まれるはず。

最後に外部から接続できるようにNAT/QoSのPort ForwardingからL2TP用に500と4500番(UDP)を開けて完了。
ちなみにiPhoneからの場合は「L2TP-VPNサーバーが応答しませんでした。」というエラーはIPアドレスがちゃんと取得されてない場合も表示されるみたいなのでこのエラーが出た場合はポートがちゃんと開いてるかどうか以外にもブリッジ設定などによってちゃんとIPが取得できる状態になっているかどうかも確認する必要があるみたい…
(自分はこのエラーがでてポートが空いてないと思いこんでいろいろやっていたので)

とりあえずこれでDD-WRT上でL2TPが使えるようになった。L2TP以外の手段でSoftEther VPNに接続する場合はポートを開けておくのも忘れずに。



4 件のコメント:

  1. DD-WRTでSoftetherVPNを稼働させたいと思い、検索していたらこちらの記事を見つけました。現在でもSoftetherVPNを稼働させていらっしゃいますか?
    私のDD-WRT機ではCPUのLoad Averageが100%になってしまう症状が出ており、英語の記事を見つけたので対策してみたのですが、解決できませんでした。もし問題無く稼働していらっしゃるのであれば、アドバイスを頂きたく思い投稿させて頂きました。まずは問題があるかないかだけでも御返事いただけませんか?宜しく御願い致します。

    CPU問題でみつけたフォーラムの記事
    https://forum.dd-wrt.com/phpBB2/viewtopic.php?t=306483

    返信削除
    返信
    1. コメントありがとうございます!
      最近接続していなかったので確認してみたところどうやら動いていなかったようです…
      原因はSoftetherVPN関連のファイルのパスが変わっていまして、/jffs/var/softethervpn/の中に今までの設定ファイルを移動して起動し直したら今までどうり稼働しました。
      こちらはWZR-1166DHP上でv3.0-r42174が動いています。確か私もSoftetherVPNを設定していた頃に新しいバージョンにして動かなくなって戻したときもありましたので別なファームウェアバージョンに書き換えてみてはどうでしょうか?
      ちなみにこちらではCPU Load Average 100%現象は確認できませんでした…

      削除
  2. 返信有難う御座います。

    目的はDD-WRT機でVPNサーバー稼働させたくてOpenVPNかSoftetherVPNか検討してました。L2TP/IPSecが動作するSoftetherVPN(Win機やLinux機で動いています)が良かったのですが、なんともCPU Load 100%問題が解決できなくて、結果的にはOpenVPNを利用する事としました(こちらは稼働OK)。

    当方のDD-WRT機「Buffalo WZR-1750DHP」
    ファームウェア「2020.04.20-r42954(現在)」と「2020.03.18-r42729(以前)」
    1750DHPで動作確認が出来るファームウェア上記2つでSoftetherVPNを導入してみたのですが、どちらもCPU Load 100%となってしまいまして・・・

    御教示頂いた「r42174」等も試してみたいと思います。返信、本当に感謝しております。

    返信削除
    返信
    1. OpenVPNで問題ないということでとりあえずは稼働できてますか…

      こちらもしばらくぶりにファームウェアを更新し、SoftetherVPNを再セットアップしてみました。(パスが変わったりしていたので…
      現在build 43381で問題なく稼働しています。
      セットアップ方法が記事と変わっているので自分用メモ代わりに書いておきます。
      Administration→ManagementのJFFS2 Supportを有効にする。
      Services→VPNからSoftEther VPNをenableにしてApply Setting
      すると/jffs/var/にsoftethervpnフォルダができてSoftEther VPNが起動するが、vpnsmgr.exeから接続しようとしてもパスワードがわからない…
      ということで先程のServices→VPNからSoftEther VPNをdisableにしてApply Setting。
      sshなどでルーターにアクセスし、
      cd /jffs/var/softethervpn
      rm vpn_server.config
      ./vpnserver start
      でコンフィグを削除してからスタートさせてやるとvpnsmgr.exeから設定できるようになる。
      最後にServices→VPNからSoftEther VPNをenableに戻して完成。
      ブリッジなどをやるならスタートアップスクリプトも変更しないといけないですね。

      もしリトライするときに参考になれば…

      削除