umikaki diary

ガジェットから日常まで

auひかりでSoftEther VPN環境を構築した

引越をし、フレッツ光からauひかりに変わったことで不便になったことがありました。それは外出先から自宅へのVPN接続ができなくなってしまったことです。

引越し前の環境では、フレッツ光にMAP-E接続(メイン)とPPPoE接続(VPN接続用)の2系統を用意し、デュアルスタックで接続していました。MAP-Eの方は自宅から外に出る用に、PPPoEについては外出先からLT2P/IPsecで自宅にVPN接続する用にし、PPPoEから接続してもIPoEにつながっている自宅の各サーバやPCにアクセスできるよう、静的ルーティングを組んでいました。

auひかりに変わってから、HGWでパススルーし、HGW配下にあるルーターから直接プロバイダに接続することができなくなりました。auから支給されたHGWはauからコントロールされるみたいで、ポート開放等の機能しかありません。また、HGWを介さずに接続することも不可能なようで、今までのやり方が通用しなくなってしまいました。

さて、どうしようかと考えた結果、自分でサーバにSoftEther VPNを構築することにしました。自宅ネットワークは以下のようになりました。

f:id:umikaki:20190330094848p:plain

自宅ネットワーク

上図ではHGWしか記載がありませんが、HGWの前にはONUがあり、ONU→HGW→各端末という流れになります。

HGW配下にある各端末は192.168.0.0/24のセグメントに属しており、SoftEther VPNで接続した端末には192.168.30.0/24のセグメントが割り振られ、VPNサーバ内のNATを介して自宅ネットワークに接続しています。

また、HGWの設定には、SoftEther VPNで使用するポートを開放する設定と、パケットフィルタリングで使用するポートのパケットを許可する設定を加えておきます。今回はOpenVPNを使用し、ポートはSSLで一般的に使用される443ポートを使用しています。

実際に構築してみる

まず、今までWindows 10 Proが入っていたサーバ(実態はデスクトップPC)にCentOS 7をインストールします。今回はKVMを使用し、仮想サーバを構築します。KVMでゲストOSをインストールする際にGUIを使用したいので、KDEデスクトップも合わせてインストールしておきます(手順については割愛します)。

KVMインストール後、各ゲストOSをインストールするのですが、ここで各ゲストもホストと同じセグメント(上図の場合は192.168.0.0/24)に属するようにしたいので、ブリッジ接続で構築します。KVMをインストールしたときvirbr0というNICが自動で構築されますが、これを使用してしまうとゲストOSからホストOSに接続ができなくなります。なので、一旦br0というブリッジ用のNICを作成し、そこにKVMのゲストを接続するやり方でインストールを行います。構築の仕方は下記ブログを参照してください。

f:id:umikaki:20190330100405p:plain

KVMの設定

そして、ゲストOSにSoftEther VPNを構築していきます。SoftEther VPNの構築は下記記事を参照してください。

今回は上記記事と同様、KVMUbuntu 18.04 LTSをインストール、その中にSoftEther VPNを構築しました。構築時にはポート開放も忘れずに行ってください。

構築すると、他のPCからSoftEther VPN Server Managerを使ってGUIで設定できるようになります。

f:id:umikaki:20190330101213p:plain

f:id:umikaki:20190330101216p:plain

SoftEther VPN Server Managerの設定

VPN接続するクライアントの設定

今回はOpenVPNで接続するので、OpenVPNで接続できるVPNクライアントソフトが必要になります。私のPCはMacBookですので、Tunnelblickを使用します。

OpenVPNでの接続に必要な設定ファイル(.ovpn)は、SoftEther VPN Server Managerの「OpenVPN / MM-SSTP Setting」より生成することが可能です。生成したファイルは、VPN接続するクライアントにあらかじめ配布しておきます。

そして接続

ここまでの構築で特に問題なく、そしてHGW側のポート開放設定もできていれば、OpenVPNで自宅へ接続することが可能になります。

接続できない場合は、ポートが適切に開放できているか、設定が間違っていないかをもう一度確認してみてください。私の場合は、最初1194/udpで接続しようとしましたが接続できず、443/tcpで接続するようにしたらうまく接続できるようになりました。

不具合…?

今のところ特に問題なく接続できていますが、VPNで接続すると、自宅のインターネットはIPv6対応にもかかわらずIPv4で接続されてしまいます。また、なぜかMastodonのストリーミングが流れなくなってしまいます。

おわりに

上記の設定で、晴れてVPNを手に入れることができ、外出先からでも自宅サーバや自宅PCにリモートアクセスできることが可能になりました。なお、auひかりもグローバルIPは動的IPだそうですが、めったに変わることはないそうで、半ば固定IPとして使えるみたいです。SoftEther VPNのデフォルト設定ではDDNSが有効になっていますが、無効でも特に問題はなさそうです。