Я и небольшая группа разработчиков только что переехали в новый офис, и я хотел бы настроить dnsmasq на нашем сервере разработки, чтобы при развертывании там веб-приложений нам не приходилось редактировать наши собственные файлы hosts. У нас есть маршрутизатор с адресом 192.168.3.1, к которому у нас нет доступа. Я решил установить DNS-сервер в окне разработки, и мы все записываем его IP как вторичный DNS-сервер. К сожалению, я изо всех сил пытаюсь заставить эту работу.
Имя разрабатываемого сервера - devbox, его IP-адрес - 192.168.3.99, и на нем работает последняя версия сервера Ubuntu (Karmic).
На моем компьютере работает Ubuntu Desktop (Karmic)
Скажем, у меня есть три веб-сайта: website1, website2, website3, работающих на модуле разработки. Я хочу получить к ним доступ по URL-адресам:
http://website1.devbox
http://website2.devbox
http://website3.devbox
Итак, я настроил Apache в окне разработки, установил dnsmasq и поместил следующие строки в его файл hosts:
192.168.3.99 website1.devbox
192.168.3.99 website2.devbox
192.168.3.99 website3.devbox
и отредактировал мой собственный файл resolv.conf, чтобы включить блок разработки в качестве сервера имен:
nameserver 192.168.3.99
Все работает нормально, я могу зайти на сайты. Проблема в том, что он плохо масштабируется. Я бы хотел, чтобы все домены, заканчивающиеся на .devbox, были отправлены в окно разработки, и это то, с чем я борюсь.
Я пробовал поставить
192.168.3.99 devbox
в файл hosts и отредактировав строку в dnsmasq.conf:
# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/devbox/
Но я не могу заставить его работать. Если я попробую любой URL-адрес, который явно не присутствует в файле hosts окна разработки, поиск DNS завершится ошибкой.
Местная директива для чего-то другого? Я смотрю не в том месте?
Обратитесь к Документация DNSmasq, особенно dnsmasq справочная страница и образец файла конфигурации. В местный ключевое слово указывает DNSmasq выполнять поиск в домене с локальными данными. Это влияет на запросы, отправленные в DNSmasq для foo.localnet и bar.localnet, например. Не думаю, что ты этого хочешь.
# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/localnet/
Чтобы заставить поиск хоста / поддомена разрешаться по конкретному адресу, вы, вероятно, захотите использовать адрес ключевое слово. Второй пример ниже должен позволить web1.devbox и web2.devbox и web73872.devbox всем разрешить по указанному адресу.
# Add domains which you want to force to an IP address here.
# The example below send any host in doubleclick.net to a local
# webserver.
address=/doubleclick.net/127.0.0.1
# for your example
address=/devbox/192.168.3.99
Я использую DNSmasq дома для обработки простых вещей DNS для моей локальной сети; в таком случае, местный и связанные домен и расширять хосты ключевые слова подходят. Сервер DNSmasq является моим основным сервером имен, поэтому все запросы проходят через него; любые нелокальные адреса передаются обратно на сервер имен провайдера. Если возможно, вы можете рассмотреть эту конфигурацию.
Вы также можете установить короткие имена хостов в /etc/hosts
192.168.3.99 website1
192.168.3.99 website2
192.168.3.99 website3
192.168.3.100 website4
и скажите dnsmasq развернуть все имена в /etc/hosts
к .devbox
домен.
local=/localnet/
expand-hosts
domain=devbox
website3.devbox
должен разрешиться.
Это позволяет вам определять DNS-имена через /etc/hosts
только, что мне кажется более удобным, чем dnsmasq address=
записи.
Недостаток этого подхода состоит в том, что все управляемые таким образом имена должны находиться в одном домене.