Iptables killswitch для Wireguard

Iptables killswitch для Wireguard

Я хотел бы попросить вас о небольшой помощи в настройке функции экстренного отключения для моего VPN.

Я использую следующую настройку на моем Pi и устанавливаю IP Pi как шлюз на моем выбранном клиенте (192.168.2.16). Таким образом, клиентский трафик направляется через VPN.

Все работает отлично, но я бы хотел добавить функцию экстренного отключения, которая направит трафик в «черную дыру» на случай, если по какой-то причине соединение с VPN прервется.

[Interface]
PrivateKey = ...
Address = 10.111.111.111/32
Table = 43

PostUp = ip rule add from 192.168.2.16 table 43; iptables -A FORWARD -i %i -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT; iptables -A FORWARD -i eth0 -o %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; iptables -t nat -A POSTROUTING -o %i -j MASQUERADE

PostDown = ...


[Peer]
PublicKey = ...
AllowedIPs = 0.0.0.0/0
Endpoint = 86.xxx.xxx.xxx:51820

решение1

Добавьте номер с низким приоритетом в PostUpправило политики маршрутизации, например, так 143(и удалите его таким же образом в PostDownскрипте):

PostUp = ip rule add from 192.168.2.16 table 43 priority 143; ...
PostDown = ip rule del from 192.168.2.16 table 43 priority 143; ...

Правила с более низким приоритетом сопоставляются первыми. Если вы не установите приоритет, ОС установит его на число около 32765, чуть ниже правил по умолчанию.

Затем добавьте правило при запуске Pi (место его выполнения зависит от ОС и версии) с более высоким приоритетом (но ниже 32000или около того), которое будет отклонять весь трафик от 192.168.2.16:

ip rule add from 192.168.2.16 prohibit priority 1043

При таком подходе, когда интерфейс WireGuard отключен, механизм маршрутизации будет соответствовать правилу , 1043поскольку он направляет трафик из 192.168.2.16, и отклонять этот трафик. Когда вы запускаете интерфейс WireGuard с помощью wg-quick, он добавит правило 143, которое будет иметь приоритет, и начнет маршрутизировать трафик из 192.168.2.16через туннель WireGuard (через маршрут, настроенный wg-quickв таблице 43). Когда вы выключаете интерфейс WireGuard с помощью wg-quick(или перезагружаете Pi), правило 143будет удалено, и правило 1043будет сопоставлено снова.

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