OPNsenseでWireGuard VPNを構築し、 Windowsクライアントから接続する手順

OPNsenseでWireGuard VPNを構築し、 Windowsクライアントから接続する手順

4 min read

Network How-To

自宅・拠点・社内のOPNsenseをWireGuardサーバーとして構成し、Windows PCから安全に接続するための実践手順です。
本記事は「社内LANや自宅LANへ入る」用途を想定した split tunnel 構成を前提にしています。手順の骨格は
OPNsense公式の WireGuard Road Warrior Setup と WireGuard一般解説、Windows向け公式インストーラ案内に準拠しています。[1][2][4]

想定時間: 20〜30分
更新日: 2026-03-13

この記事で作る構成

Windows Client

WireGuard Tunnel

OPNsense
  • プロトコル: 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 を採用します。

クライアントアプリ #

Windows側は 公式 WireGuard for Windows を使います。インストーラは WireGuard 公式サイトで提供されています。[4]

注意: OPNsenseはバージョンによって画面の配置や項目名が前後することがあります。
ただし、Instance / Peer / General / Firewall という構成の考え方は共通です。
  • OPNsense管理UIにログインできること
  • WAN側で UDP 51820 を利用できること
  • 上位ルータ配下にOPNsenseがある場合は、UDP 51820 を OPNsense WAN に転送できること
  • 接続先LANセグメントと重複しない WireGuard 用ネットワークを用意できること
  • Windowsクライアントへ公式 WireGuard for Windows を導入できること

Sample Design

サンプル構成 #

記事内の説明は、次の例を使って統一します。数値はあくまでサンプルなので、本番では自社のアドレス体系に置き換えてください。

項目意味
LAN192.168.10.0/24社内・自宅側の内部ネットワーク
WireGuardネットワーク10.10.10.0/24VPNトンネル専用セグメント
OPNsenseトンネルIP10.10.10.1/24Instanceに設定するアドレス
WindowsクライアントIP10.10.10.2/32Peerに割り当てる一意アドレス
公開ホスト名vpn.example.jpWANのグローバルIPまたはDDNS名
Listen Port51820/UDPWireGuard待受ポート
Windows Client
10.10.10.2/32
WireGuard Tunnel
10.10.10.0/24
OPNsense
10.10.10.1/24
LAN
192.168.10.0/24
ポイント: OPNsense公式では、Instance側のトンネルアドレスは
10.10.10.1/24 のようにネットワークを含むCIDRで設定し、サーバー側Instanceに
/32/128 を使わないよう案内しています。[1]

Step 1

OPNsense側でWireGuard Instanceを作成する #

1

メニュー #

VPN > WireGuard > Instances を開き、+ で新規追加します。[1]

項目設定例補足
EnabledChecked有効化
NameHomeWireGuard任意の識別名
Public Key / Private Key自動生成歯車アイコンで新規生成
Listen Port51820他サービスと重複しないUDPポート
MTU1420PPPoEなら 1412 を検討[1]
Tunnel Address10.10.10.1/24WireGuard専用セグメント
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 を使う #

  1. VPN > WireGuard > Peer generator を開きます。
  2. 対象の Instance を選択し、クライアント名、接続先FQDN/ポート、必要なネットワーク、DNS を入力します。
  3. Address は 10.10.10.2/32 のようなクライアント専用アドレスを割り当てます。現在の実装ではアドレス自動採番も利用できます。[3]
  4. Keepalive intervalは25秒がおすすめ(NATやFW越え時の接続性観点から)
  5. DNSは通常空欄でOKですが、VPN先のDNSサーバーでホスト名を引かせたい場合はここで指定する必要があります。
  6. Enable WireGuardをチェック
  7. Store and generate next で公開情報を保存し、生成された Config をコピーして
    client-windows.conf として安全に保存します。続いて Peers 画面で Apply を実行します。[2]

注意: Peer generator で生成した秘密鍵は OPNsense には保存されません。
生成し直した場合、Windows 側でも設定ファイルを再インポートしてください。[2]

手動でPeerを作る場合 #

Peer generator を使わない場合は、VPN > WireGuard > Peers で新規 Peer を作成し、
クライアント公開鍵とクライアント用の /32 アドレスを設定します。[1]

項目設定例補足
Enabled WireGuardChecked有効化
NameWindows-Laptop-01端末が識別できる名称
Public Keyクライアント公開鍵Windows側で生成した鍵
Allowed IPs10.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

インターフェースを割り当てと有効化 #

1

インターフェース割り当て #

