Wireguard - 无法访问互联网

Wireguard - 无法访问互联网

我已经在 Debian 11 上安装了 Wireguard 并为 iPhone 创建了配置,当对等设备连接时,互联网在 iPhone 上无法运行,在 Debian 11 服务器上也无法运行。

Debian 11上的配置:

[Interface] Address = 10.10.10.1/24
SaveConfig = true
PostUp = iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -F POSTROUTING; iptables -t nat -I POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
ListenPort = 51194
PrivateKey = ***(key from Debian)***

[Peer]
PublicKey = ***(key from iPhone)***
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 60

客户端配置(iPhone)如下:

[Interface]
PrivateKey = ***(key from iPhone)***
Address = 10.10.10.2/36

[Peer]
PublicKey = ***(key from Debian)***
Endpoint = xx.xx.xx.xx:51194
AllowedIPs = 0.0.0.0/0

连接已建立,我可以从 iPhone ping Debian 11,反之亦然。但是,如果我尝试在 iPhone 上打开浏览器并访问随机网站,它不起作用。

另外,如果我尝试从 Debian 11 访问一些随机网站或 IP 地址(使用 curlhttps://xx.xx.xx.xx),它也不起作用,而wg0接口是up的。

而且,我已经启用了 ipforwarding(net.ipv4.ip_forward = 1 和 net.ipv4.conf.all.proxy_arp = 1)。

任何想法?

答案1

使用AllowedIPs配置设置来指定要通过 WireGuard 连接路由到该对等点的地址。通常,您不希望AllowedIPs = 0.0.0.0/0在连接的两侧都这样做,因为这意味着连接的两侧都会尝试通过连接的另一端路由所有内容(即所有 Internet 访问)(形成循环循环)。

如果您只想使用 WireGuard 连接从您的 iPhone 访问 Debian 服务器,反之亦然,请执行以下操作:

  1. 在您的 Debian 服务器上,设置AllowedIPs = 10.10.10.2/32(您的 iPhone 的 WireGuard 地址)。
  2. 在您的 iPhone 上,设置AllowedIPs = 10.10.10.1/32(您的 Debian 服务器的 WireGuard 地址)。

或者,如果您想使用 WireGuard 连接通过 Debian 服务器路由所有 iPhone 的互联网流量,请执行以下操作:

  1. 在您的 Debian 服务器上,设置AllowedIPs = 10.10.10.2/32(您的 iPhone 的 WireGuard 地址)。
  2. 在您的 iPhone 上,保留AllowedIPs = 0.0.0.0/0(所有 IPv4 地址)。

三个不相关的缺点:

  1. 在您的 iPhone 配置中,您确实应该使用Address = 10.10.10.2/32Address = 10.10.10.2/36IPv4/36不存在)。
  2. 您可能希望将您的PersistentKeepalive设置从 Debian 配置移至 iPhone 配置——通常您希望将此设置放在具有该设置的同一侧Endpoint(以允许另一侧在 WireGuard 隧道启动时通过 NAT 发起连接)。
  3. 您可能想要在您的 Debian 配置中添加iptables -D FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT;您的设置 - 您添加的任何 iptables 规则您可能都想要用或删除(否则您最终会得到同一规则的重复副本)。PostDown-A-IPostUp-DPostDown

答案2

是的,我想将所有 iPhone 的流量路由到 Debian 服务器。所以我这样做了:

在 Debian 服务器上:

[Interface]
Address = 10.10.10.1/24
SaveConfig = true
PostUp = iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -F POSTROUTING; iptables -t nat -I POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE

ListenPort = 51194
PrivateKey = ***(Debian)***

[Peer]
PublicKey = ***(iPhone)***
AllowedIPs = 10.10.10.2/32

在iPhone上:

[Interface]
PrivateKey = ***iPhone***
Address = 10.10.10.2/32

[Peer]
PublicKey = ***Debian***
Endpoint = xxx.xxx.xxx.xxx:51194
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

现在双方的 ping 都运行良好,Debian 服务器上的互联网也运行良好,但 iPhone 上的互联网无法运行(即 iPhone 上似乎没有默认路由)。

相关内容