Нужна помощь, когда я ошибаюсь со сценарием 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
, он просто говорит ...
не может разрешить имя хоста
blockquote>... но, тем не менее, я могу пинговать Google (8.8.8.8), и он пингует нормально.
Я даже не могу получить список обновлений от Ubuntu сapt-get update
.Я проверил, что имена адаптеров правильные и VPN -
tun0
, так что это не так.Сценарий предназначен для уничтожения интернета, если что-то случится с VPN-соединением (сетевой кабель отключен, сброс маршрутизатора и другие простои на VPN-сервере), однако VPN работает и подключен, поэтому я не уверен, почему он победил. работать как задумано.
Как я уже сказал, он отлично работал с 16.04, но не с 19.04. Confused.
Любая помощь будет принята с благодарностью.
Сообщение 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
).