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

Homebridge
スポンサーリンク

今回はちょっとした備忘録代わりです。

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だと思います。

Raspberry Pi セットアップ(書き込み~SSH設定まで) - Qiita
Raspberry Pi セットアップ(書き込み~SSH設定まで) --- # 注意 (2018/12追記) 本記事の記述は、一部古くなっており、非推奨の事項があります。 新規にRaspberry Pi をヘッドレス(モニタ無し...

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

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

良く知らなかったんですが、FREEのVPNサーバ/クライアントソフトで、Linuxだけじゃなく、Windows/Mac/Solaris/FreeBSDとか色々な環境で動くみたいです。インストールの全体手順はこんな感じです。

  1. VPNサーバのインストール
  2. VPNサーバの設定
  3. ルーターのポート開放
  4. DDNSの設定
  5. Firewallの設定

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

スポンサーリンク

VPNサーバのインストール

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

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

スポンサーリンク

VPNサーバの設定

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

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

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

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

esp プロトコル(プロトコル番号 50)
isakmp/UDP(ポート番号 500)
ipsec-nat-t/UDP(ポート番号 4500)
l2tp/UDP(ポート番号 1701) #IPsec有りの場合は不要なので修正しました。

DDNSの設定

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

自動でIPアドレスを更新するシェルを書いてみた [私的MyDns.jp] perlとシェルスクリプト
自動でIPアドレスを更新するシェルを書いてみた のページ

IP更新期間については、MyDNSが8日間IP通知がない場合にサーバから警告が出てしまうので、このシェルでは7日間(約1000回)のタイミングで強制的にIP通知するようにシェルを改版しています。

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のドメイン名 
  • ユーザー:作成したユーザ名
  • パスワード:作成したパスワード
  • 事前共有キー:指定した文字列

コメント

タイトルとURLをコピーしました