土豆不好吃

为什么我的WireGuard 配置 AllowedIPs=0.0.0.0/0 之后客户端断网了?

文章目录[显示]

一直以来我都是使用WireGuard组建安全大内网的,几乎没有拿它来当作代理工具使用。

今天突然要测试一下腾讯云的IP,那还不简单嘛,直接 AllowedIPs=0.0.0.0/0,让所有流量都走WG就好了!只是简单的测一下,并不想搭个shadowsocks或者OpenVPN什么的。(小心被警告写保证书哦)

结果我一波配置完,却断网了

以为是DNS的问题,配置上 DNS=223.5.5.5,还断网,当然peer的IP能ping通,路由器还能通。

思考了很多可能的因素,包括腾讯云的网络是fullcone NAT,macOS的Darwin内核,本地的IPv6网络,腾讯云的wg配置。尝试了换vultr做peer,开一个新的虚拟机,换手机,换surfshark的配置文件

net.ipv4.ip_forward net.ipv4.conf.all.proxy_arp 也都开了,peer也没有防火墙……

最后发现是因为没有添加iptables规则

在腾讯云配置文件中添加两行规则

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE;
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens5 -j MASQUERADE;

如果还要支持IPv6的话

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o en s -j MASQUERADE

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens5 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o ens5 -j MASQUERADE

重新载入一下配置文件就好了。macOS和iOS这边的Interface再加上一个DNS配置就好了

配置文件

腾讯云

[Interface]
Address = 192.168.2.1/24
SaveConfig = false
ListenPort = 443
PrivateKey = 

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE;
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens5 -j MASQUERADE;

[Peer]
PublicKey =
AllowedIPs = 192.168.2.64/32

Peer

[Interface]
PrivateKey =
Address = 192.168.2.64/32
DNS = 223.5.5.5

[Peer]
PublicKey = 4
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = xxxxxx.xxx:443
PersistentKeepalive = 30

参考资料

https://y2k38.github.io/posts/how-to-setup-wireguard-vpn-server/

 


文章版权归原作者所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明原作者和本文原始地址:
https://dmesg.app/wg0000.html
退出移动版