OPNsense 系列七:WireGuard 安装重整理
说明
接着过去文章 IPv4<->Wireguard<->IPv4组网服务: LANraragi 实例 内容,现更新OPNsense 作为 WireGuard 客户端连接公网服务器的记录。
插件方式
获取客户端文件
在 WireGuard
服务器获取配置文件,示例:
[Interface]
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
Address = 10.10.10.2/24
DNS = 114.114.114.114
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.10.10.0/24
PersistentKeepalive = 25
Endpoint = [DOMAIN]:[PORT]
安装插件
在 系统 -> 固件 -> 插件
中安装 os-wireguard
或 wireguard-go
。
安装完成后刷新网页,在 VPN : WireGuard
进行配置。
配置 端点
在 VPN : WireGuard : 端点
,“+”添加端点。
项目 | 值 | 备注 |
---|---|---|
启用 | 勾选 | |
名称 | Example_Client |
任意取 |
公钥 | …… | 来自配置文件 PublicKey 内容 |
共享密钥 | …… | 来自配置文件 PresharedKey 内容 |
允许的IP | 10.10.10.0/24 |
意思是划分的网段,若掩码为 24 位,则左后的 0 任意取值 |
端点地址 | [DOMAIN] |
来自配置文件 Endpoint 中的 [DOMAIN] 内容 |
端点的端口 | [PORT] |
来自配置文件 Endpoint 中的 [PORT] 内容(52822) |
Keepalive Interval | 25 | 来自配置文件 PersistentKeepalive 内容 |
保存并应用。
配置 本地(Local)
在 VPN : WireGuard : 本地
,“+”添加端点。
项目 | 值 | 备注 |
---|---|---|
启用 | 勾选 | |
名称 | Example_Local |
任意取 |
实例 | 1 | 此项不可修改,显示已创建端点数量 |
公钥 | …… | 来自配置文件 PublicKey 内容 |
私钥 | …… | 来自配置文件 PrivateKey 内容 |
侦听端口 | 52820 |
来自配置文件 Endpoint 中的 [PORT] 内容,建议与其相同,否则延迟 +10ms 左右 |
隧道地址 | 10.10.10.2/24 |
来自配置文件 Address 内容,为分发的固定内网 IP |
对等 | Example_Client |
选择创建的端点 |
禁用路由 | 不勾选 |
保存并应用。
启动服务
在 VPN : WireGuard
勾选“启用 WireGuard”,应用。
分配并配置接口
在“启用 WireGuard”服务后,在 接口 -> 分配
中添加接口,并保存。
选中 wg1
进入配置并保存 。
项目 | 值 | 备注 |
---|---|---|
启用 | 勾选 | |
锁定 | 勾选 | |
描述 | wg1 |
|
阻止私有网络 | 不勾选 | |
拦截bogon网络 | 不勾选 | |
IPv4配置类型 | 静态IPv4 |
|
IPv4地址 | 10.10.10.2/24 | 来自配置文件 Address 内容,下拉栏选择 24 |
创建防火墙规则
在 防火墙 : 规则 : wg1
中,添加规则。
建议规则独立通行,每个端口或服务都独立规则。
进(in)规则
项目 | 值 | 备注 |
---|---|---|
操作 | 通过 | |
接口 | wg1 |
|
方向 | in |
|
TCP/IP版本 | IPv4 |
|
协议 | any |
建议针对端口或服务单独选择 |
源 / 反转 | 不勾选 | |
源 | wg1 网络 |
|
目标 / 反转 | 不勾选 | |
目标 | wg1 地址 |
出(out)规则
出(out)规则其实就是 目标
和 源
对调了。
项目 | 值 | 备注 |
---|---|---|
操作 | 通过 | |
接口 | wg1 |
|
方向 | out |
|
TCP/IP版本 | IPv4 |
|
协议 | any |
建议针对端口或服务单独选择 |
源 / 反转 | 不勾选 | |
源 | wg1 地址 |
|
目标 / 反转 | 不勾选 | |
目标 | wg1 网络 |
保存并应用更改。
查看状态和握手
在 VPN : WireGuard : 状态
和 VPN : WireGuard : 握手
查看情况。
计划任务
因为重启(或者 IPv6 地址变化、防火墙重启)后 ,Wireguard 客户端默认非开机启动,建议添加到计划任务中。
参考 OPNsense 防火墙系列三:阿里云 aliddns + 计划任务 - Yogile - 博客园 (cnblogs.com) 的计划任务的固定命令配置。
在 大厅 -> 服务 中,重启 configd 服务。
在 系统 -> 设置 -> 调度任务 中,点击 + 添加,选择 命令 为 actions_ping_wireguard 中的 description ,其他自定义即可。
示例 /usr/local/opnsense/service/conf/actions.d/actions_ping_wireguard.conf
:
[restart]
command:python3 /home/wireguard/ping_wireguard.py
parameters:
type:script
description:ping_wireguard
message:ping adn wireguard restart
python 程序在 Yogile / opnsense_tools ,我只是改了 ping_subprocess
的程序名。
config.ini
设置为:
[HOST]
host = 10.0.1.1
[PORT]
port = 80
[RESULT]
result = False
[COMMAND]
command = pluginctl -s wireguard restart
在执行程序前,通过 pluginctl -S wireguard
查看运行情况。若显示 []
,则在 OPNsense 中开启 Wireguard 服务。
参考:
命令行安装
安装配置
22.7 版本的 OPNsense 只提供了
wireguard-go
这样一个服务器的插件,若仅实现客户端的功能可以通过下载 FreeBSD 源的软件。
pkg install wireguard
更多请参阅官方: Installation - WireGuard 。
在 OPNsense 中, Wireguard 客户端默认配置路径为 /usr/local/etc/wireguard
,于该文件夹下创建 wg0.conf
配置文件,并将从 wg-easy
容器 Web 服务中的配置文件下载粘贴。
[Interface]
PrivateKey = xxxxxxxxxxxxxxxxxxxxxx
Address = 10.0.1.2/24
DNS = 114.114.114.114
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxx
PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.0.1.0/24
PersistentKeepalive = 25
Endpoint = xxxxxxxxxxxxxxxx:51822
保存后执行:
wg-quick up <默认配置路径>/wg0.conf
防火墙设置
参考 插件方式配置
即可。