Я хочу транслировать несколько имен хостов в локальной сети только из одного экземпляра Ubuntu Server 10 с Zeroconf или чем-то подобным. Он должен быть zeroconf или аналогичным, потому что он будет использоваться в конфигурации виртуальной машины и будет скопирован, поэтому я не могу зависеть от внешнего DNS-сервера. Я собрал ряд ресурсов, но не смог разобраться. Есть ли способ сделать это?
Вот некоторые ресурсы, которые я собрал: http://bit.ly/l5W4ab
EDIT: также было бы хорошо настроить VirtualBox в качестве DNS-сервера.
Вот небольшая служба systemd, которая позволяет вам указать псевдоним для вашей текущей машины, например test.local
в дополнении к hostname.local
(если ваша машина называется hostname
).
Сначала установите avahi-utils, если вы еще этого не сделали:
sudo apt-get install avahi-utils
Затем поместите следующее в /etc/systemd/system/avahi-alias@.service
[Unit]
Description=Publish %I as alias for %H.local via mdns
[Service]
Type=simple
ExecStart=/bin/bash -c "/usr/bin/avahi-publish -a -R %I $(avahi-resolve -4 -n %H.local | cut -f 2)"
[Install]
WantedBy=multi-user.target
(The avahi-resolve
используется для получения текущего IP-адреса, который уже публикуется для имени хоста)
Затем, чтобы сделать текущую машину доступной как test.local
в дополнение к текущему hostname.local
, вы должны включить службу с помощью:
sudo systemctl enable --now avahi-alias@test.local.service
Вы можете включить несколько псевдонимов, запустив несколько служб, например avahi-alias@test1.local.service
и avahi-alias@test2.local.service
, который использует функции нескольких экземпляров systemd:
sudo systemctl enable --now avahi-alias@test1.local.service
sudo systemctl enable --now avahi-alias@test2.local.service
Естественно, вы также можете отключить каждый псевдоним независимо, используя:
sudo systemctl disable --now avahi-alias@test2.local.service
Наслаждайтесь!
Вы можете настроить Авахи публиковать произвольные имена хостов, используя /etc/avahi/hosts
, но вам нужно указать точный IP-адрес для сопоставления имени хоста. Похоже, что нет способа опубликовать несколько имен хостов для IP-адресов, обнаруженных Avahi. Вы можете написать сценарий запуска, который заполняет /etc/avahi/hosts
после обнаружения IP-адреса виртуальной машины.
Я использовал небольшой проект под названием avahi-aliases
раньше его не было в репозитории debian, и, похоже, он не поддерживается. Также на github здесь https://github.com/airtonix/avahi-aliases
Почему бы просто не настроить свой сервер ubuntu в качестве сервера DNS и DHCP и не беспокоиться о zeroconf? Сначала настройте DHCP-сервер на выдачу адресов в некотором диапазоне, достаточном для ваших нужд. Затем настройте на машине сервер имен пересылки. Эти инструкции очень похожи на то, что вы хотите сделать. По сути, вы разрешаете DHCP-серверу менять ваш DNS-сервер на лету. Затем, когда подключаются другие виртуальные машины в сети, они отправляют свои предварительно настроенные имена на DHCP-сервер. Сервер DHCP, в свою очередь, устанавливает эти имена в DNS для вашего локального домена.
Другой очень простой вариант - настроить что-то вроде DNSmasq. DNSmasq может читать файл сервера / etc / hosts и передавать эти записи через DNS на другие машины в вашей сети. Таким образом, в этом сценарии вы должны поддерживать большой файл hosts на сервере со всеми именами виртуальных машин, и машина снова будет автоматически обслуживать эти имена через DNS. В этом случае вы все равно захотите использовать dhcp, чтобы виртуальные машины могли автоматически получать адреса в вашей сети, но это более простой подход, чем настройка BIND для dns.
Я подозреваю, что dhcp + dnsmasq, вероятно, сработает для вас, если вы не пытаетесь запустить большое количество виртуальных машин.