LoginSignup
1
4

More than 1 year has passed since last update.

Raspberry Piを使ってL2TP/IPSecのVPNサーバーを作った

Posted at

こんにちは。Natsuです。最近はクックパッドでインターンシップをする傍ら、引っ越し準備を進めています。

さて、海外に引っ越すにあたって、実家のネットワークを中継して日本のサービスにアクセスするという規約違反をしたかったので、ラズパイ(armv7)で何とかVPNを立てました。

注意:今回は、armv8だとサポートが明記されていないDocker imageを使いました。

選択肢

  • L2TP/IPSec
    • ほとんどのOSで標準に接続できる
    • UDPを使ってネットワーク層で通信している
    • 速度が安定する
  • PPTP
    • 平分で通信するため選択肢に入れるべきでもなかった
  • OpenVPN
    • セキュリティは充実しておりLinuxから繋ぎやすいが、その他のOSからの接続設定が面倒臭い
  • その他、WireGuardなど
    • 検討してない

ということで、L2TP/IPSecを導入することにしました。

基本設定

  • ソフトウェアをアップデートする
  • ユーザ名、パスワードを変える
  • ファイアーウォールを設定する
  • 固定IPにする

省略します。

あと、Dockerを使うのでDockerも入れておきます。

ipsec-vpn-server

IPSec VPNサーバーを立てるための便利なスクリプトをDocker化したプロジェクトがあります。READMEに書いてある通り、イメージを引っ張ってきて実行するだけでした。

$ docker pull hwdsl2/ipsec-vpn-server
$ docker run \
    --name ipsec-vpn-server \
    --restart=always \
    -v ikev2-vpn-data:/etc/ipsec.d \
    -p 500:500/udp \
    -p 4500:4500/udp \
    -d --privileged \
    hwdsl2/ipsec-vpn-server

ネットワークのポート転送設定

ルーターの管理画面からポート500, 4500を解放します。

例:グローバルの500, 4500を192.168.x.x(ラズパイの固定IP)の500, 4500にマッピングします。
image.png

ファイアーウォールの許可設定

ラズパイではufwを使っているので、500と4500のポートを許可しました。

$ sudo ufw limit 500/udp
$ sudo ufw limit 4500/udp

接続情報の確認

$ docker logs ipsec-vpn-server

ログを通して接続情報を確認できます。L2TP/IPSec接続をするには、サーバーIP、PSK(事前共有鍵)とユーザーのログイン、パスワードが必要です。

注意!!!!!:家庭のネットワーク環境でGlobal IP Addressが固定になっていない場合(マンションなど)、Dynamic DNS (DNNS)を設定する必要があります!!!(ここでは説明省略)

接続テスト

スマホでWifiをOFFにして、接続テストをしました。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4