Назад | Перейти на главную страницу

Настройка dnsmasq для локальной сети

Я и небольшая группа разработчиков только что переехали в новый офис, и я хотел бы настроить 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= записи.

Недостаток этого подхода состоит в том, что все управляемые таким образом имена должны находиться в одном домене.