openwrt wireguard的防火墙配置

记录环境

qnap301w路由器 OpenWrt 24 固件 ,家庭宽带 ipv4

安装的openwrt 软件包:wireguard luci-app-wireguard 以及汉化包 luci-i18n-wireguard-zh-cn luci-i18n-base-zh-cn luci-i18n-firewall-zh-cn

luci管理界面直接配置

  1. 添加接口

依次找到网络->接口->添加新接口,设置内容如下

1
2
名称:wg
协议:WireGuard VPN
 

然后创建接口。

  1. 接口>>wg 基本设置

分别填写举例如下

1
2
3
私钥:Yczs1a2s5dRib6UUEl2a14Wd0OuZ8gVy/Cz6UgjiQI= (必须由程序生成)
监听端口:23333 (可以在1~65535范围内选择,尽量大一些,另外注意避免与常用端口冲突)
IP地址: 192.168.8.1/24 (填写一个私人的子网ipv4地址,不能与已有的网段冲突)
 

关于公钥私钥的获得:可以在Android或者windows等客户端上,选择手动添加配置,就会自动生成一组,然后直接复制private key填写在这里即可。另外public key也要保存一下,客户端的配置需要用到。

也可以ssh到openwrt,然后执行

1
wg genkey | tee privatekey | wg pubkey > publickey
 

在privatekey文件中得到私钥,在publickey文件得到公钥。

  1. 接口>>wg 防火墙设置

创建/分配防火墙区域:选择lan

  1. 接口>>wg Peers

点击添加对等点,填写配置举例如下:

1
2
3
4
5
描述(可选):android111  (自定一个客户端的英文名称)
公钥:WKpXJN/qy1d6541WxUQuhMPxfE6vQ6r5+LvO1xFZT38= (填写客户端的公钥,而不是服务端的)
允许的 IP:192.168.8.8/32 (允许客户端在VPN网络中使用的ip地址)
路由允许的 IP:√ (这里一定要选中!不然无法访问内网设备)
持续 Keep-Alive(可选):25 (若对方客户端网络是在NAT后的环境,则需要开启,但ipv6基本不存在NAT所以不用开启)
 

然后保存并应用。若需要添加更多客户端,只需要重复这一步添加更多的Peers即可,最基本的只要填写对应的公钥允许的IP即可。

  1. 设置防火墙开放监听端口

依次找到网络->防火墙->通信规则->添加,打开的页面为防火墙 - 通信规则 - 未命名规则,在基本设置中只需修改如下几项,其他项默认即可

1
2
3
4
5
名称:Allow_Wireguard-Inbound   (名称任意,只要是便于识别的英文即可)
协议:UDP (wireguard只支持UDP协议)
源区域:任意区域(转发)
目标区域:设备(输入)
目标端口:23333 (这个目标端口必须与第2步设置的监听端口一致)
 

然后保存并应用。最后还需要重启一次wg接口或路由器才会生效。一旦连接成功可以在 状态->Wireguard状态 中看到相关的信息。

对客户端的配置

推荐参考这篇文章:

自己搭建WireGuard给Android用:https://mine260309.me/archives/1697

如果要配置windows端或其他平台,可以先在手机端配置好后,导出配置文件再发送过去直接导入配置就行了。因为感觉windows客户端目前用起来还是有点简陋啊,静待更新吧。

关于wireguard

其实wireguard本身的设计是既可以作为服务端也可以作为客户端的,所以说一个端点起什么作用只看你的接口(interface)和对等端(peers)设置是如何填写的了。

由于之前对于非对称加密没什么了解,在配置时就被自己坑了,弄错了公钥和私钥的使用对象。所以以配置过程为例,稍稍记录一下这个关系。

interface为本机的相关信息,peers为对方的相关信息。无论服务端还是客户端,在一个完整的配置中,peers的公钥只填写对方设备的公钥,而私钥则是本机(interface)自己的。一开始配置时没有搞清楚这个公私钥的关系,考虑了半天才明白就是这么简单。对于生成的一对公钥和私钥,私钥只给自己用,公钥则交给对方使用。

非ipv6的备选方案

如果没有ipv6或公网ip怎么办? 推荐使用ZeroTier,而且这个感觉使用和配置更简单一些。

 

posted @ 2024-04-22 15:33  yylei  阅读(825)  评论(0编辑  收藏  举报