PR

自宅ラボとVPSをWireGuardで接続して、安全なVPNトンネルを構築する方法

※当サイトはアフィリエイト広告を利用しています

ネットワーク

自宅ラボ環境を運用していると、ふとこんな悩みが出てくることがあります。

  • 外部からラボ環境にアクセスしたいけど、安全な方法が分からない
  • VPSを使って自宅から外に出るゲートウェイが欲しい
  • ZabbixやSyslogなど、自宅にあるサーバーの通知を安全に外部に届けたい

私の場合、きっかけは「自宅ラボのアラートメールを外部に届ける手段がほしかった」ことでした。
たとえばProxmoxやWazuh、Zabbixなどで検知した異常をVPS経由でメール送信できれば、出先でもトラブルに気づくことができます。
また、VPSをリバースプロキシとして活用したり、自宅のSyslogをVPSに転送して一元管理したりと用途は広がると考えています。
こうした背景のもと、自宅にあるRaspberry PiとVPSをWireGuardで接続し、安全なVPNトンネルを構築することにしました。
この記事ではその手順や構成、つまずいたポイントを丁寧に解説していきます。

自宅ラボ環境の構築ではどのハードウェアやVPSを選ぶかも重要です。
もしこれから構築を検討している方は以下の記事も参考にしてみてください。

スポンサーリンク

構成

WireGuardによって10.0.0.0/24 の仮想ネットワークが構築され、 自宅ラボとVPSが安全に通信できるようになります。
経路設定を正しく行えばRaspberry PiをVPNゲートウェイとして、自宅内のミニPCなど他の端末からもVPSへアクセスすることが可能です。
詳しい設定は省略しますが、これにより自宅ラボ全体からVPSへの安全な通信経路を構築できるようになります。

前提条件と準備

自宅側(Raspberry Pi)

  • Raspberry Pi OS(Debianベース)
  • wireguardパッケージがインストール済み
sudo apt update
sudo apt install wireguard

VPS側(AlmaLinux)

  • AlmaLinux 8 以上
  • EPELとELRepoリポジトリの有効化
  • kmod-wireguard および wireguard-tools のインストール
sudo dnf install epel-release elrepo-release -y
sudo dnf install kmod-wireguard wireguard-tools -y

WireGuardモジュールが読み込まれているか確認

lsmod | grep wireguard

鍵の作成

両方の端末で秘密鍵と公開鍵を作成します。

wg genkey | tee private.key | wg pubkey > public.key
  • private.key:自分の秘密鍵。wg0.conf に指定
  • public.key:相手側に渡す公開鍵

生成された鍵は /etc/wireguard/ 配下など、適切な場所に保管してください。

WireGuardの設定ファイル

VPS側(サーバー) /etc/wireguard/wg0.conf

[Interface]
Address = 10.0.0.1/24
PrivateKey = サーバーの秘密鍵
ListenPort = 51820

[Peer]
PublicKey = クライアントの公開鍵
AllowedIPs = 10.0.0.2/32

自宅側 Raspberry Pi(クライアント) /etc/wireguard/wg0.conf

[Interface]
Address = 10.0.0.2/24
PrivateKey = クライアントの秘密鍵

[Peer]
PublicKey = サーバーの公開鍵
Endpoint = VPSのグローバルIP:51820
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 25

サービスの起動と有効化

sudo systemctl enable --now wg-quick@wg0

接続状態の確認

sudo wg
  • transfer に送受信量が表示されていれば通信成功
  • ping 10.0.0.1(PiからVPS)や ping 10.0.0.2(VPSからPi)で通信確認

iptablesの調整(VPS側)

VPSで iptables を使用している場合、以下のような設定が必要です:

# WireGuard用のUDPポートを許可
iptables -A INPUT -p udp --dport 51820 -j ACCEPT

# 仮想ネットワークの出力を許可
iptables -A OUTPUT -d 10.0.0.2 -p udp -j ACCEPT

# ICMPの許可(ping用)
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT

必要に応じて nat テーブルでの POSTROUTING 設定を行いますが、単純なラボ内通信であれば不要なケースもあります。

トラブルシューティングポイント

  • 鍵のミスマッチ:公開鍵と秘密鍵の対応が逆になっていないか確認
  • iptablesのブロック:OUTPUTチェーンでUDPが制限されていないか
  • 自宅ルーターのNAT越え:ISPのNAT環境下では、クライアントからの接続発信と PersistentKeepalive が重要
  • 通信状況の確認tcpdump -i eth0 udp port 51820 でパケットキャプチャを活用

まとめ

Raspberry PiとVPSをWireGuardで接続することでセキュアで柔軟なVPNネットワークを構築できました。
今後は以下のような展開を考えています

  • Proxmox仮想マシンのHTTPアクセスをVPS経由で外部公開
  • 自宅のログサーバーからVPSにログを転送
  • Gitやリモートバックアップ環境の構築

自宅ラボとVPSを連携させることでより現実的なIT環境を作り出せるはずです。

関連記事:目的にあわせたLinux環境の作り方ガイド

自宅でLinuxサーバーや自動化の検証環境を構築したい方向けに、VPSやミニPCを使ったはじめ方や比較記事を目的別にまとめました。
実際に手を動かしながら学びたい方におすすめです。

VPS初心者の方におすすめ

自宅ラボを始めたい方向け

比較して選びたい方向け

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