Назад | Перейти на главную страницу

Преобразование правил IPtables в правила FirewallD (Killswitch для Wireguard)

Согласно руководству Mullvad, для включения Killswitch для Wireguard необходимо следующее:

A: Добавьте следующие строки в раздел [Интерфейс] файлов конфигурации WireGuard, находящихся в / etc / wireguard /:

PostUp  =  iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT && ip6tables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PreDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show  %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT && ip6tables -D OUTPUT ! -o %i -m mark ! --mark $(wg show  %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT

Где имя файла для отдельных конфигураций vpn - /etc/wireguard/mullvad-se5.conf например. CentO / S и Fedora используют FirewallD вместо IPtables, поэтому использование приведенных выше правил приводит к зависанию «восходящего» туннеля. Какой точный эквивалент FirewallD для приведенных выше правил?

вступление

Ваше предположение не совсем верно. Тот факт, что система использует Firewalld, не означает, что команды iptables не работают ... Оба (iptables и firewalld) устанавливают одинаковые параметры по отношению к ядру - это просто вариант, как его настроить. Верно то, что как только вы используете firewalld и что-то настроено с помощью команды iptables, он работает до тех пор, пока правила firewalld не будут перезагружены, поскольку эти «дополнительные» правила не известны firewalld - у них нет представления объекта firewalld.

Вопрос в том, действительно ли это проблема в случае непостоянного туннеля - в случае перезагрузки туннель не является постоянным, и во время восстановления соединения все настройки могут быть снова настроены, поэтому я не вижу «состояние выполнения» настройка как действительно проблема ...

Конкретно к вопросу

Firewalld имеет --непосредственный переключатель, который рекомендуется использовать в качестве последней опции (если у вас нет другой опции, как настроить правило), но он есть ... Синтаксис наиболее близок к iptables поэтому я указываю прямо на этот вариант. Если вы хотите, чтобы правило было постоянным, вы также можете использовать - постоянный но вариант я думаю в данном случае не нужен.

Общий синтаксис:

firewall-cmd --direct --add-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>

таблица по умолчанию - это фильтр, поэтому, если вы используете iptables без -t вариант, с которым вы работаете со столом фильтр.

iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT

будет соответствовать

firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT

Как видите, разница только в том, как сказать, куда будет добавлено правило. В <args> часть такая же, как и в случае iptables команда.

Я надеюсь, что этого примера будет достаточно для того, чтобы вы могли переписать любое правило (а) в синтаксисе firewalld. Удачи!

-------- редактировать: добавление -D «альтернатива» ----------

iptables -D OUTPUT ...

соответствовать

firewall-cmd --direct --remove-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>