Iptables killswitch блокирует поиск .local dns

Я добавил ! -d 192.168.0.0/16 и ! -d fc00 :: / 7 в killswitch Wireguard пример (см. man wg-quick ПРИМЕРЫ):

PostUp = iptables -I OUTPUT ! -d 192.168.0.0/16 ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PreDown = ip6tables -I OUTPUT ! -d fc00::/7 ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT

Это позволяет мне получить доступ к другим хостам в моей сети 192.168.XX во время работы VPN. Однако, похоже, он блокирует поиск DNS для таких доменов, как myhost.local . Я говорю это, потому что я могу подключиться к VPN и по-прежнему пинговать myhost.local . Уже через несколько минут работы VPN пинг перестает работать и сообщает: ping: myhost.local: Имя или служба неизвестны . Я предполагаю, что истек срок действия кеша DNS.

Насколько я понимаю, поскольку я не указал протокол в iptables (например, -p udp ) он должен исключить все протоколы из правила REJECT.

Я могу запустить VPN без правил iptables и ip6tables, и я всегда могу разрешить myhost.local .

Как вы думаете, это все еще г удаление запросов UDP по другим критериям? Как я могу настроить правило, чтобы разрешить локальный поиск DNS?

0
задан 3 September 2019 в 11:46
1 ответ

Вы случайно разделили свой IP4 & команды IP6 - в Вашем примере обе строки должны быть частью PostUp с & & промежуточный, и у Вас должен быть соответствующий PreDown для соответствия. Например:

PostUp = iptables -I OUTPUT ! -d 192.168.0.0/16 ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT && ip6tables -I OUTPUT ! -d fc00::/7 ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PreDown = iptables -D OUTPUT ! -d 192.168.0.0/16 ! -o %i -m mark ! --mark $(wg show  %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT && ip6tables -D OUTPUT ! -d fc00::/7 ! -o %i -m mark ! --mark $(wg show  %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
0
ответ дан 23 November 2019 в 22:15

Теги

Похожие вопросы