Исключая пакеты fwmark(ed) из туннеля Wireguard

В описанном здесь сценарии я получил эту конфигурацию на клиенте (у сервера конечной точки WG есть два общедоступных IP-адреса)

[Interface]
Address = <ip_to_use>/32
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

[Peer]
PublicKey = yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
AllowedIPs = 0.0.0.0/0
Endpoint = <wg_server_ip>:51820
PersistentKeepalive = 10

Теперь я хотел бы исключить из туннеля Wireguard все процессы от пользователя или все пакеты (в и из) определенных портов.

Мне стало известно, что это можно сделать с помощью fwmark, установленного самой WG, и мне не нужно использовать другую метку, как предлагается здесь.

Это IPtables 1.6 на Ubuntu 16.04. Как я могу исключить из туннеля WG, используя метку, созданную wg-quick, для каждого пользователя или для каждого порта?

1 ответ

Решение

Решение, которое я нашел, состояло в том, чтобы обновить до Ubuntu 18.04.1, который включил следующую новую функцию, чтобы решить проблему в одной строке:

PostUp = ip rule add uidrange 0-0 lookup main
PostDown = ip rule del uidrange 0-0 lookup main

Запуск 16.04.5 с ядром 4.15 не позволял uidrange, Использование uidrange также требует, чтобы iproute2 имел более высокую версию, чем в репозитории Xenial. Iptables 1.6.1 одного недостаточно.

Другие вопросы по тегам