这来自 wg-quick 手册页的示例部分:
A combination of the `Table', `PostUp', and `PreDown'
fields may be used for policy routing as well. For example,
the following may be used to send SSH traffic (TCP port 22)
traffic through the tunnel:
[Interface]
Address = 10.192.122.1/24
PrivateKey = yAnz5TF+lXXJte14tji3zlMNq+hd2rYUIgJBgB3fBmk=
ListenPort = 51820
Table = 1234
PostUp = ip rule add ipproto tcp dport 22 table 1234
PreDown = ip rule delete ipproto tcp dport 22 table 1234
[Peer]
PublicKey = xTIBA5rboUvnH4htodjb6e697QjLERt1NAB4mZqp8Dg=
AllowedIPs = 0.0.0.0/0
这个例子对我来说似乎不完整。不应该还有一个ip route
指定table 1234
可以完成通过隧道发送 SSH 流量吗?我远不是 Wireguard 和路由方面的专家,所以也许我错过了幕后发生的一些事情。
默认情况下,wg-quick 会通过 wg0 自动添加与该接口上所有对等体的 AllowedIPs 对应的路由。这就是您的示例中 Table= 参数的全部目的。
(尽管即使未指定 Table= 也会发生这种情况 - 然后将路由添加到主表中。可以使用 Table=off 来选择退出此行为。)
systemd-networkd 的 WireGuard 支持中也存在类似的功能,但它是可选的(即即使是主表也必须指定 Table=)。