Softbank Airは外部からのアクセスが不可。でも自宅のサーバーにはアクセスしたいよね、ということで、VPSでVPNサーバーを上げるという方法で実現してみました。
原理的には、この方法でできることは分かっていたのですが、実際やってみるとなるほど、と思ったり、実際繋がってみるともの凄く便利だったので、書いておこうと思った。
構成は以下の通り。
- 自宅の回線がSoftbank Airです。外部からのアクセスは不可ですが、内部からのアクセスは可能なので、こちらからVPNを張る構成を取ります。
- VPSを1台使います。多分、AWSでもお名前VPSでもさくらVPSでも可能かと思います。条件は、VPSであること。ネットワークがきちんと掴めるVPSである必要はありますが、大抵は大丈夫かと。
- このVPSをVPNサーバーにして、自宅からBRIDGEでLANを飛ばして、同じくこのVPNサーバーにモバイルPCからVPN接続することで、実質自宅LANと同じアクセス環境につなげてしまう。
今回使ったのはSoftEtherです。昔から名前は知っていましたが使ったことはなかったので、初めて設定してみました。
まずはSoftEtherのバイナリをダウンロードします。何をダウンロードすれば何ができるのか、意外にぱっと分かりずらいのですが、上記構成で行くと、以下のような感じです。
- VPNサーバー側には、vpnserverを入れます(「SoftEther VPN Server」)
- 自宅のBRIDGEサーバー側にはvpnbridgeを入れます(「SoftEther VPN Bridge」)
- これとは別に、Windows用の管理ツールを入れます(「SoftEther VPN Server Manager for Windows」)
管理ツールについては、コマンドラインユーティリティが付属するため、これでも設定できそうだったのですが、なかなかコマンドラインでの設定方法が分からず、また設定イメージがぱっと分からなかったので、使うことにしました。多分、一度設定して動かしてみると、設定のイメージが分かるので、コマンドラインでの操作もやりやすくなるかなと思います。
vpnserver/vpnbridgeは適当なフォルダに展開して、makeします(gcc等、リンクできる環境が必要)。私は各々、/usr/local/vpnserver、/usr/local/vpnbridgeに配置しましたが、optが好きな方はそちらへ。バイナリが出来たら、特に設定もなく、そのまま出来たバイナリを起動します。
vpnserver/vpnbridgeはデフォルトで443にbindしますので、これを指定して、管理ツールからアクセスすれば、管理が可能になります。
最初に「新しい接続」で接続先となるVPN Server/VPN Bridgeを指定、登録する必要があります。一度接続してしまえば、その後は、接続先を選択して「接続」で行けるようになります。残念ですが、管理画面は1枚しか開かないため、2個同時に設定を操作するようなことはできませんでした。
メインの管理画面はVPN Server/VPN Bridgeともさほど変わるものではないです。ここでやるべきことは2つ。「仮想HUBの作成」と「ローカルブリッジ設定」、最後に「IPsec/L2TP設定」です。
「仮想HUB」は特に気にするところは無いです(あとで「仮想HUBの管理」で設定できます)。「ローカルブリッジ設定」が意外に肝です。私の場合、VPS側では、VPSのOSもこのセグメントにアクセスできるよう、「新規にtapデバイスを作成」し、かつ、そのtapデバイスにIPを振って、通信できるようにしてあります。また自宅LAN側も、KVM用に作成されたbridge IFに仮想HUBを接続することで、すべてのマシンがアクセスできるような環境にしています。ここ、何も考えずに設定すると、vpnserver/vpnbridgeを動かしているノードは通信できない構成になります(実は普通は、そういうもんなんですが・・・)。かく言う私も、bridgeデバイスとtapデバイスの挙動の違いは厳密には分かっていなかったりしますが・・・。
「仮想HUBの管理」画面が最終的な接続構成の設定画面になります。設定が必要なのは、「ユーザーの管理」と「カスケード接続の管理」。
ユーザーの管理では、VPN Server側に2つユーザーを作成しました。
- 自宅LAN側のBRIDGEからカスケード接続するためのユーザー
- モバイルPCからVPN接続するためのユーザー
ここで使ったユーザーを使って、VPN Bridge側から「カスケード接続の管理」でアクセスさせます。これでSoftbank Airを介したVPNが構成され、自宅LANがVPS側にシームレスに展開・接続された状態ができます。
最後に、メインの管理画面の下側にある「IPsec/L2TP設定」でL2TPを有効化すれば、MacからのVPNが繋がるようになります。上で設定したVPN接続用ユーザーで接続できます。このとき、DHCPは自宅LANからIP振ってきます。このSoftEther構成は、完全にL2透過になるため、振られるアドレスも、自宅でPCを繋いだ時と同じアドレスが払われることになります。
ここまで設定と調整で概ね半日程度で終わっています。非常に分かりやすく使いやすいツールだなぁと思いました。かつ、上記のような基本的な設定以外にも大量に設定項目があるため、いろんなことが出来そうです。
肝心の使用感ですが、今もこのブログを出先で書きながら、裏ではVPN接続をしていますが、安定性は申し分無し。Softbank Airは上り速度も速いお陰もあり、VPNで繋いでいると本当に自宅LANにPCを繋いでいるかのような感覚で作業ができて便利です。普通にターミナルでログインしても応答遅延も無く、地デジサーバーのWeb画面もURL変わらずアクセスできるとか、やっぱりVPNはいいなぁって思います。
ただ、さすがに絶対的なスピードは無いので、例えばRDP接続(Windows Remote Desktop)は厳しい。デフォルトでは数十Mbpsの通信が発生することもあるため、接続が維持できなくなって切れることが頻発します。具体的には、「艦これ」。あれ、画面で秘書艦がフワフワとアニメーションしているため、非常に描画更新の画面帯域が大きいんですよね・・・まぁリモートで艦これはやらないですけど。その場合はTeamViewer等のほうが良いです。あれはちゃんと帯域管理してくれますので。
そんなわけで、やれば出来ると思っていたVPSを用いたVPN環境の構築をやってみました、という話でした。原理的には出来ると分かっていても、実際やってみるといろいろ分かることが多いなぁというのが実感です。SoftEtherによるL2透過なVPNって、本当にL2透過で、今までpptpdで作っていたVPNサーバーとは随分と使用感が違って驚きました。ってゆっか、これVPSでVPN集約サーバー作りたくなりますね。
結論、VPSは便利。・・・・で、Softbank Airでも、外部アクセスは、この構成なら、できますよ、と・・・。
コメント
この方法も良いけど月額高くなっても良いならマイip使ったほうが良さそう
はじめまして、
こちらの記事を読んで自分もsoftbank airを使ったvpn環境を構築しようと思っているのですが、ネットワーク周りの知識が乏しいため、うまく接続ができませんでした。もしよろしければ具体的な設定方法の方を記載のメールアドレスに教えてもらえないでしょうか。
やったところ
aws上のec2インスタンスにsoftether vpnserverを立て、自宅にあるsoftbank airにワイヤレス接続されたノートpcの上にsoftether bridgeを設置しています。
全く別のネットワークに繋がったmac bookからec2上のvpnserverに接続はできています。
そこからどのようにして自宅にあるマシンへアクセスすればよいかがわかりません。
macbookからvpnserverに接続後、自宅のsoftbank airにつワイヤレスでながっている別のマシンのprivate ipに対してpingしても応答はないです。
[…] Softbank Air導入期。VPSでVPNを使って自宅LANへアクセスしてみた。 […]