LINUX.ORG.RU
решено ФорумAdmin

Простой forward DNS по серверам из resolv.conf


0

1

Сделал из десктопа шлюз.

sudo iptables -A FORWARD -i ppp0 -o wlan0 -s 192.168.10.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
Работает, но на клиентах приходится прописывать DNS гугла или провайдера, а если прописать в качестве DNS шлюз, разименование не работает.

Как перебросить все запросы на сервера из resolv.conf?

★★★★★

>если прописать в качестве DNS шлюз, разименование не работает.

Всё правильно. Надо завести dnsmasq на роутере, чтобы его можно было использовать как DNS-сервер.

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

Так не пойдет

Думаю можно просто использовать iptables. Вот только как это описать пока не понял.

petav ★★★★★
() автор топика
Ответ на: Так не пойдет от petav

>Так не пойдет

Почему?

Думаю можно просто использовать iptables.

Можно попробовать пробросить 53-ий порт (domain) на другой DNS-сервер, например, на 8.8.8.8. Но dnsmasq же лучше будет. Например, через iptables не получится заюзать несколько DNS-серверов.

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

>Вот это пытаюсь понять!

Что тут понимать? Если сделать SNAT или DNAT, то не получится написать несколько адресов. Будет заюзан один DNS-сервер. И вообще это костыль, надо юзать dnsmasq.

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

>это похоже на то что мне нужно?

Насколько я понял, там есть сеть, в ней DNS-сервер (типа dnsmasq, или какой-то другой), а вся сеть за шлюзом. Без этих правил DNS-сервер не видит другие DNS-сервера в интернете, потому что порты закрыты.

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

Почитал понятно. Но как же будут отработыватся ситуации подключения VPN или ppp. Сейчас они у меня resolv.conf правят. И потом будут, но bind то ни чего знать про это не будет и клиентам не будет разименовывать на них.

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

Во, Ответ на мой вопрос. Все новые DNS которые будут появляться в системе будет bind добавлять в свои forvard через resolvconf, а так же будет контролировать сам resolv.conf. Вопрос еще как поведет себя openVPN у меня при поднятии он сам resolvconf пользуется что бы DNS соединения прописать. Но это уже тесты покажут...

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

Простой forward DNS

Бинд как то малость для «Простой forward DNS» монструозен. Да и вообще бинд лучше не юзать.

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

BIND - это в данном случае как из пушки по воробьям. dnsmasq легкий и все его ф-ции(dhcp,tftp) отключаемы(точнее их надо ОТДЕЛЬНО включать в конфиге, по-умолчанию dnsmasq - просто DNS-сервер)

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

в случае dnsmasq - да, можно организовать. Базу локальных DNS-имен для собственных нужд dnsmasq может хранить в /etc/hosts

Pinkbyte ★★★★★
()

а, ну и, если хочешь - могу скинуть свои готовые конфиги для dnsmasq

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

gentoo_root> Например, через iptables не получится заюзать несколько DNS-серверов.

Почему? DNAT и список адресов ДНСов, будет тебе round-robin

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

хм. откуда дровишки? в DNAT можно задавать только диапазон адресов, судя по iptables --help. Другое дело, если притулить к этому еще -m statistic, тогда можно сделать round robin, да...

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

А ошибся, это было до 2.6.10, потом убрали

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

Cмысл в том что бы отправлять запросы клиентов по DNS из resolv.conf. Как это решить в iptables

petav ★★★★★
() автор топика

Думаю что без DNS логики здесь не обойтись. Даже если организовать round robin то это всего даст нам отказоустойчивость, а не поиск разрешения имени на всех DNS серверах из resolv.conf. Думаю нужен Bind, dnsmesg не хочу потому что DHCP не нужен.

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

Так не используй его в режиме DHCP-сервера, проблем-то. Иначе по такой логике и линуксом пользоваться не нужно, ибо в каждом конкретном случае используются далеко не все его возможности.

manntes-live ★★★
()
Ответ на: комментарий от petav

dnsmasq для данной функции самое то, зря ты упираешься. Я сам везде где нужен bind его юзаю как авторитативный DNS, а вот для простого форвардинга на основе resolv.conf - dnsmasq самое то. Не зря он во всех роутерах сидит :)

Вот простой конфиг (правда с DHCP):

interface=br0
except-interface=eth1
bind-interfaces
listen-address=192.168.11.1
expand-hosts
domain=trololo.domain.net
dhcp-range=192.168.11.50,192.168.11.254,255.255.255.0,12h
read-ethers
dhcp-authoritative
cache-size=150
no-negcache

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

Через iptables просто так не получится. Только как писали выше - DNAT плюс модуль статистики для маркировки пакетов в mangle, а затем уже в зависимости от маркировки их разбрасывать на разные DNS. В общем через жопу получается, нужено еще и резолв.конф парсить постоянно на предмет изменений.

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

Cпасибо, за то что убедили. Почитаю про его конфигурирование более подробно.

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