Raspberry Piで構築したIPsec VPNサーバ経由で外出先から自宅LANの機器にアクセスするには

前回、Ubuntu 20.04.1 LTS ServerをインストールしたRaspberry Pi 4で、IPSec/L2TP VPNサーバを構築してみました。

使用したVPNサーバ自動構築スクリプトは、外出先からVPN経由でインターネットに安全に(IPSecで暗号化して)アクセスする事を目的としており、自宅LANの機器へのアクセスはできませんでした。

本記事では、ufwの設定を調整して、外出先から自宅LANの機器へアクセスできるようにしてみたいと思います。


xl2tpd/ipsec版VPNサーバの自宅LAN機器アクセス設定

Wi-Fiルータにルーティング追加

前回構築したVPNサーバは、VPNクライアントに192.168.42.0/24のIPアドレスを付加しました。これは/etc/xl2tpd/xl2tpd.confファイルで設定されています。

sudo vi /etc/xl2tpd/xl2tpd.conf

こちらの設定に合わせて、Wi-Fiルータにルーティングを追加します。

  • 宛先アドレス: 192.168.42.0/255.255.255.0
  • ゲートウェイ: Raspberry PiのIPアドレス
  • メトリック: 初期値の15

これで、自宅LAN内の機器へ「192.168.42.xxx」の機器=外出先のVPNクライアントからアクセスがあった場合、Wi-FiルータがパケットをRaspberry Piに転送してくれるようになります。

ufwのルール追加

192.168.42.0のセグメントから、自宅内の192.168.xxx.0のセグメントへ通信できるように、ファイアウォールの設定を変更します。

次のコマンドを実行しました。

sudo ufw route allow from 192.168.42.0/24 to 192.168.xxx.0/24
sudo ufw route allow from 192.168.xxx.0/24 to 192.168.42.0/24
sudo ufw reload

xxxの部分は、自宅LANに合わせて変更して下さい。 これでVPNクライアントと自宅LAN機器とのファイアウォールが解除されました。

NAT転送設定

最後にufwにNATルールを追加して、VPNクライアントと自宅LAN機器間でパケットのやり取りを行えるようにします。

sudo vi /etc/ufw/before.rules

最後尾に次の内容を追加しました。

# VPNリモートアクセス設定
*nat
:POSTROUTING - [0:0]
:PREROUTING - [0:0]
-F
-A POSTROUTING -s 192.168.42.0/24 -o eth0 -j MASQUERADE

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

77行目以降が追加した内容になります。

設定追加後、ファイアウォール設定をリロードします。

sudo ufw reload

以上で外出先から自宅のLAN機器へアクセスできるように設定が完了しました。


Raspberry Pi再起動後、VPN経由で自宅LAN機器に接続できない場合

Raspberry Piを再起動すると、外出先から自宅LAN機器へアクセスできない場合がありました。次の原因が考えられます。

ppp0(IPv4 PPPoE)接続されていない

そもそものIPv4 PPPoEが接続されておらず、ppp0インタフェースが無い場合があります。

その場合、もう一度再起動してppp0接続されるかどうか確認します。

Raspberry Pi再起動後は必ずppp0インタフェースが存在するかどうか確認することをお勧めします。

グローバルIPアドレスのDDNS登録タイミング

外出先からVPN接続する際、DDNSのホスト名でアクセスしますが、再起動直後はDDNSに記録されたIPアドレスと実際のIPアドレスが違っている場合があります。

VPN接続できない場合は、しばらく時間を開けてから、もう一度VPN接続します。

sudo ufw reloadしてみる

うーん。もしかして、私の設定が不十分なのかもしれません。

VPN接続できているにも関わらず、自宅LAN機器へアクセスできない場合、ufw reloadを行うとアクセスできるようになります。

sudo ufw reload

なにかサービスや設定を読み込むタイミングに問題があるのかもしれません。

さしあたり、Raspberry Pi再起動後は、ppp0の確認と、ufw reloadによるファイアウォール設定の再読み込みを行っております。


以上で一応、Raspberry PiでVPNサーバを構築し、外出先から自宅のLAN機器へアクセスできるようになりました。

一応というのは。実は、アクセス速度はあまり早くありません。IPSecの暗号化にCPUパワーが必要なのかと思いましたが、VPN接続中のRaspberry Pi 4のCPU負荷はそれほど無いため、どうも違う感じがします。

もしかすると、おうちの環境、回線の問題なのかもしれません。とはいえ、実用的な速度は出ています。

それほど手間なく構築できますので、よろしければ試してみて下さい。

スポンサーリンク

フォローする

スポンサーリンク