Это мои настройки iptables:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT ! -s 87.27.77.107/32 -p tcp -m tcp --dport 21 -j DROP
-A INPUT -i eth0 -p udp -j DROP
-A OUTPUT -p udp -j DROP

Попытка разрешить разрешение DNS с использованием двух DNS-серверов, указанных в /etc/resolv.conf, но у меня возникли проблемы. Я попытался открыть порт 53 без ограничения IP-адреса источника / назначения, но не повезло:

iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

iptables -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT

# host google.it
;; connection timed out; trying next origin

Где я не прав?

1 ответ1

2

Недостаточно проверить настройки iptables в начале; Вы также должны проверить их в конце, чтобы увидеть результат ваших команд. Правила обрабатываются сверху вниз, и каждый раз, когда вы используете -A (что сокращенно от --append), оно добавляет правило внизу - под существующим правилом "отбросить все пакеты UDP".

Вот что у вас получилось:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT ! -s 87.27.77.107/32 -p tcp -m tcp --dport 21 -j DROP
-A INPUT -i eth0 -p udp -j DROP
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -j DROP
-A OUTPUT -p udp -m udp --sport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT

Чтобы это исправить, переместите ваши правила "принятия" над правилом "удаления", например, указав точное положение при вставке или добавлении (-I/-A INPUT <lineno>).

(Более того, подготовьте полный набор правил в виде текстового файла и загрузите все сразу (iptables-save/restore или даже ferm) вместо вставки случайных правил в случайных местах.)

Обратите внимание, что половина ваших правил принятия бесполезна, если вы действуете только как DNS-клиент (не DNS-сервер). Исходящие DNS-запросы будут иметь 53 в качестве порта назначения, но не в качестве порта источника (который вместо этого рандомизирован); и наоборот, входящие ответы будут иметь 53 в качестве источника, но случайный порт назначения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .