Пример со страницы руководства Wireguard wg-quick: как это работает?

Пример со страницы руководства Wireguard wg-quick: как это работает?

Это из раздела «Примеры» страницы руководства 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= необходимо указывать даже для основной таблицы).

Связанный контент