dnsmask и resolv.conf (проблема курицы и яйца)
Модераторы: SLEDopit, Модераторы разделов
-
Bizdelnick
- Модератор
- Сообщения: 21488
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
dnsmask и resolv.conf
Имеем: машину, получающую DNS-серверы по DHCP, на ней - кучка виртуалок за NAT, которые обслуживает dnsmasq. Надо, чтобы на хостовой машине резолвились имена виртуалок через dnsmasq, и при этом, естественно, имена из внешнего мира. Напрашивается решение жёстко прописать server в конфиге dnsmasq, а в resolv.conf - локалхост, однако если когда-то внешние DNS сменятся, придётся править конфиг dnsmasq снова. Есть ли какая-то возможность решить проблему, не отказываясь от получения адресов вышестоящих DNS-серверов по DHCP?
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
skeletor
- Сообщения: 1224
Re: dnsmask и resolv.conf
У виртуалок имена как-то привязаны к какой-то зоне (например, virt1.local, virt2.local)?
-
Bizdelnick
- Модератор
- Сообщения: 21488
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: dnsmask и resolv.conf
Ну вообще этим делом рулит ganeti, который требует, чтобы у всех виртуалок был FQDN (то бишь с привязкой к зоне). Кроме него ни у кого особых предпочтений на этот счёт нет. :-)
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
skeletor
- Сообщения: 1224
Re: dnsmask и resolv.conf
Для внешнего резолвинга можно заюзать такую опцию
Для локального резолвинга
где localdom - общий домен для виртуалок. А имена виртуалок придётся прописывать в /etc/hosts, так как там будет их искать dnsmasq.
Код: Выделить всё
resolv-file=/etc/resolv.confДля локального резолвинга
Код: Выделить всё
local=/localdom/где localdom - общий домен для виртуалок. А имена виртуалок придётся прописывать в /etc/hosts, так как там будет их искать dnsmasq.
-
Bizdelnick
- Модератор
- Сообщения: 21488
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: dnsmask и resolv.conf
На данный момент они прописываются в отдельные файлы каталога, заданного опцией hostsfile. Писать всё в один файл, тем более в /etc/hosts, не хотелось бы, потому что это затруднительно (и опасно) автоматизировать. Если же их не будет в hosts, а в resolv.conf будут внешние серверы, то хост не сможет найти виртуалки.
Однако опция resolv-file действительно может пригодиться, если в ней указать не /etc/resolv.conf, а другой файл, который будет формироваться хуком dhclient. Так что спасибо за наводку.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
Bizdelnick
- Модератор
- Сообщения: 21488
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: dnsmask и resolv.conf
Итак, окончательное решение. Debian Wheezy, установлен пакет resolvconf.
В /etc/network/interfaces:
В /etc/dhcp/dhclient-enter-hooks.d/dnsmasq_resolv:
В /etc/dnsmasq.conf:
В /etc/network/interfaces:
Код: Выделить всё
allow-hotplug eth0
iface eth0 inet dhcp
nameserver localhostВ /etc/dhcp/dhclient-enter-hooks.d/dnsmasq_resolv:
Код: Выделить всё
RESOLVCONF=/etc/dnsmasq/resolv.conf
if [ -n "$new_domain_name_servers" ] ; then
: > "$RESOLVCONF"
for srv in $new_domain_name_servers ; do
echo nameserver $srv >> "$RESOLVCONF"
done
fiВ /etc/dnsmasq.conf:
Код: Выделить всё
resolv-file=/etc/dnsmasq/resolv.confПишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |