Исключая пакеты 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 одного недостаточно.