Wireguard 握手有效,但无法访问互联网

kek*_*gen 6 server vpn networking wireguard

首先:这不是重复的。除了 OpenVPN 或 IPSec 之外,我已经尝试了所有方法。我收到客户端和服务器之间的握手,并且客户端之间可以使用 SSH 和 Ping,但我无法访问全球互联网,甚至无法访问服务器的公共 IP。我的配置只是通常的键、端点,我完全遵循 Linode 指南。我的客户端是 openSUSE,但我的服务器是 ubuntu,我认为这是瓶颈。

Kyl*_*yle 8

这正是我的情况。您的服务器有公共 IP 还是位于 NAT 后面?如果它位于 NAT 之后,则Linode 指南中的PostUpPostDowniptables 命令不适用。

尝试将以下内容添加到您的服务器配置文件中,更改eth0为您的计算机的名称:

PreUp = iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0
PreDown = iptables -t nat -D POSTROUTING -j MASQUERADE -o eth0
Run Code Online (Sandbox Code Playgroud)

来源:https ://unix.stackexchange.com/questions/530790/wireguard-not-routing-traffic-from-client-to-other-servers-on-the-network

配置示例

以下是一个示例配置,其中路由器位于 10.0.1.1(普通网络),10.0.0.x 是新的 WireGuard 网络,服务器配置为 10.0.0.1,客户端配置为 10.0.0.2。使用的端口是 51820,默认网络接口是 eth0。所有流量都通过 WireGuard 路由,但不会停留在 WireGuard 子网内。客户端可以访问服务器的本地网络(10.0.1.x)和通用互联网。不要忘记将 51820 端口从路由器转发到服务器并在服务器上启用 ipv4 转发 ( # sysctl -w net.ipv4.ip_forward=1)

服务器配置

[Interface]
Address = 10.0.0.1/24
PrivateKey = YOUR_SEVER_PRIVATE_KEY
ListenPort = 51820
PreUp = iptables --table nat --append POSTROUTING --jump MASQUERADE --out-interface eth0
PreDown = iptables --table nat --delete POSTROUTING --jump MASQUERADE --out-interface eth0

[Peer]
PublicKey = YOUR_CLIENT_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32
Run Code Online (Sandbox Code Playgroud)

客户端配置

[Interface]
Address = 10.0.0.2/24
DNS = 10.0.1.1
PrivateKey = YOUR_CLIENT_PRIVATE_KEY
ListenPort = 51820

[Peer]
PublicKey = YOUR_SERVER_PUBLIC_KEY
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = YOUR.DYNAMIC_DNS.COM:51820
Run Code Online (Sandbox Code Playgroud)