Raspberry piでL2TP VPNサーバーを構築する

SmartHome計画 第3弾です。

TK(@simplewasbest)です。ここにて急にスパンが早くなっていますが、今回はちょっとした備忘録代わりです。

Raspberry piGETしてからというもの、Home GatewayとしてのRaspberryが有能過ぎて、色々と活用してみたい欲に駆られています。

今回はラズパイを使って、VPNサーバを構築したいと思います。実は今までもQNAPNASサーバを使って、L2TP
via IPsec VPN
を構築してはいたんですが、なんだか色々不安定というか、使いづらいというか、元々のサーバスペック(1 core/128Mメモリ)が貧弱という理由もあってか、作動状況がとても不安定になってしまっていたんですよね。

一方ラズパイはあの小さな筐体かつて消費電力で、ハイスペック(4 core/1GBメモリ)ですから、ただのHomekitだけに使うには勿体ないですよね。なので、今回はあのラズパイにVPNサーバ化してしまおうという計画です。

そうすると一気にラズパイがHome Gatewayとしての役割が増してきて、今後の可能性が更に広がるような気がします。

先ずは構成

上記の通り、そんな大した構成ではありません。今までQNAP NASにやらせていたVPNサーバ機能を外だしするだけですね。QNAPでは色々と問題が起きた時に何が起きているのかイマイチ良くわかんなかった(中にSSHで覗けば見れるんでしょうが)のもあって、今回ラズパイを使って、自分で一から作ってしまえばもっと使いやすく(Trouble shooting含めて)なるんじゃないかと期待しています。

 

ラズパイのセットアップは、割愛します。以下参照してもらえばとりあえずOKだと思います。

https://qiita.com/Halhira/items/1da2ae543217be26988a

 

導入するのは、以下のHWとSWです。

うちの家はこのラズパイ構成にさらにIKEA Tradfri + Hue用途にも兼用させています。

良く知らなかったんですが、FREEVPNサーバ/クライアントソフトで、Linuxだけじゃなく、Windows/Mac/Solaris/FreeBSDとか色々な環境で動くみたいです。組込み系のVPNでも、もしかしたらよく使われてるのかしら?

 

インストールの全体手順は以下。

1.     VPNサーバのインストール

2.     VPNサーバの設定

3.     ルーターのポート開放

4.     DDNSの設定

5.     Firewallの設定

最後のFirewallの設定は、ラズパイを外部に公開するので、ポートを規制しておかないとかなと思って、念のため入れています。前にルーターFWを入れているので、そこまで気にしなくても良いかなとも思いますが、まー念のため。

 

1. VPNサーバのインストール

インストールができているかの確認。

 

スポンサーリンク

これでVPNサーバ自体はインストール完了ですが、このままだと起動等が使いづらいので、サービス化してしまいましょう。

2. VPNサーバの設定

このままだと単にVPNサービスが起動しているだけなので、ここからL2TP VPNサーバとしての設定を入れてあげます。私の環境はMac からのsshしかないので、全てCLIで実施していますが、Windows PCの人は、公式管理ツールがあるらしいので、
そちらを使っても良いのでは?
 

 

 

3. ルーターのポート開放設定

詳しくは書きませんが、WAN側からルーターにアクセスしてVPNを貼るためには、ポート開放、ポートフォワーディングをしてあげる必要があります。メーカーによって呼び方は様々ですが、要はWAN側からのアクセスをポート指定でLAN側のラズパイに投げてあげないと、VPNが貼れません。

L2TPの場合、以下のポートを開放してあげる必要があります。

esp プロトコル(プロトコル番号 50

isakmp/UDP(ポート番号 500

ipsec-nat-t/UDP(ポート番号 4500

l2tp/UDP(ポート番号 1701

#IPsec有りの場合は不要なので修正しました。2018/09/22
 

4. DDNSの設定

これもかなり重要な設定です。DNSとはと言う一般論のネットワーク話になるので、細かくは割愛しますが、、、基本的にフレッツ光とか、一般的なISPは固定グローバルIPなんてくれません。勿論お金を追加で払えばやってくれるとは思いますが、そうでなければ基本的には、グローバルIPがコロコロ変わります。

そうするとどうなるかと言うと、外部から自宅のルーターに接続するIPが変わるので、IP指定なんかでは辿り着けなくなりますね。(接続時点でのIPがわからないので。)
 
因みにQNAPではmyqnapcloudと言うDDNS(ダイナミックDNS)が無料で付いてくるので、そいつを使うと言うのもありです。
しかし今回はmydnsと言う国産無料DNSを使ってラズパイに設定してみたいと思います。mydnsの登録等は適当にググって貰いたいですが、これは無料の代わりに1週間に一度はIPを更新してあげないとアカウントが勝手に無効にされてしまうので、ラズパイのcrontabに仕込んで勝手にIP自動更新して貰いましょう。
基本的には10分間隔でIPをどしどし更新してもらおうと思います。
 
更新スクリプトは以下を参考にさせて貰いました。

http://yamamotoplog.blog38.fc2.com/blog-entry-184.html

 

 
 

5. Firewallの設定

通常Debianだと、iptablesとかを使うらしいんですが、ワタシは仕事でCentOSの方が良く使っているので、firewalldを使うことにしました。こっちの方が馴染みがあるので・・・

 

 
これで全部の設定はおしまいです。
 

最後の確認

最後にVPNクライアント側から接続を確認します。Windows/Mac/iPhoneそれぞれの設定があると思いますが、基本的には全部一緒です。

ただWindows 10だけ、レジストリを追加でいじらないといけないらしいので注意してください。

https://www.cup.com/staticip/manual/win10_l2tp.html

VPNタイプ:L2TP via IPsec
IPアドレス: DDNSのドメイン名 
ユーザー:作成したユーザ名
パスワード:作成したパスワード
事前共有キー:指定した文字列
 
 

スポンサーリンク

あわせて読みたい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です