WireGuard で自宅にアクセス: サーバー、ピア、ファイアウォール、トンネルの確認
このページで確認する内容:
- OpenWrt に WireGuard サーバーインターフェース
wg0を作成する。 - クライアントピアを1つ追加する。
wg0を LAN のファイアウォールゾーンに入れる。- ハンドシェイク、トンネル IP への ping、トンネル経由の LuCI へのアクセス。
次の内容は確認していません。
- 公開 WAN の UDP ポート転送/ファイアウォール
- DDNS/ドメイン
- スマートフォン/Windows クライアントのローミング
- LAN 全体への転送/NAT
これらは導入環境に依存します。この LAN 内のテストでは代用できません。
Client 192.168.1.251 │ vmbr5 (lab LAN) ▼OpenWrt VM 200 192.168.1.2 wg0 10.10.0.1/24, UDP 51820 │ └── tunnel 10.10.0.0/24 client wg0 10.10.0.2/24実際の自宅アクセスでは、クライアントはインターネット側にいます。OpenWrt の WAN で UDP 51820 の転送/許可が必要です。この検証は LAN 側のみです。
apk add wireguard-tools kmod-wireguardwg --versioncat /proc/modules | grep wireguardこの検証では wireguard-tools v1.0.20260223 で、wireguard モジュールがロードされていました。
期待される結果wg コマンドがあり、wireguard モジュールがロードされている。
umask 077wg genkey > /tmp/wg-server.keywg pubkey < /tmp/wg-server.key > /tmp/wg-server.pubcat /tmp/wg-server.pub # only the public key goes to the clientクライアントも自身の鍵ペアを生成します。クライアントの秘密鍵をサーバーに送らないでください。 サーバーに必要なのはクライアントの公開鍵だけです。
期待される結果秘密鍵はデバイス上に残り、公開鍵だけをクライアントに渡す。
サーバーを設定する
Section titled “サーバーを設定する”uci set network.wg0=interfaceuci set network.wg0.proto='wireguard'uci set network.wg0.private_key='<server-private-key>'uci set network.wg0.listen_port='51820'uci set network.wg0.addresses='10.10.0.1/24'uci set network.wg0.auto='1'
uci set network.wg0_client=wireguard_wg0uci set network.wg0_client.public_key='<client-public-key>'uci set network.wg0_client.allowed_ips='10.10.0.2/32'uci set network.wg0_client.persistent_keepalive='25'
uci commit network/etc/init.d/network restart名前の付け方が重要です。
- インターフェースのセクション名は
wg0、ピアのタイプはwireguard_wg0です。サフィックスは一致させる必要があります。 - この検証では、インターフェース名を
wgにすると netifd がproto: noneと報告し、デバイスwg0が存在しませんでした。wg0に変更すると解決しました。wg0を使ってください。
確認:
wg showip -4 addr show wg0ubus call network.interface.wg0 status期待される結果netifd が proto=wireguard を認識し、wg0 にアドレスが設定される。
uci show firewall | grep -E "zone.*name|zone.*network"uci add_list firewall.@zone[0].network='wg0'uci commit firewall/etc/init.d/firewall reloadこの検証では @zone[0] が LAN ゾーンでしたが、環境によってインデックスは異なる場合があります。name='lan' のセクションを探してください。
wg0 を LAN に追加した後、クライアントから 10.10.0.1 に ping でき、LuCI にも到達できました。
期待される結果UDP 51820 に到達でき、トンネル IP 同士が通信できる。
クライアントの最小限の確認
Section titled “クライアントの最小限の確認”クライアントの設定は 022 にあります。サーバー側で次を実行します。
wg showクライアントがハンドシェイクした後、サーバーには次のように表示されます。
peer: <client-public-key> endpoint: 192.168.1.251:44421 allowed ips: 10.10.0.2/32 latest handshake: ... transfer: ...この検証のクライアント:
- 3秒前にハンドシェイク
transfer 124 B received, 180 B sent10.10.0.1への ping は 4/4 成功- HTTP
http://10.10.0.1/で LuCI が返された
実際の WAN で必要になること
Section titled “実際の WAN で必要になること”- 公開 IP/ポート転送: WAN の UDP 51820 → OpenWrt
- WAN の入力ファイアウォールでその UDP を許可する
- DDNS/固定ホスト名
- クライアントの
Endpointには 192.168.1.2 ではなく公開アドレスを使う - LAN 全体にアクセスするには、サーバー側ピアの
allowed_ipsとクライアント側のAllowedIPsに LAN のプレフィックスを含め、戻りのルーティングと NAT も必要 - 「トンネル IP に ping が通る」を「自宅の LAN 全体に到達できる」と同一視しないでください
よくある失敗
Section titled “よくある失敗”wg0 が存在しない / proto が none
Section titled “wg0 が存在しない / proto が none”- インターフェースのセクション名とピアのタイプのサフィックスが一致していない
wireguard-tools/kmod-wireguardがない- ネットワークを再起動していない
wg show、ubus status、logreadを確認する
ハンドシェイクしない
Section titled “ハンドシェイクしない”- クライアントとサーバーの公開鍵を取り違えている
- エンドポイント/ポートが間違っている
- ファイアウォールが UDP を許可していない
- 秘密鍵のパーミッション/内容が間違っている
- WireGuard のハンドシェイクは時刻同期に依存しませんが、鍵が間違っていれば失敗します
トンネルの ping が通らない
Section titled “トンネルの ping が通らない”allowed_ipsにピアのトンネル IP が含まれていない- インターフェースにアドレスがない / down になっている
- ファイアウォールゾーン
- クライアントのルートがエンドポイント自体をトンネルに送っている(ループ)
トンネル IP には ping が通るが LAN に到達できない
Section titled “トンネル IP には ping が通るが LAN に到達できない”- クライアントの AllowedIPs に LAN のプレフィックスがない
- サーバー側に転送/NAT/戻りのルートがない
- ファイアウォールの forward が許可されていない
- トンネルが動作していることと、LAN が動作していることを同一視しないでください
E2 検証結果(2026-10-20)
Section titled “E2 検証結果(2026-10-20)”- 環境: OpenWrt 25.12.6 x86 VM 200、
wg0は10.10.0.1/24、UDP 51820。PVE netns クライアントは10.10.0.2/24。 - サーバー:
wg showにピアが表示され、ハンドシェイクが成功。転送量は 1.47 KiB/1.90 KiB。wg0は up。 - クライアント: ハンドシェイク成功、トンネル ping 4/4、HTTP 200(LuCI)。
- 未検証: WAN のポート転送/ファイアウォール、DDNS、スマートフォン/Windows、LAN への転送、NAT/戻りのルート。
- レシピ:
tests/recipes/wireguard-server-25.12.md。
情報源とレビュー
Section titled “情報源とレビュー”- これは E2 の部分的な検証です。LAN 側のサーバーとトンネルは検証しましたが、実際の WAN、モバイルクライアント、LAN への転送は検証していません。
- 秘密鍵はデバイス上に保管し、リポジトリ、スクリーンショット、チャットには絶対に載せないでください。
- 独立したレビュアーはいません。結論はこの VM/netns 環境に限られます。
出典
独立した OpenWrt の実践ノートです。各ページにファームウェア、デバイス、パッケージマネージャー、元に戻す手順を明記しています。
アイコン:Solar by 480 Design, CC BY 4.0