この記事で作る構成
⇄
⇄
- プロトコル: WireGuard / UDP
- 用途: リモートアクセス
- 方針: split tunnel
- クライアント: 公式 WireGuard for Windows
Overview
概要と前提 #
OPNsenseにおけるWireGuardは、Instance(サーバー側の仮想インターフェース設定)と
Peer(接続を許可する相手)を組み合わせて構成します。OPNsense公式では、トンネル用アドレスは
物理的に別インターフェースが存在するかのように、独立したネットワークとして設計することが推奨されています。[1][2]
この記事のゴール #
Windows PCからWireGuardでOPNsenseへ接続し、LAN内のNAS・RDP・SSH・業務システムへ安全にアクセスできる状態を作ります。
前提とする接続方式 #
クライアントのインターネット全体はVPNへ流さず、LAN向け通信だけをトンネルへ送る split tunnel を採用します。
ただし、Instance / Peer / General / Firewall という構成の考え方は共通です。
- OPNsense管理UIにログインできること
- WAN側で UDP 51820 を利用できること
- 上位ルータ配下にOPNsenseがある場合は、UDP 51820 を OPNsense WAN に転送できること
- 接続先LANセグメントと重複しない WireGuard 用ネットワークを用意できること
- Windowsクライアントへ公式 WireGuard for Windows を導入できること
Sample Design
サンプル構成 #
記事内の説明は、次の例を使って統一します。数値はあくまでサンプルなので、本番では自社のアドレス体系に置き換えてください。
| 項目 | 値 | 意味 |
|---|---|---|
| LAN | 192.168.10.0/24 | 社内・自宅側の内部ネットワーク |
| WireGuardネットワーク | 10.10.10.0/24 | VPNトンネル専用セグメント |
| OPNsenseトンネルIP | 10.10.10.1/24 | Instanceに設定するアドレス |
| WindowsクライアントIP | 10.10.10.2/32 | Peerに割り当てる一意アドレス |
| 公開ホスト名 | vpn.example.jp | WANのグローバルIPまたはDDNS名 |
| Listen Port | 51820/UDP | WireGuard待受ポート |
10.10.10.2/32
10.10.10.0/24
10.10.10.1/24
192.168.10.0/24
10.10.10.1/24 のようにネットワークを含むCIDRで設定し、サーバー側Instanceに/32 や /128 を使わないよう案内しています。[1]Step 1
OPNsense側でWireGuard Instanceを作成する #
| 項目 | 設定例 | 補足 |
|---|---|---|
| Enabled | Checked | 有効化 |
| Name | HomeWireGuard | 任意の識別名 |
| Public Key / Private Key | 自動生成 | 歯車アイコンで新規生成 |
| Listen Port | 51820 | 他サービスと重複しないUDPポート |
| MTU | 1420 | PPPoEなら 1412 を検討[1] |
| Tunnel Address | 10.10.10.1/24 | WireGuard専用セグメント |
| Peers | 空欄 | 先にPeerを作るため、この時点では未指定 |
| DNS Server | 空欄 | Advanced mode時も基本は空欄。設定すると OPNsense 自身のDNS設定を上書きするためです。[1] |
保存後、もう一度 Instance を開いて Public Key を控えておきます。
この公開鍵は、あとで Windows クライアント設定に入れるサーバー側公開鍵です。[1]
Step 2
クライアント用Peerを作成する #
OPNsenseの現行ドキュメントでは、複数クライアントを配布する用途には
Peer generator の利用が案内されています。インスタンス選択、Endpointの保存、
アドレス自動採番、Configテキストの生成ができ、公開鍵だけが OPNsense 側に保存されます。秘密鍵は
OPNsense に保持されないため、生成した設定は安全に保管してください。[2][3]
推奨手順: Peer generator を使う #
VPN > WireGuard > Peer generatorを開きます。- 対象の Instance を選択し、クライアント名、接続先FQDN/ポート、必要なネットワーク、DNS を入力します。
- Address は
10.10.10.2/32のようなクライアント専用アドレスを割り当てます。現在の実装ではアドレス自動採番も利用できます。[3] - Keepalive intervalは25秒がおすすめ(NATやFW越え時の接続性観点から)
- DNSは通常空欄でOKですが、VPN先のDNSサーバーでホスト名を引かせたい場合はここで指定する必要があります。
- Enable WireGuardをチェック
- Store and generate next で公開情報を保存し、生成された Config をコピーして
client-windows.confとして安全に保存します。続いてPeers画面で Apply を実行します。[2]
生成し直した場合、Windows 側でも設定ファイルを再インポートしてください。[2]
手動でPeerを作る場合 #
Peer generator を使わない場合は、VPN > WireGuard > Peers で新規 Peer を作成し、
クライアント公開鍵とクライアント用の /32 アドレスを設定します。[1]
| 項目 | 設定例 | 補足 |
|---|---|---|
| Enabled WireGuard | Checked | 有効化 |
| Name | Windows-Laptop-01 | 端末が識別できる名称 |
| Public Key | クライアント公開鍵 | Windows側で生成した鍵 |
| Allowed IPs | 10.10.10.2/32 | このクライアントに割り当てる一意アドレス |
| Pre-shared Key | 任意 | 追加の安全策として利用可能[2] |
手動でPeerを作成したら、元の Instance に戻って作成済み Peer を紐づけ、保存して Apply します。[1]
手動作成時の client-windows.conf テンプレート
[Interface]
PrivateKey = <Windowsクライアントの秘密鍵>
Address = 10.10.10.2/32
DNS = 10.10.10.1
[Peer]
PublicKey = <OPNsense Instance の公開鍵>
Endpoint = vpn.example.jp:51820
AllowedIPs = 192.168.10.0/24, 10.10.10.0/24
DNSをトンネル越しで使う場合は、そのDNS宛先が AllowedIPs に含まれていることを確認してください。[1]
Step 3
インターフェースを割り当てと有効化 #
| 項目 | 設定例 | 補足 |
|---|---|---|
| Enable(有効) | Checked | インターフェースを有効化 |
| Description | HomeWireGuard | ルール作成時に見分けやすくする |
| IPv4 Configuration Type | None | 手動でIPを設定しない |
| IPv6 Configuration Type | None | 必要時のみ設定 |
OPNsense公式では、割り当てたインターフェースに IP を直接設定する必要はなく、
Instance に入れたトンネルアドレスが WireGuard 再起動後に自動反映されると案内しています。[1]
Gateway / Outbound NAT は必須ではありません。外部インターネットまでトンネルへ流す full tunnel にしたい場合だけ、
追加の NAT / Gateway 設定を行います。[1]
Step 4
Firewallルールを作成する #
公式手順では、WAN側でトンネル確立用のUDPを許可し、続いて
WireGuardインターフェース側で通してよい宛先を許可する二段構成です。[1][2]
WAN側ルール #
| 項目 | 設定例 | 補足 |
|---|---|---|
| Action | Pass | 受信許可 |
| Interface | WAN | WAN受信側 |
| Protocol | UDP | WireGuardはUDP |
| Destination | WAN address | 自機WAN |
| Destination Port | 51820 | InstanceのListen Portと一致 |
| Description | Allow WireGuard | 任意 |
WANルールの Source をそのIPまたはセグメントに絞ると公開面をさらに小さくできます。
WireGuardインターフェース側ルール #
| 項目 | 設定例 | 補足 |
|---|---|---|
| Action | Pass | トンネル内通信を許可 |
| Interface | HomeWireGuard | 割り当てたWireGuardインターフェース |
| Protocol | any | 最初は疎通確認しやすい設定で可 |
| Source | HomeWireGuard net | トンネルネットワーク |
| Destination | 192.168.10.0/24 | まずはLANだけを許可 |
OPNsense公式では、WireGuard側ルールの宛先は any にもできますが、
実運用においては必要なサブネット・必要なサーバーだけを許可する のがおすすめです。[1]
PPPoE環境や一部TCP通信で詰まる場合の MTU / MSS 調整
公式手順では、PPPoE 環境では Instance MTU を 1412 に下げる例が示され、
さらに必要に応じて Firewall > Settings > Normalization で MSS clamping を追加する方法が案内されています。
TCPだけ不安定、Webだけ開かない、といった症状がある場合に有効です。[1]
| 項目 | 設定例 |
|---|---|
| Interface | WireGuard (Group) |
| Description | WireGuard MSS Clamping IPv4 |
| Max MSS | 1380(PPPoEなら 1372) |
Step 5
Windowsクライアントに設定を投入する #
Windows側は 公式 WireGuard for Windows を使うのが最もシンプルです。インストーラは
WireGuard公式サイトから入手できます。[4]
- WireGuard for Windows をインストールします。
- OPNsense の Peer generator で保存した
client-windows.confを用意します。手動作成の場合は前述テンプレートを利用します。 - WireGuard for Windows に設定ファイルをインポートします。
- 対象トンネルを有効化し、接続を開始します。
OPNsense公式でも、NAT / firewall traversal を維持したい場合に Keepalive interval が有効と説明されています。[2]
client-windows.conf
[Interface]
PrivateKey = <クライアント秘密鍵>
Address = 10.10.10.2/32
DNS = 10.10.10.1
[Peer]
PublicKey = <OPNsense公開鍵>
Endpoint = vpn.example.jp:51820
AllowedIPs = 192.168.10.0/24, 10.10.10.0/24
AllowedIPs に 192.168.10.0/24 のようなLANセグメントを入れることで、
その宛先だけがトンネルへ送られます。もしクライアントの全通信をVPNへ流したい場合は、
公式手順どおり 0.0.0.0/0 や ::/0 を使いますが、その場合は OPNsense 側の NAT / ルーティング設計も追加で必要です。[1]
Step 6
接続確認 #
- Windowsクライアントでトンネルを有効化する
10.10.10.1(OPNsense側トンネルIP)へ疎通確認する- LAN側の代表ホスト(例:
192.168.10.10)へping、RDP、SSH などを試す - 必要に応じて名前解決を試し、DNS が通るか確認する
VPN > WireGuard > Statusで handshake と送受信量を確認する[2]
Operations
公開前に入れておきたいハードニング #
Troubleshooting
つながらないときの確認項目 #
Handshake が出ない
まず WAN 側の UDP 51820 許可、上位ルータのポート転送、Endpoint のFQDN/ポート、クライアント時刻の大きなずれを確認します。
Handshake は出るが LAN へ届かない
Peer の Allowed IPs、クライアント側の AllowedIPs、WireGuardインターフェース側ルールの宛先を見直してください。OPNsense公式でも、Allowed IPs が誤っているとパケットが静かに落ちると案内しています。[2]
ICMPは通るが、一部のWebやTCP通信だけ不安定
MTU / MSS の影響を疑います。PPPoE なら Instance MTU 1412 と Normalization の MSS clamping を試してください。[1]
DNS だけ失敗する
クライアントで指定した DNS 宛先が AllowedIPs に含まれているか確認します。Unbound DNS を全インターフェース登録で運用している場合は、新しい WireGuard インターフェース追加後に Unbound の reload が必要です。[1]
WireGuard メニューが見当たらない / 画面が違う
バージョン差分を確認してください。Peer generator 周辺は 24.1 系で段階的に改良されており、UI の見た目や項目配置はバージョンで少し変わります。[3]
Sources
参考情報 #
- OPNsense Documentation, WireGuard Road Warrior Setup
https://docs.opnsense.org/manual/how-tos/wireguard-client.html - OPNsense Documentation, Virtual Private Networking > WireGuard
https://docs.opnsense.org/manual/vpnet.html - OPNsense Documentation, 24.1 “Savvy Shark” Series(Peer generator関連の更新を含む)
https://docs.opnsense.org/releases/CE_24.1.html - WireGuard Official, Installation
https://www.wireguard.com/install/






