OPNsense WireGuard使用记录

目的

  1. 由于公司网络和家庭网络不互通,在 OPNsense 上使用 WireGuard 把公司和家庭网络组成局域网,方便在公司访问家中 NAS 等设备
  2. 由于电信封了 80,443 等常用端口,又不想访问域名时加上端口号,组局域网后即可使用 80,443 等

环境说明

软件版本

软件 版本号
OPNsense 19.7.7-amd64
OPNsense 插件 WireGuard 1.1
Windwos WireGuard 0.0.35

VPN 网段 10.20.6.0/24
家庭内网 10.1.1.0/24

机器 IP 规划

机器 IP
OPNsense 10.20.6.1
公司 Windwos 10.20.6.2

注意:家庭网络需要有公网 IP


OPNsense 设置

安装

系统->固件->插件->os-wireguard->+;安装完成后刷新,可在VPN中找到WireGuard

设置 OPNsense WireGuard

切换到本地选项卡,点+添加一个本地配置

配置项 推荐值
名称 自定义
公钥 不填,等会保存后会自动生成
私钥 不填,等会保存后会自动生成
监听端口 自定义,默认 51820
DNS 服务器 自定义,可不填
隧道地址 10.20.6.1/24 按照上面规划设置
对等 不选,等会再回来选择
禁用路由 不选

保存

设置端点

连接 opnsense ssh,输入以下命令生成公私钥

1
wg genkey | tee privatekey | wg pubkey > publickey

生成后复制公钥备用,运行命令生成共享密钥

1
2
root@OPNsense:/tmp # wg genkey
sL1Etfg+M4XTEsjzCLF3mk1gzZS6hwdkgwDkpDS+ylM=

切换到端点选项卡,点+添加一个端点

配置项 推荐值
名称 自定义
公钥 粘贴刚才生成的
共享密钥 复制刚才第二次生成的粘贴
Allowed IPs 10.20.6.2/24 按照上面规划设置(添加的是公司 Windwos 端点)
终点地址 不填
终点端口 不填
Keepalive 25(此项为心跳间隔时间,详情参考官方文档)

保存

切换到常规选项卡,启用 WireGuard

防火墙设置

防火墙->规则->WAN->添加

配置项 推荐值
协议 TCP/UDP
目标 防火墙自身
目标端口范围 本地配置中监听端口
描述 自定义

保存后,应用

公司 Windows 设置

配置文件如下:

1
2
3
4
5
6
7
8
9
10
[Interface]
PrivateKey = 粘贴上面生成的私钥
Address = 10.20.6.2/24 按照上面规划设置

[Peer]
PublicKey = 编辑刚才添加的本地配置,复制公钥到此选项
PresharedKey = 复制粘贴上面生成的共享密钥
AllowedIPs = 10.20.6.0/24, 10.1.1.0/24(添加家庭内网段后才可以从公司访问家庭内网)
Endpoint = 宽带ip或域名:监听端口
PersistentKeepalive = 和端点中心跳间隔时间配置一致

保存后启用

测试

公司 ping 家庭内网

1
2
3
4
5
6
7
λ ping 10.1.1.5

正在 Ping 10.1.1.5 具有 32 字节的数据:
来自 10.1.1.5 的回复: 字节=32 时间=38ms TTL=62
来自 10.1.1.5 的回复: 字节=32 时间=36ms TTL=62
来自 10.1.1.5 的回复: 字节=32 时间=35ms TTL=62
来自 10.1.1.5 的回复: 字节=32 时间=36ms TTL=62

路由下设备 ping 公司 Windows

1
2
3
4
5
6
~ % ping 10.20.6.2
PING 10.20.6.2 (10.20.6.2): 56 data bytes
64 bytes from 10.20.6.2: icmp_seq=0 ttl=63 time=35.307 ms
64 bytes from 10.20.6.2: icmp_seq=1 ttl=63 time=38.056 ms
64 bytes from 10.20.6.2: icmp_seq=2 ttl=63 time=37.866 ms
64 bytes from 10.20.6.2: icmp_seq=3 ttl=63 time=36.289 ms

访问家中 nginx

1
2
curl https://example.com
Hello Company

以上

如果需要家庭内网和公司内网互通,请参考下面这篇文章
https://gobomb.github.io/post/wireguard-notes

参考

https://www.wireguard.com
https://docs.opnsense.org/manual/how-tos/wireguard-client.html