Вот результат "iptables-save":
# Generated by iptables-save v1.4.4 on Sun Nov 21 11:28:56 2010
*mangle
:PREROUTING ACCEPT [921:116690]
:INPUT ACCEPT [921:116690]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [856:343403]
:POSTROUTING ACCEPT [856:343403]
COMMIT
# Completed on Sun Nov 21 11:28:56 2010
# Generated by iptables-save v1.4.4 on Sun Nov 21 11:28:56 2010
*nat
:PREROUTING ACCEPT [18:1076]
:POSTROUTING ACCEPT [189:12510]
:OUTPUT ACCEPT [189:12510]
COMMIT
# Completed on Sun Nov 21 11:28:56 2010
# Generated by iptables-save v1.4.4 on Sun Nov 21 11:28:56 2010
*filter
:INPUT DROP [188:58400]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [856:343403]
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p udp -m udp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p udp -m udp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p udp -m udp --dport 443 -j ACCEPT
COMMIT
# Completed on Sun Nov 21 11:2
На этом сервере находится мой сервер привязки, который служит авторитетным сервером имен для конкретного рассматриваемого домена. На сервере также находится сам сайт. Что могло вызвать такое замедление при активации правил iptables с открытыми портами? Мне не хватает некоторых портов, которые должны позволить DNS работать правильно?
Добавьте правило ведения журнала, чтобы увидеть, что падает:
iptables -A INPUT -j LOG
Замедление вполне возможно вызвано тайм-аутом какого-то порта, о котором вы забыли.
Ваш веб-сервер пытается преобразовать IP-адреса в имена хостов? Когда bind должен рекурсивно или пересылать запросы, по умолчанию (начиная с bind 8.1) он выбирает случайные порты для отправки запросов. Поскольку пакеты UDP возвращаются на порт, который их отправил, они блокируются этим межсетевым экраном.
Вы можете раскомментировать
query-source address * port 53;
в файле named.conf.options (во всяком случае, в Debian), чтобы заставить его использовать порт 53. Случайные порты выбираются, чтобы помочь предотвратить атаки с отравлением кеша (когда кто-то возвращает вам поддельный пакет ответа до того, как прибудет настоящий пакет ), поэтому рекомендуется исправить брандмауэр вместо изменения привязки.
Если ваш сервер привязки (и /etc/resolv.conf
для всех других приложений) настроен на использование определенных серверов пересылки, тогда вы можете создать правило (а, если их более одного), например
iptables -A INPUT -p udp -s OTHERDNSSERVER --sport 53 -j ACCEPT
Это разрешит пакеты, приходящие с вашего внешнего DNS-сервера (порт 53). Если ваш интернет-провайдер / хост не предоставил вам DNS-серверы для использования, а привязка использует рекурсию для поиска всего, тогда ответы могут приходить откуда угодно. В этом случае вы должны использовать conntrack:
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
Это разрешает ответы на исходящие соединения. Если у вас много DNS-запросов, возможно, вам придется увеличить размер таблицы conntrack или уменьшить ее тайм-аут.