Interfaces > Assignments で生成された wgX デバイスを追加し、分かりやすい説明名を付けます。[1]

 

2

インターフェースの有効化 #

Interfaces > OPTX で”インターフェイスを有効化”にチェックを入れて保存→”変更を適用”をクリックする

項目設定例補足
Enable(有効)Checkedインターフェースを有効化
DescriptionHomeWireGuardルール作成時に見分けやすくする
IPv4 Configuration TypeNone手動でIPを設定しない
IPv6 Configuration TypeNone必要時のみ設定

OPNsense公式では、割り当てたインターフェースに IP を直接設定する必要はなく、
Instance に入れたトンネルアドレスが WireGuard 再起動後に自動反映されると案内しています。[1]

補足: 本記事は split tunnel 構成のため、クライアントのインターネット全体を VPN へ逃がすための
Gateway / Outbound NAT は必須ではありません。外部インターネットまでトンネルへ流す full tunnel にしたい場合だけ、
追加の NAT / Gateway 設定を行います。[1]

Step 4

Firewallルールを作成する #

公式手順では、WAN側でトンネル確立用のUDPを許可し、続いて
WireGuardインターフェース側で通してよい宛先を許可する二段構成です。[1][2]

WAN側ルール #

項目設定例補足
ActionPass受信許可
InterfaceWANWAN受信側
ProtocolUDPWireGuardはUDP
DestinationWAN address自機WAN
Destination Port51820InstanceのListen Portと一致
DescriptionAllow WireGuard任意
運用の勘どころ: 固定IPの拠点や踏み台からだけ接続する運用なら、
WANルールの Source をそのIPまたはセグメントに絞ると公開面をさらに小さくできます。

WireGuardインターフェース側ルール #

項目設定例補足
ActionPassトンネル内通信を許可
InterfaceHomeWireGuard割り当てたWireGuardインターフェース
Protocolany最初は疎通確認しやすい設定で可
SourceHomeWireGuard netトンネルネットワーク
Destination192.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]

項目設定例
InterfaceWireGuard (Group)
DescriptionWireGuard MSS Clamping IPv4
Max MSS1380(PPPoEなら 1372

Step 5

Windowsクライアントに設定を投入する #

Windows側は 公式 WireGuard for Windows を使うのが最もシンプルです。インストーラは
WireGuard公式サイトから入手できます。[4]

  1. WireGuard for Windows をインストールします。
  2. OPNsense の Peer generator で保存した client-windows.conf を用意します。手動作成の場合は前述テンプレートを利用します。
  3. WireGuard for Windows に設定ファイルをインポートします。
  4. 対象トンネルを有効化し、接続を開始します。
補足: NAT配下やモバイル回線などでセッション維持が不安定な場合は、Keepalive interval の利用を検討します。
OPNsense公式でも、NAT / firewall traversal を維持したい場合に Keepalive interval が有効と説明されています。[2]
split tunnel のクライアント設定例
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

AllowedIPs192.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

公開前に入れておきたいハードニング #

Peerごとに /32 を割り当てる #

各クライアントに一意な /32 を割り当てると、端末単位でルールやログを追いやすくなります。[1]

必要な宛先だけ通す #

WireGuard インターフェース側のルールは LAN net や特定サーバー群に絞り、any のままにしない方が安全です。

固定拠点からだけなら Source 制限 #

WAN ルールの送信元を固定IPに絞れれば、到達可能な相手をさらに限定できます。

必要に応じて PSK を追加 #

OPNsenseのPeerには pre-shared key を追加でき、公式も追加の安全策として案内しています。[2]

状態確認は Status / Log File #

Handshakes、データ量、設定エラーの確認は StatusLog File が基本です。[2]

DNSも最小権限で #

トンネル内DNSを使うなら、到達先・AllowedIPs・Unbound 側のインターフェース登録を一緒に確認してください。[1]

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

参考情報 #

  1. OPNsense Documentation, WireGuard Road Warrior Setup
    https://docs.opnsense.org/manual/how-tos/wireguard-client.html
  2. OPNsense Documentation, Virtual Private Networking > WireGuard
    https://docs.opnsense.org/manual/vpnet.html
  3. OPNsense Documentation, 24.1 “Savvy Shark” Series(Peer generator関連の更新を含む)
    https://docs.opnsense.org/releases/CE_24.1.html
  4. WireGuard Official, Installation
    https://www.wireguard.com/install/
Updated on 2026年3月13日

What are your feelings

  • Happy
  • Normal
  • Sad