OpenVPNとVPSサービス、それとDD-WRT(もしくはOPENVPNが使える端末)を組み合わせて、固定IPを持っていなくても各拠点や出先から安定して接続可能なVPNサービスを安価(月900円程度)に構築します。個人用途としては、艦コレの為に自宅PCにアクセスしてゲームする事も可能です。
クラウドサービスとして、同種のサービスはシンプルVPNが存在するのですが、拠点や接続するクライアントを増やすたびにクライアントで月額1000円、拠点で月額5000円を取られる為、それなら自分で作れば良いと言う結論に至りました。本投稿を読み進めるにあたってはそれなりのネットワークやLINUXの知識が必要になりますが、試行錯誤する事は良い事だと言う考えに基づいてお付き合いください。
なお、本件は、今となっては有料になってしまったDynDNS等のサービスや同種の無料版のDDNSサービスを使って、動的IPであってもOpenVPNサーバを運用できると言う指摘もありそうですが、固定IPを持つVPSが24時間365日安定して使えて月額1000円と言う事実を有効活用している所が異なります。
対象としているユーザー
- 自宅ネットワークに安価に接続したい個人ユーザー
- 拠点間VPNを安価かつ手軽に導入したい中小企業ネットワーク管理者
- 何かしらの団体(上記中小企業ユーザーの要件に合わせ、メンバーの入れ替わりの都度、VPNを設定する必要があるケース)
- 大学サークルメンバー間でのファイル共有や共同開発の為にVPN接続したいユーザー
- クラウド上のサービスにファイルを保存したくない写真愛好家や団体等の集まり
- ネットワーク系のスキルを向上させたいユーザー
- 艦コレの為に出先から自宅PCにアクセスしたいユーザー(TeamViewerと言う手もあるが、個人的にはセキュリティの観点からパス。)
VPN種別 | 導入コスト | 維持費 | 備考 |
---|---|---|---|
IPSEC対応ルータによるVPN | 10万/1拠点 | 中~高 | IPSEC対応ルータは、最低でも1台当り3万円程度で、安定動作を見込むなら10万程度はかかります。更に携帯端末からの接続に関しても、ソフトウェアが有料だったり管理が煩雑だったりと、専任の技術者と最低でも数十万の予算が無いと実現できません。 |
市販ルータによるL2TPを使ったVPN | 3万/1拠点 | 中~高 | L2TP対応で、サーバを任せられるルータの種類が少ない事から、拠点毎にルータを配置するコストがかかります。安くても3万円程度です。NTTのフレッツを使っている場合に限り、ファームウェアを最新化すればNTTのレンタルルータがL2TPをサポートしています。ただ、既存の拠点のインターネット契約を変更したり、L2TPで待ち受けるサーバ側は固定IPにしたりと面倒も多々あります。真面目にある程度のコストをかけてVPNを組もうjとしている時にDDNSは選択しませんよね。 |
【本投稿の内容】OpenVPNによるVPN | 無料~数千円 | 低 | 一番のメリットは、拠点や端末の増減に伴う管理が簡単で低コストである事です。但し、問題も無いわけではなく、上記2つに比べて速度はそれなりです。よって、VPSを借りて、既にウェブサーバとして利用している場合でも、VPN専用として新しいVPSを借り、OpenVPN以外の用途には使わないように設定する事を強く進めます。 |
VPS費用
項目 | 金額 | 備考 |
---|---|---|
お名前.com VPS(KVM) | 856円/月 | 1GBのプランで十分。安定して運用可能(今回利用中) |
さくらのVPS | 924円/月 | 1GBのプランで十分。安定して運用可能。 |
conoha | 930円/月 | GMOインターネット |
導入費用
項目 | 金額 | 備考 |
---|---|---|
ルータ | 4000円程度 | 拠点(自宅や、本社、支社等)をVPNに参加させるために必要。DD-WRTを導入可能なルータ |
VPS費用 | 1000円/月 | VPSの契約は1つのみでOKなので、参加メンバー全員で割り勘すれば良いです。5人なら一人当たり月200円程度です。固定IPを持っている拠点がある場合には、そこをVPSの代わりにすれば追加コスト無し。お名前.com VPS(KVM)は構築実績あり。 |
OPENVPNクライアント | 無料 | iphone、android、DD-WRT、rapsbery-pi等のOPENVPNが使える端末 or サーバであればOKです。OPENVPNは無料です。 |
まず、この記事で構築しようとしているネットワークを導入するに至ったきっかけ(不満点)です。
- 出先から拠点内LANにアクセスする場合には、VPN対応ルータ(安くても3万円~)と固定IP(月1000円~)が必要であり、各拠点毎にそれらの条件を満たすことは費用、契約変更の面からも面倒だった。
- VPNに参加したい拠点や人が増えるたびに、IPSEC対応ルータやIPSECクライアントを導入するのが面倒。
- iphone等から拠点へのVPN接続はL2TPかPPTPになるが、L2TPに対応しているルータは3万円以上。1万円近辺のルータでも利用可能なPPTPはセキュリティ上の問題が発見されており、安心して利用できない。
- NASの管理画面やepgrecに、携帯端末からHTTP接続する場合、そのためだけにIPSECを使うのは高かった。パスワード認証を有効にしたうえでどこからでもHTTPアクセスできるようにルータを設定するのは論外。
- シンプルVPNを使ったみたが、VPNを繋ぐ前にアカウント管理画面みたいなところでこちょこちょ操作するのがめんどくさかった。
注意事項
構築に入る前に注意事項を記載しておきます。これらを参考にして、サーバはVPSで行くか、固定IPを利用できるプロバイダを利用するかを検討してください。
項目 | 問題点 | 対策 |
---|---|---|
OPENVPNのセキュリティ | ・ユーザー名とパスワードの組み合わせよりもずっとセキュリティの高いOPENVPNの公開鍵認証を使っていますが、モバイル端末からでもアクセスできるようにポートを開放している。 | ・使用するポートを変更する。・iptables等で接続可能なIPアドレスのレンジを指定してパケットフィルタをかける。
・何度も認証失敗しているIPからの接続を拒否するように設定する。 ・tls-authオプションを利用してセキュリティを向上させる。 |
通信量 | VPSはVPSを提供してくれる企業のリソースを利用しているため、大量のトラフィックを発生させた場合、速度制限される可能性がある。100G/1日とか行ったら間違いなく速度制限されると思われます。 | ・OPENVPNはLayer3で動かす設定とし、余計なブロードキャストは飛ばさない設定にしている。・あまり通信量が多いようなら、VPSの代わりに固定IPを取得した拠点を用意する。これはセキュリティを気にする企業ユーザーにもお勧め。 |
VPSアカウントのセキュリティ | VPSを借りている手前、VPSへのログイン情報を盗まれた場合にVPS上のコンソール画面からOpenVPNサーバを乗っ取られる可能性があります。 | どこのサービスを使っていても起こりうることですので、対処方法も広く一般に言われている事を踏襲します。具体的には、VPSサーバのユーザーアカウントの管理は厳重にするとともに、難しいパスワードを設定する。後はVPSが推奨しているアカウントの管理方法に準拠してください。 |
属人的なセキュリティリスク | OPENVPNにセキュリティホールが見つかった場合。 | 速やかにセキュリティパッチをあてる。サーバ側であれば、apt-get update; apt-get upgradeで。 |
同上 | VPNに参加しているユーザーがウイルス感染した端末を使用した場合に、同一VPNに参加しているユーザーに感染する恐れがある。 | 参加者全員にセキュリティ対策ソフトの導入を義務付け、最新のウイルス定義ファイルを使用するように周知徹底する。※これ、解っていない人は解ってないんですよね。『MACだから安全』とか根拠もなく言い張ってきたりして・・・ |
同上 | VPNに参加しているユーザーの端末が盗まれた場合 | サーバ側で速やかに対象のユーザーの認証カギを無効にする(証明書執行リスト:CRLに加える)。 |
同上 | VPNに参加しているユーザーが悪意を持って情報流出を企てた場合 | 規約で縛るなり、sambaやウェブサーバ(Apache,nginx)のACLを用いて信用できない人は大事な情報にアクセスできないようにしてください。必要に応じてVPN接続可能な場所を全部DMZ扱いにしてしまうのも手ですね。 |
同上 | 無知なユーザーによるファイル削除等 | たまにいるんです。うっかりさんが。ACLで適切にアクセスコントロールするとともに、バックアップは適宜実施してください。 |
構築
基本的には下記の流れで進めます。なお、鍵長は2048bitがデフォルトですが、あえて4096bitにしています。4096bitの鍵を作成する際には処理投入から鍵作成完了までの待ち時間が長い為、テスト目的の場合には、2048bitをお勧めします。
- OpenVPNのインストール
- PKI(認証局)の構築
- OpenVPNの設定
- クライアント側の設定
# パッケージを最新にする。 sudo apt-get update sudo apt-get upgrade # OpenVPNのインストール sudo apt-get install openvpn easy-rsa # 設定ファイルの用意 sudo cp /usr/share/easy-rsa /etc/openvpn/ -R cd /etc/openvpn/easy-rsa/ sudo vi vars
/etc/openvpn/easy-rsa/varsの編集箇所
下記、適当な値でも大丈夫ですが、一応真面目に設定してください。テスト目的であればこのままでも良いです。
export KEY_COUNTRY="JP" export KEY_PROVINCE="CA" export KEY_CITY="MyCity" export KEY_ORG="MyDreamCompany" export KEY_EMAIL="yourname@test.local" export KEY_OU="MyOrganizationalUnit" export KEY_NAME="EasyRSA" export KEY_SIZE=4096
ここからはrootで作業します。
sudo su - cd /etc/openvpn/easy-rsa/ source vars ./clean-all ./build-dh ./pkitool --initca ./pkitool --server server openvpn --genkey --secret ta.key # 鍵をコピーする。 cd keys cp server.crt server.key ca.crt dh4096.pem ../ta.key /etc/openvpn/ cd /etc/openvpn # client-config-dirの用意 mkdir ccd cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ gzip -d server.conf.gz
最初に、linux1、linux2、dd-wrt、android、iphone用に鍵を作成します。必要に応じて、名前を変えて作成してください。
5個も作成している理由は、複数拠点からのアクセスを試したためなので、拠点が1つなら1個、2つなら2個と言う具合に適宜調節してください。
sudo su - cd /etc/openvpn/easy-rsa/ source vars # 拠点Aの鍵を作成する。key,crtはコピーする為に表示している # 以降、拠点B、C・・・と鍵を作成するが、同様にkey,crtを各々の拠点で使う。 ./build-key kyotenA cat kyotenA.key cat kyotenA.crt # 拠点B ./build-key kyotenB # 拠点C ./build-key kyotenC # 同様にandroid用 ./build-key android # 同様にiphone用 ./build-key iphone
次に、OpenVPNのサーバ側の設定ファイルを設定します。
cd /etc/openvpn/ vi server.conf
/etc/openvpn/server.confの設定内容
port番号はデフォルトのままだとOpenVPNを実行しているのがバレバレなので、適当な番号に変更してください。1~65534の間で適当な番号を選べばいいと思いますが、1025以上が良いでしょう。
port 13432 # 使用するポート番号。適当に変更してください。 proto udp # 使用するプロトコル ;dev tap # tapはLayer-2(OPENVPNで繋がったネットワーク同士が同じHUBに接続されているイメージ) dev tun # tunはLayer-3(ルーティング有) ca ca.crt cert server.crt key server.key # This file should be kept secret dh dh4096.pem # DHパラメータファイル # OPENVPNを使うルータ、クライアント間で使用するIPアドレス。 # ルーティング設定すればこのIPはOPENVPNの端末のみが使用する事になる為、 # 『絶対に使わないであろうIPアドレスのレンジを割り当てておけば良い』 server 10.8.0.0 255.255.255.0 # ここで設定したルートに対してのルーティング情報をサーバ側に追加する。 # OpenVPNに参加するサーバが増える毎に追記する。 route 192.168.10.0 255.255.255.0 # 拠点A route 192.168.20.0 255.255.255.0 # 拠点B # OPENVPNに接続するクライアント同士(例えばiphone <-> 拠点A)で接続したい場合 # クライアントはサーバにのみアクセス出来れば良いのであればコメントアウトする。 client-to-client # この設定がクライアント間でのルーティングを定義する為のキモです。 # ccdディレクトリ以下にbuild-keyで指定した名前のファイルを置き、 # その中に各クライアント毎に通知させたい設定を記載する事で、 # 拠点間の通信を可能にします。 client-config-dir ccd # keepalive <ping送信間隔> <通信先がダウンとみなす秒数> keepalive 30 120 # セキュリティ向上のためにtls-authを有効にする tls-auth ta.key 0 # 0:Server / 1:client ;cipher BF-CBC # Blowfish (default、速いが暗号化強度は中) cipher AES-256-CBC # AES(暗号化強度高) ;cipher DES-EDE3-CBC # Triple-DES # 圧縮を有効にするかどうか。基本的には有効で。 comp-lzo # 接続可能なクライアント数の上限値 # 参加している拠点、ユーザー端末の合計数にしておくべき。 # それ以上接続してきたら、予期せぬユーザーと言う事なので。 # 参加者数が増減した場合には、この値を修正する事を忘れない事。 max-clients 3 # 安全性を上げるために、実行ユーザーとグループをroot以外にする # persistオプションは実行ユーザーをroot以外にする場合に必要。 user nobody group nogroup persist-key persist-tun # ログファイルを明示的に指定する status /var/log/openvpn-status.log log /var/log/openvpn.log verb 3 # ログレベルを0~9で指定。基本的に3のままで良い。デバッグ目的であれば5以上にする。
次に、拠点毎の設定ファイルを作成します。
/etc/openvpn/ccd/kyotenA
# irouteには、その拠点のLAN内のネットワークアドレスを指定する iroute 192.168.10.0 255.255.255.0 # push routeには、OpenVPNが繋がった後に、クライアント側で実行させたいルーティング情報を追加する。 # ここでは、192.168.20.0/24、192.168.30.0/24と通信できるようにルーティング情報を設定している。 push "route 192.168.20.0 255.255.255.0" # 【例示】必要なら拠点毎のネットワークを追加する。『;』はコメントアウト。 ;push "route 192.168.30.0 255.255.255.0"
/etc/openvpn/ccd/kyotenBも同様に設定します。
iroute 192.168.20.0 255.255.255.0 push "route 192.168.10.0 255.255.255.0" ;push "route 192.168.30.0 255.255.255.0"
/etc/openvpn/ccd/kyotenCを設定します。
kyotenCは、OpenVPNをインストールした端末(Windows、Mac、Linux、rapsberry pi、OpenVPN機能を持ったNAS等なんでも良い)のみをVPNに参加させる為、irouteは不要です。
push "route 192.168.10.0 255.255.255.0" ;push "route 192.168.30.0 255.255.255.0"
/etc/openvpn/ccd/iphoneも同様に設定します。
# irouteは不要。理由はOpenVPNで作られるTUNデバイスに割り当てられる10.8.0.14等のIPを使用するだけでVPNに参加出来る為。 # 下記のpush routeは各拠点へのルーティング情報なので必要。 push "route 192.168.10.0 255.255.255.0" push "route 192.168.20.0 255.255.255.0"
/etc/openvpn/ccd/androidも同様に設定します。
push "route 192.168.10.0 255.255.255.0" push "route 192.168.20.0 255.255.255.0"
ここまでで、サーバ側の設定は済みました。後はDD-WRTやiphone等に鍵を配って設定するだけです。
DD-WRTの設定
DD-WRTの設定では、IPアドレスが192.168.1.0/24になっていますが、拠点Bのルータと同じ設定なので、IPアドレスは192.168.20.0で、使用する鍵は拠点B(kyotenB)のものだと読み替えてください。
DD-WRTの基本設定画面では赤枠でくくった基本的な設定を行ってください。ケーブルTV等はDHCPでIPアドレスが取れますが、フレッツ光等はPPPoEですので、その辺は適宜設定してください。
次に無線LANの設定です。ここも適宜設定してください。
無線LANセキュリティです。無線LANに参加するクライアントに適合するように設定してください。最近の端末であれば、上記のような設定で良いと思います。
無線LANを使用する際には、無線LANにアクセス可能なMACアドレスを設定するのがベストプラクティスになっています。面倒だとは思いますが設定しましょう。ゲーム機や携帯端末を参加させる場合には、一度MACアドレスフィルタを無効にしてから、無線LANに参加させ、MACアドレスをメモした上で設定すれば良いと思います。
各種サービスの設定をします。実はtelnetを有効にしていると、デフォルトのままだとOpenVPNで繋がった他のネットワーク上のホストからもtelnetアクセス可能です。メンテナンスが終わったら速やかに不要なサービスは無効にしましょう。
上記がOpenVPNの設定でも勘所です。各設定項目の解説は下記の通り。
項目 | 設定値 | 備考/何を入れるか |
---|---|---|
OpenVPN Client | 有効 | 有効にします。 |
ポート | ポート番号を入れます。 | VPSで設定したserver.conf上のポート番号です。 |
Tunnel Device | TUN | 携帯端末用のソフトはTAPをサポートしていません。TUNを指定します。・TUN・・・・・Layer3(つまり、ネットワーク間の通信はルーティング設定が必要)・TAP・・・・・Layer2(同一のHUBに繋がっているのと同じ。ブロードキャスト等も届いてしまうので使わない) |
Tunnel Protocol | UDP | VPSで設定したserver.conf上のプロトコルです。 |
Encryption Cipher | AES-256 CBC | 暗号強度。出来るだけ高めで |
Hash Algorithm | SHA1 | 強化したければご自由にどうぞ |
TLS Cipher | None | None |
LZO Compression | Adaptive | 有効で。 |
NAT | 有効 | 有効を指定。 |
Firewall保護 | 無効 | 設定が煩雑になるので解説していません。必要に応じて設定してください。 |
IPアドレス | – | 設定していない。 |
サブネットマスク | – | 設定していない。 |
TLS Auth Key | OpenVPNサーバから取得(ta.key) | /etc/openvpn/ta.key |
CA Cert | OpenVPNサーバから取得(ca.key) | /etc/openvpn/ca.crt |
Public Client Cert | OpenVPNサーバから取得(build-keyで作ったもの) | /etc/openvpn/easy-rsa/keys/kyotenB.key |
Private Client Key | OpenVPNサーバから取得(build-keyで作ったもの) | /etc/openvpn/easy-rsa/keys/cat kyotenB.crt |
機器診断>OpenVPNでOpenVPNのログが確認できます。『状態』が『Server: : Local Address: Remote Address: Client: CONNECTED: SUCCESS Local Address: 10.8.0.n Remote Address: 10.8.0.n 』等となっていれば接続出来ている事になります。
ネットワーク>ホットスポットは全て無効にします。
セキュリティー>ファイアウォールは有効で。
NAT/QOSのUPnPは基本的には有効で。UPnPはゲームやSkype等で使われている事が多々あります。会社でHTTPとメールさえ出来れば良いと言う場合には無効でOKです。
iPhoneの設定
iphoneからOpenVPNに接続する際には、OpenVPN Connectと言うソフトウェアをインストールしてください。
次に、iphoneへは、ta.keyと、iphone.ovpnファイルを作成して配布します。ta.keyはOpenVPNサーバ上でcat /etc/openvpn/ta.keyとでもして、SSH画面上に表示したキーをコピーしてテキストファイルに張り付け、拡張子を変更して作ってください。
iphone.ovpn設定ファイルは下記のように作成し、tls-auth ta.key 1までは、記載してある通りに設定してください。『10432』とは、OpenVPNのポート番号なので修正します。
ちなみに、下記のiphone.ovpnファイル中の鍵は、あまりにも長いので、適宜省略しています。
dev tun proto udp port 10432 remote <VPSサーバのIP> 10432 cipher AES-256-CBC auth SHA1 keepalive 30 120 comp-lzo resolv-retry infinite nobind persist-key persist-tun client verb 3 tls-auth ta.key 1 <ca> -----BEGIN CERTIFICATE----- MIIG0zCCBLugAwIBAgIJAOUq3lPfIj6gMA0GCSqGSIb3DQEBCwUAMIGhMQswCQYD eu02rVNSz2sxw68Z1cWpSz0Hw83kMHPEi3csYymUbWSikFELgtVoqIGxDtNRyzWo UJLTB2PxmankqSf1ai5IgdqYYFZgwaM= -----END CERTIFICATE----- </ca> <cert> Certificate: Data: Version: 3 (0x2) Serial Number: 3 (0x3) Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, ST=CA, L=SanFrancisco, O=Fort-Funston, OU=OU, CN=Fort-Funston CA/name=EasyRSA/emailAddress=******** Validity Not Before: Oct 6 14:09:18 2014 GMT Not After : Oct 3 14:09:18 2024 GMT Subject: C=US, ST=CA, L=SanFrancisco, O=company, OU=section9, CN=iphone/name=iphone/emailAddress=******** Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (4096 bit) Modulus: 00:d3:ca:ce:b2:5c:4d:c6:a6:1f:a7:3f:33:b8:bc: 67:23:ac:bd:5a:db:e8:c7:87:07:a0:60:d6:82:ff: 1d:dc:89:fc:93:29:0a:aa:1d:41:9b:6a:c0:d8:a6: 76:5d:e7:c1:d6:ba:03:c0:e7:a9:e3:fb:c2:7a:11: ac:16:d1 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: Easy-RSA Generated Certificate X509v3 Subject Key Identifier: D5:DD:47:B1:37:4F:01:84:2E:D0:35:1A:23:0F:D7:AC:58:6E:64:F1 X509v3 Authority Key Identifier: keyid:2A:2E:C0:A6:F9:FD:B6:CA:06:08:66:4C:13:49:8E:B7:4B:76:C4:61 DirName:/C=US/ST=CA/L=SanFrancisco/O=Fort-Funston/OU=OU/CN=Fort-Funston CA/name=EasyRSA/emailAddress=******** serial:E5:2A:DE:53:DF:22:3E:A0 X509v3 Extended Key Usage: TLS Web Client Authentication X509v3 Key Usage: Digital Signature X509v3 Subject Alternative Name: DNS:iphone Signature Algorithm: sha256WithRSAEncryption 5f:88:40:c7:84:2d:5e:77:6a:f4:b0:a8:cf:fc:33:0b:85:56: a6:b0:bf:1d:d8:89:21:1c:d7:00:6f:04:2e:3b:11:2c:d9:fb: 71:b8:8e:e2:04:30:35:ad:cd:de:e7:5a:e7:5b:50:7c:68:98: 51:59:51:2c:0a:5b:a6:d0 -----BEGIN CERTIFICATE----- MIIHIzCCBQugAwIBAgIBAzANBgkqhkiG9w0BAQsFADCBoTELMAkGA1UEBhMCVVMx flgZAKD0LMuFn0SwTX6D+z54hLBEt2CaoqzjwoWa8oceEoKPx0SrPQGFIn+rGKQI pb9T/kdDliHZ22emsL8d2IkhHNcAbwQuOxEs2ftxuI7iBDA1rc3e51rnW1B8aJhR WVEsClum0A== -----END CERTIFICATE----- </cert> <key> -----BEGIN PRIVATE KEY----- MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQDTys6yXE3Gph+n PzO4vGcjrL1a2+jHhwegYNaC/9SrgvwqdffBA0kCZyB4fj/po8ymiw98kcIxPQ+x 9eV2UZALAxiU15rzpnkDlnXoybL+wUT3hUhCzpYaA6nNMFN4kyrjpTcidKTNfTI5 Sh8MjY+rT4oUUBsgnJotgaf8rdJwVAGd -----END PRIVATE KEY----- </key>
itunesで、ta.keyと一緒にiphone.ovpnをiphoneにアップロードします(ovpnファイルに一緒に記載しようとしましたが、タグが解らなかった。知っている人、、、教えてください)。
ファイルを追加から、ta.keyと、iphone.ovpnをアップロードします。(画像中に、ta.keyが無いですが、あるものとして見て下さい。)
アップロードが完了したら、OpenVPN Connectに下記のように設定が出来ます。
動作確認のために、iphoneからVPN接続して、192.168.10.1上のApacheサーバを表示してみます。
このサーバは前もって用意しておいただけなので、ご自身の環境に応じてepgrecやNASの管理画面、DD-WRT上のWakeOnLAN画面等にアクセスしてください。
まとめ
以上で、VPSとOpenVPNを使ったVPN構築は完了です。iphoneからVPN接続した上で、リモートデスクトップでWindows7に接続してみましたが、速度的な問題は一切なく、安定してアクセス出来ています。
ピンバック:SoftEtherを使ってVPS上にVPNサーバを構築する | My WordPress Site
softether VPNとraspberry piの組み合わせで安価に構築できる例があるようです。
情報ありがとうございます。VPNを張る選択肢の一つとして、softetherも良いかもしれませんね。raspberry piは何でもできてしまうので、ルータに特化したDD-WRTと比べて、構築後のセキュリティには特に注意する必要がありそうですね。