在 OpenWrt 下使用 WireGuard 实现全局代理上网
在 OpenWrt 下使用 WireGuard 实现全局代理上网
设备情况
设备型号:360 T7
固件版本号:ImmortalWrt 18.06-5.4-SNAPSHOT r11814-ef0c86bdb0 / LuCI branch (git-22.323.17670-f9380b5)
网络架构图如下
网络设置
新建 WG 接口,修改协议为 WireGuard VPN
一般配置里填好私钥(可以自行生成),IP地址(对端的允许的IP)
Peers 里添加一个新的。
然后填写对端的公钥,允许的IP话,看情况填写。
- 如果只需要走部分网段的话(打通内网),填写对应的网段即可(CIDR格式),例如192.168.88.0/24, 10.22.33.128/25。点加号可以添加多条。
- 如果需要全局代理的话,填写0.0.0.0/0(默认路由)即可
路由允许的 IP 打钩,这一条是自动添加路由表的作用。
端点主机和端点端口填写对端的IP地址和端口即可。
持续 Keep-Alive 看情况填写,我使用的是默认值0。
填写好是这样的:
到这一步,如果只需要走部分网段的设置已经接近尾声了,把新建的 WG 接口加入到和 LAN 相同的防火墙区域,即可打通。或者新建一个新区域,配置规则也行,保存应用之后重连一下端口,就可以在 状态 - WireGuard 状态 看到链接信息了,有正常收发流量即为正常。
全局代理设置
对于这个在网上相关的资料非常少(也许是我想实现的效果比较扭曲),我到最后发现会自动给我添加 WAN 口的默认路由,导致走不下去,手动添加配置删除路由还是不太稳定,所以放弃。最近有了新发现,是 MWAN 搞的鬼。
现在开始配置教程。
防火墙设置
在防火墙区域新建一个 VPN 区域,把 IP 动态伪装打开(相当于在主路由那边是通过这台路由器 NAT 之后通信),再把 WG 接口添加到 VPN 区域。
修改 VPN 区域的设置:
允许转发到目标区域:WAN 区域打钩
允许来自源区域的转发: LAN 区域打钩
修改 WAN 区域的设置:
允许转发到目标区域:空
允许来自源区域的转发:VPN 区域打钩
修改 LAN 区域的设置:
允许转发到目标区域:VPN 区域打钩
允许来自源区域的转发:空
修改好应该是这样的
防火墙
LAN
WAN
VPN
到此防火墙设置结束。
接口设置
WAN接口 -> 高级设置 -> 使用默认网关 去掉对钩
LAN接口 -> 基本设置 -> 使用自定义的 DNS 服务器 -> 填写 WG 那边的网关,或者公共 DNS
路由设置
网络 -> 静态路由 -> 静态 IPv4 路由
接口选择 WAN ,对象填写对端 WG 的 IP 地址,IPv4 子网掩码32位,IPv4 网关填写你 WAN 口上级路由器的网关地址,其他保持默认即可。
网络 -> 静态路由 -> 静态 IPv4 路由
网络 -> 负载均衡(MWAN) -> 禁用所有 MWAN 接口
就是因为这个原因,所以他才会自动给我加路由表,明明我取消了使用默认网关,并且没有添加其他的路由项,还是会给我加默认路由,情况如下图。
关闭 MWAN 后
测试联通性
Enjoy!
更换固件后测试
固件版本号:QWRT R23.6.1 / LuCI Master (git-23.141.16773-28dd4b3)
这个固件防火墙区域都不用配置,WAN也不用取消默认网关,默认即可上网(自动给添加了路由)。
默认路由表
配置好 WG 后的路由表
大雕NB!