
Это из раздела «Примеры» страницы руководства 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 и маршрутизации, так что, возможно, что-то происходит за кулисами, что я упускаю.
решение1
По умолчанию wg-quick автоматически добавляет маршруты через wg0, соответствующие AllowedIP всех пиров на этом интерфейсе. Вот и вся цель параметра Table= в вашем примере.
(Хотя это также происходит, даже если Table= не указано — тогда маршруты добавляются в основную таблицу. Можно использовать Table=off, чтобы отказаться от такого поведения.)
Подобная функциональность также существует в поддержке WireGuard в systemd-networkd, но она является дополнительной (т. е. Table= необходимо указывать даже для основной таблицы).