我花了好长时间让 WG 将所有流量传输回服务器。我以为这会是一个简单的单行过程,但事实并非如此。我已经安装了最新版本,删除、重新安装,几乎完成了所有操作。服务器中也进行了 iptables 更改,但甚至没有进展到那个程度。它只是没有路由到 wg0。如果我尝试手动添加路由,它会说它已经存在。我错过了什么?
wg0.conf
[Interface]
Address = 172.20.3.9/32
PrivateKey =
[Peer]
PublicKey =
Endpoint = 18.x.x.x:51820
AllowedIPs = 0.0.0.0/0,::/0
PersistentKeepalive = 25
Route tables on the client:
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eno1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1
ip route show table main
default via 192.168.1.1 dev eno1 proto static
192.168.1.0/24 dev eno1 proto kernel scope link src 192.168.1.62
wg show on the client:
interface: wg0
public key:
private key: (hidden)
listening port: 39804
fwmark: 0xca6c
peer:
endpoint: 18.x.x.x:51820
allowed ips: 0.0.0.0/0, ::/0
latest handshake: 38 seconds ago
transfer: 20.05 KiB received, 33.70 KiB sent
persistent keepalive: every 25 seconds
Console output when it starts:
wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 172.20.3.9/32 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] wg set wg0 fwmark 51820
[#] ip -6 route add ::/0 dev wg0 table 51820
[#] ip -6 rule add not fwmark 51820 table 51820
[#] ip -6 rule add table main suppress_prefixlength 0
[#] ip6tables-restore -n
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n
答案1
当您设置AllowedIPs
为时/0
,wg-quick 使用策略路由来避免覆盖主表中除默认路由之外的路由。运行ip rule
以查看 wg-quick 设置的策略规则,并ip route show table 51820
查看您要查找的路由。wg-quick 的策略规则在您的情况下的效果是继续通过 路由192.168.1.0/24
(以及 WireGuard 自己的流量到18.x.x.x
)eno1
,同时通过 路由其他所有内容wg0
。
如果你真的想路由一切通过 wg0,首先在自定义路由表中添加远程端点的路由:
ip route add 18.x.x.x via 192.168.1.1 dev eno1 table 123
然后添加一个策略规则,使该表优先于其他表:
ip rule add table 123 priority 456
然后配置 wg-quick 在启动界面时将其路由添加到该表(如您的情况下的默认路由):
[Interface]
...
Table = 123
[Peer]
...
看https://www.wireguard.com/netns/#routing-all-your-traffic以进行进一步的讨论和替代方法。