скрипт iptables, разрывающий интернет соединение

Нужна помощь, когда я ошибаюсь со сценарием iptables, которым пользуюсь долгое время.

Я использовал это на Ubuntu Server 16.04 без каких-либо проблем, я обновился до 19.04 (да, это свежая установка), и внезапно у меня возникли проблемы, которые я не могу решить ..

Сценарий:

*filter    
:INPUT DROP
:FORWARD DROP
:OUTPUT DROP
-A INPUT -s 192.168.1.1/24 -j ACCEPT
-A OUTPUT -d 192.168.1.1/24 -j ACCEPT
-A INPUT -s 127.0.0.1 -j ACCEPT
-A OUTPUT -d 127.0.0.1 -j ACCEPT
-A OUTPUT -d *VPN IP here* -p udp -j ACCEPT
-A INPUT -s *VPN IP Here* -p udp -j ACCEPT
-A INPUT -i tun0 -j ACCEPT
-A OUTPUT -o tun0 -j ACCEPT
COMMIT

Без этих правил в iptables VPN прекрасно работает 19.04.
Как только я фиксирую эти правила в iptables, интернет отключается как таковой, я не могу получить обратный IP-адрес из curl ipecho.net/plain, он просто говорит ...

не может разрешить имя хоста

... но, тем не менее, я могу пинговать Google (8.8.8.8), и он пингует нормально.
Я даже не могу получить список обновлений от Ubuntu с apt-get update.

Я проверил, что имена адаптеров правильные и VPN - tun0, так что это не так.

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

Как я уже сказал, он отлично работал с 16.04, но не с 19.04. Confused.

Любая помощь будет принята с благодарностью.

1
задан 14 May 2019 в 00:35

1 ответ

Сообщение can't resolve hostname предполагает, что проблема заключается в разрешении имени.

В последних версиях Ubuntu DNS работает через локальный сервер кэширования, который прослушивает порт 53 по подходящему адресу в циклическом пакете - однако конкретный адрес не является каноническим 127.0.0.1, который вы уже разрешили.

Например, 16.04 системы используют dnsmasq на 127.0.1.1 по умолчанию

$ sudo netstat -nlp | grep LISTEN | grep :53
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1020/dnsmasq    

, тогда как 18.04 использует systemd-resolved на 127.0.0.53

$ sudo netstat -nlp | grep LISTEN | grep :53
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      3677/systemd-resolv

В Для разрешения DNS-запросов вам необходимо разрешить входящие соединения по соответствующему адресу (хотя вы можете ограничить их конкретным портом, 53).

0
ответ дан 14 May 2019 в 00:35

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

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