LINUX.ORG.RU
ФорумAdmin

настроить iptables так чтобы работал DNS на этом же сервере


0

0

на сервере настроен SNAT, на нем же есть DNS сервер, вполне нормально работающий когда цепочки INPUT и OUTPUT в режиме ACCEPT, но как только ставлю DROP named теряет связь с DNS прова.
Настройки есть такие в /etc/sysconfig/iptables:
-A INPUT -s DNS_PROVA -d EXT_IP -i eth1 -p udp -m udp --sport 53 --dport 1024:65535 -j ACCEPT
и это
-A OUTPUT -s EXT_IP -d DNS_PROVA -o eth1 -p udp -m udp --sport 1024:65535 --dport 53 -j ACCEPT
изнутри все разрешено:
-A OUTPUT -s 192.168.0.1 -d 192.168.0.0/255.255.255.0 -o eth0 -j ACCEPT
-A INPUT -s 192.168.0.0/255.255.255.0 -d 192.168.0.1 -i eth0 -j ACCEPT
итого так не работает если у клиента сети стоит dns 192.168.0.1, а если прова работает.
Но если дать команду: iptables -P INPUT ACCEPT и iptables -P OUTPUT ACCEPT, то у клиента сети с dns 192.168.0.1 все работает.
Что еще надо открыть чтобы работало?

anonymous

На внешний интэрфейс открой на вход порт назначения 53 и на выход исходящий порт 53

нэймед обращаеться с этих портов...

DEH
()
Ответ на: комментарий от anonymous

думаю цепочка SNAT ни при чем: -A POSTROUTING -s 192.168.0.10 -o eth1 -j SNAT --to-source EXT_IP и так для каждого внутреннего ip

anonymous
()
Ответ на: комментарий от DEH

DEH: я что-то не пойму я разве не так сделал?
или -A INPUT -s 0/0 -d EXT_IP -i eth1 -p udp -m udp --sport 53 --dport 1024:65535 -j ACCEPT надо, то есть вместо адреса DNS_PROVA пусть будут все?
eth1 - внешний интерфейс.
Команды я даю руками скриптами не пользуюсь, так для меня удобнее.
Поэтому скрипта типа rc.firewall у меня нет.

anonymous
()
Ответ на: комментарий от anonymous

да не так

-A INPUT -s0/0 -d Ext_IP -i eth1 -p udp -m udp --dport 53 -j ACCEPT

в OUTPUT --sport 53

твой нэймэд лезет с 53 порта !

кстати что есть -m udp ?

DEH
()
Ответ на: комментарий от DEH

а вообще подобные траблы решаються элементарно, для данного примера:

-I INPUT 2 -p udp -j LOG делаем пинг ya.ru смотрим на экран, что куда и по каким портам лезет -D INPUT 2 делаем соответствующие изменения в правилах ...

DEH
()
Ответ на: комментарий от DEH

я понятия не имею что есть -m udp,это появляется в /etc/sysconfig/iptables само когда даешь команду с консоли:
iptables -A OUTPUT -p UDP -o eth1 -s 217.xxx.xxx.ip_ext --source-port 1024:65535 -d 217.xxx.xxx.dns_prov --destination-port 53 -j ACCEPT
а потом все это сохраняешь: service iptables save

anonymous
()
Ответ на: комментарий от DEH

> что есть -m udp ?
Это модуль для протокола udp, который позволяет использовать маску протоколов по номерам портов (параметры --sport, --dport применительно к соответствующему протоколу). Он подразумевается автоматически при указании типа протокола (-p udp).
iptables -m udp --help

P.S. Господа, а manual-ы зачем существуют ? :-)

spirit ★★★★★
()
Ответ на: комментарий от spirit

spirit:попробовал я tcpdump -ni eth1 udp and port 53, так при запросе любого адреса в браузере нет никаких сообщений если dns своего сервера стоит, а если прова, то идет сообщение туда и оттуда. А вот если tcpdump -ni eth0 udp and port 53 так сделать то идут запросы на dns 192.168.0.1, но обратно не возвращаются.Причин видится две:или они режутся на обратном пути или не доходят до eth1 вообще(возможно ли такое?), или что-то я не понимаю...

anonymous
()
Ответ на: комментарий от anonymous

Скорее они вообще не выходят, либо даже не пытаются выходить. Первое можно проверить тем же tcpdump-ом, но тест делать не "1) DNS свой, 2) DNS прова", а "1) свой DNS с загруженными правилами, 2) свой DNS без правил". Второе определяется из named.conf - присутствует ли в нем такое:
...
recursion yes;
allow-recursion {
192.168.0.0/24; 127.0.0.1;
};
forward first; или forward only;
forwarders {
DNS_PROVA;
};
...

spirit ★★★★★
()
Ответ на: комментарий от anonymous

И еще: у вас клиенты работают не через proxy ? А то при таком указании правил может получиться, что локальный proxy не сможет обратиться к локальному DNS. Я про то, что в этом случае нужно дополнительно разрешить локальным адресам (192.168.0.1, 127.0.0.1, EXT_IP - в зависимости от содержимого /etc/resolv.conf, а можно и всем сразу) обращаться по UDP к 53 порту (к nameserver-ам из resolv.conf).

spirit ★★★★★
()
Ответ на: комментарий от spirit

это все что есть в named.conf, я его никогда не настраивал и не знаю что там должно быть, надо будет заняться на досуге :)

zone "." {
type hint;
file "named.ca";
};

options {
directory "/var/named/";
};

Но вот что странно: если policy для цепочек IN OUT поставить в ACCEPT все работает, то есть на клиенте ставлю dns 192.168.0.1 и инет работает нормально все резолвиться,по логике должно что-то быть в iptables

anonymous
()
Ответ на: комментарий от anonymous

Например в моем man named.conf написано, что recursion по умолчанию "yes". Значит рекурсия включена, а вот forwarders не прописаны, следовательно forwarding не работает, и ваш named не обращается к DNS прова, он напрямую обращается к DNS серверам. Поэтому, либо подправьте named.conf (пример см. выше), либо попробуйте такие правила:
iptables -A INPUT -d EXT_IP -i eth1 -p udp -m udp --sport 53 --dport 1024:65535 -j ACCEPT
iptables -A OUTPUT -s EXT_IP -o eth1 -p udp -m udp --sport 1024:65535 --dport 53 -j ACCEPT
т.е. без указания DNS_PROVA. Должно работать :-)

> -A POSTROUTING -s 192.168.0.10 -o eth1 -j SNAT --to-source EXT_IP и так для каждого внутреннего ip
А зачем столько правил ? Хватит и одного:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT --to-source EXT_IP

spirit ★★★★★
()
Ответ на: комментарий от spirit

Проще было на входящие поставить ESTABLISHED,RELATED, чем порты перебирать.

P.S. Кстати, о ликвидации безграмотности. Хочется узнать - 42 порт нафига? nameserver чего?

jackill ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.