前回、v6プラス環境からRaspberry Pi 4でPPPoE接続を行って、インターネットからRaspberry Piへ直接アクセスできるようにしました。
Raspberry Piに割り当てられたグローバルIPアドレスが変わっても、外出先からRaspberry Piにアクセスできるように。DDNSサービスの1つ、No-IPにグローバルIPアドレスを自動登録するように設定しました。
次のステップとしまして。
外出先にてスマートフォンやPCから、自宅のRaspberry PiにVPN接続できるように設定してみようと思います。
VPN接続中は「外出先から、自宅のRaspberry Piを経由してインターネット接続できる」状態になります。
現段階では「外出先から自宅の機器へのアクセス」はできませんのでご注意下さい。追々続きの記事にさせて頂こうと思います。
※23.1.16追記:
Raspberry Pi 4をVPNサーバ(ルータ)にする、新しい記事がございます。
新しい記事では、外出先から自宅の機器へのアクセスが可能です。
以下、古い記事になります。
目次
IPsec/L2TP VPNサーバインストール手順 Raspberry Pi 4 64ビット版Ubuntu 20.04.1 LTS Server
使用する自動セットアップスクリプト
VPNサーバ構築と言いますと、なんだか難しくて面倒そうですが。
インストールはなんとコマンド1行
お手軽VPNサーバ構築になります。こちらを使用させて頂きました。
タイトルにあります通り、自動セットアップスクリプトはUbuntuのほか、Debian、CentOSに対応しているそうです。今回はRaspberry Pi 4のUbuntu 20.04.1 LTS Server 64ビット版で実行してみました。
インストール手順は3通り選べるようです。
Option 1の方法、コマンド1行でインストールすると、ユーザ名/パスワード/共有キー(PSK)が自動生成されます。具体的にはこのような感じです。
VPNの資格情報を自分で決めたい場合は、Option 2の方法で、vpnsetup.shファイルを編集します。
Option 3は、環境変数で資格情報を設定しておく方法になります。
ここではOption 3の方法でインストールしてみたいと思います。
Libreswan/xl2tpd自動セットアップ環境変数の例
3つの環境変数、PSK(事前共有キー)、ユーザ名、パスワードを予め決めて、スクリプトに埋め込みます。
wget https://git.io/vpnsetup -O vpnsetup.sh && sudo \
VPN_IPSEC_PSK='事前共有キー(パスフレーズ)' \
VPN_USER='VPNユーザ名' \
VPN_PASSWORD='VPNパスワード' \
sh vpnsetup.sh
VPNサーバインストール前にPPPoE接続しておきましょう
スクリプトを実行する前に、PPPoE接続して、Raspberry PiにグローバルIPアドレスを割り当てておきます。
では、実際にスクリプトを実行します。
実行すると、各種パッケージのインストールが開始されます。インストールが完了すると、VPN接続に必要な情報が表示されます。先ほど環境変数で設定したユーザ名やパスワードが正しく反映されましたでしょうか?
サービスを確認すると、ipsecやxl2tpdサービスが自動起動しています。また/etc/xl2tpd/xl2tpd.conf等、関連する設定ファイルも生成されています。
ppp0インタフェースに割り当てられた、PPPoE接続のグローバルIPアドレスになっていて、希望通り外出先からVPN接続を行えそうです。
以上でRaspberry PiでIPSec/L2TP仕様のVPNサーバを構築することができました。
簡単すぎて恐ろしい感じです。hwdsl2さん、Thank you so much!
iPhoneから実際にRaspberry PiへVPN接続してみました
構築したVPNサーバは、標準的なIPSec/L2TPに準拠しているため、クライアント側に特別なソフトウェアをインストールする必要ありません。
iPhoneやWindows 10は標準でIPSec/L2TPに対応しているため、設定を作成すればすぐ接続することができます。
iPhoneの場合、設定→一般→VPN→VPN構成を追加から、設定を作成できます。
タイプはL2TPを選択します。 サーバはIPアドレスではなく、DDNSのホスト名を入力します。
「すべての信号を送信」を有効にします。これで自宅経由でインターネットに接続できるようになります。
実際にiPhoneでVPN接続すると、Raspberry Pi側にppp1インタフェースが作成されて、192.168.42.1というIPアドレスが割り当てられています。iPhone側は、192.168.42.10というIPアドレスが割り当てられています。VPN接続した状態で、iPhoneでインターネットアクセスしてみます。Raspberry Pi側でppp1インタフェースを確認しますと。確かに192.168.42.10=iPhoneのインターネットアクセスをRaspberry Piが中継していることが確認できました。
以上のように。Raspberry PiをVPNサーバにして、外出先からVPN接続、Raspberry Pi経由でインターネットへアクセスできるようになりました。
VPNサーバはIPSec/L2TPに準拠した仕様ですが、パッケージの作成や設定ファイルの作成は直接行わず、スクリプト1本でインストールできてしまいました。
VPNリモートアクセスができたとはいえ、今のところ外出先から自宅の機器へのアクセスはできず、インターネットの利用のみです。
これは使用した自動セットアップスクリプトの仕様のためで、ping(ICMPパケット)のみ通す設定になっているようです。
次回は外出先から自宅の機器へアクセスできるように設定してみようと思います。
ではまた!(まだあまり試せていないため、期待せずお待ち下さい