Видео смотреть бесплатно

Смотреть русское видео

Официальный сайт 70rus 24/7/365

Смотреть видео бесплатно

17.05.10 19:12 jerromo

How-to`sНастройка dnsmasq для одновременной работы с DNS провайдера и локальной сети

Дано:
  1. Несколько серверов имен провайдера, полученных с помощью dhcp.
  2. Локальный сервер имен для внутренних доменов.
  3. Машина с Ubuntu/Debian (Проверялось на Ubuntu 10.04).

Для решения будем использовать dnsmasq и resolvconf.
dnsmasq - это легкий кэширующий DNS, DHCP сервер,
а resolvconf - пакет для управления информацией о серверах имён.
Для начала установим пакеты:

1
2
~$ sudo apt-get install dnsmasq resolvconf
 

В Ubuntu 10.04 пакет resolvconf не требует конфигурации и работает из коробки.
А dnsmasq свой адрес (127.0.0.1) установит сам после перезагрузки.

Далее настроим dnsmasq.

Сохраним конфигурационный файл по умолчанию и создадим новый с нужными настройками.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
~$ sudo -i
~# mv /etc/dnsmasq.conf /etc/dnsmasq.conf.origin
~# cat > /etc/dnsmasq.conf << EOF
# слушать только loopback
interface=lo
bind-interfaces
# локальный домен для автоматической подстановки в случае неполного доменного имени
domain=example.net
# сервера локальной сети для домена example.net
server=/example.net/192.168.0.1
server=/0.168.192.in-addr.arpa/192.168.0.1
# логируем запросы в файл /var/log/dnsmasq.log
log-queries
log-facility=/var/log/dnsmasq.log
EOF
 


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

Все, теперь запросы для локальных доменов будут уходить на адрес 192.168.0.1
А так же, все запросы теперь кэшируются, что должно положительно сказать на скорости преобразования имен.

Другой вариант, eсли вместо локальной сети есть vpn и свои DNS,
тогда файл конфигурации будет такой:

1
2
3
4
5
6
7
8
9
10
11
12
13
~# cat > /etc/dnsmasq.conf << EOF
# слушать только loopback
interface=lo
bind-interfaces
# запрашивать все доступные сервера
all-servers
# запрашивать строго в порядке следования
strict-order
# логируем запросы в файл /var/log/dnsmasq.log
log-queries
log-facility=/var/log/dnsmasq.log
EOF
 

Порядок следования серверов для интерфесов задаетcя resolvconf в /etc/resolvconf/interface-order



Пояснения к файлу настроек dnsmasq (по умолчанию), в части касающейся DNS:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# Файл настроек dnsmasq.
#
# Не пересылать обычные имена (без завершающей точки или доменного имени)
#domain-needed
# Не пересылать адреса из не маршрутизируемых сетей (192.168.0.0/16, 10.0.0.0/8 и т.п.)
#bogus-priv
# Фильтровать все бесполезные запросы windows (это блокирует все SRV запросы Kerberos, SIP, XMMP)
#filterwin2k

# Изменить местонахождение файла /etc/resolv.conf
#resolv-file=
# Опрашивать для каждого запроса каждый доступный сервер строго в порядке следования в файле /etc/resolv.conf
#strict-order
# Игнорировать сервера в файле /etc/resolv.conf
#no-resolv
# Не отслеживать изменения в списке серверов (в том числе в файле /etc/resolv.conf)
#no-poll

# Добавить сервер имен для домена
#server=/localnet/192.168.0.1
# Добавить сервер имен для запроса домена по адресу
#server=/3.168.192.in-addr.arpa/10.1.2.3

# Добавить локальный домен. Информация об адресе берется из /etc/hosts или DHCP
#local=/localnet/

# Добавить определенный адрес для домена (так же как и /etc/hosts)
#address=/doubleclick.net/127.0.0.1
# Допустимы и ipv6 адреса
#address=/www.thekelleys.org.uk/fe80::20d:60ff:fe36:f83

# Контроль запросов по интерфейсам. Запрос к серверу 10.1.2.3 будет исходить с интерфейса eth1
# --server=10.1.2.3@eth1
# или установить исходящий адрес и порт для запроса сервера 10.1.2.3
# [email protected]#55

# Изменения пользователя и группы под которыми работает dnsmasq
#user=
#group=

# Определение интерфейсов для прослушивания запросов (lo, eth0, ppp0)
# Для определения нескольких интерфесов повторить interface=
#interface=
# Исключение интерфейсов для прослушивания
#except-interface=
# Определить точный адрес для прослушивания
#listen-address=
# Не принимать DHCP запросы с интерфейса
#no-dhcp-interface=

# Биндить сокет только на указанных интерфейсах
#bind-interfaces

# Не использовать /etc/hosts
#no-hosts
# Дополнительный файл с хостами
#addn-hosts=/etc/banner_add_hosts

# Добавлять определенный ниже домен также к хостам в /etc/hosts
#expand-hosts

# Локальный домен для автоматической подстановки в случае неполного доменного имени
#domain=thekelleys.org.uk

# Установка разных доменов для определенных подсетей
#domain=wireless.thekelleys.org.uk,192.168.2.0/24
# Установка разных доменов для определенных адресов
#domain=reserved.thekelleys.org.uk,192.68.3.100,192.168.3.200

# Размер кэша
#cache-size=150

# Не кэшировать негативные ответы от серверов
#no-negcache

# Установить время жизни кэша запросов к файлу /etc/hosts и DHCP
#local-ttl=

# Для возвращения корректного ответа NXDOMAIN от запросов к незарегистрированным .com and .net хостам
#bogus-nxdomain=64.94.110.11

# Исправление результата ответа от серверов (определение псевдонима адреса)
#alias=1.2.3.4,5.6.7.8
# Определение карты ответов 1.2.3.x до 5.6.7.x по маске 255.255.255.0
#alias=1.2.3.0,5.6.7.0,255.255.255.0
# Еще вариант 192.168.0.10->192.168.0.40 до 10.0.0.10->10.0.0.40
#alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0

# Возвращает запись MX для домена "maildomain.com" с хостом servermachine.com и весом 50
#mx-host=maildomain.com,servermachine.com,50

# Установка хоста по умолчанию для записей MX при использовании опции localmx
#mx-target=servermachine.com

# Возвращает запись MX с хостом mx-target для всех локальных машин
#localmx

# Возвращает в записи MX себя для всех локальных машин
#selfmx

# Поля SRV записи: <name>,<target>,<port>,<priority>,<weight>
# Примеры:
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389
#srv-host=_ldap._tcp,ldapserver.example.com,389
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,1
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,2
#srv-host=_ldap._tcp.example.com
#ptr-record=_http._tcp.dns-sd-services,"New Employee Page._http._tcp.dns-sd-services"
#txt-record=example.com,"v=spf1 a -all"
#txt-record=_http._tcp.example.com,name=value,paper=A4

# Определения псевдонимов для локальных хостов (из /etc/hosts или DHCP)
# Пример: bert псевдоним bertrand
#cname=bertand,bert

# Логирование для отладки
#log-queries

# Логирование дополнительной информации о DHCP транзакциях
#log-dhcp

# Включение дополнительных конфигурационных файлов
#conf-file=/etc/dnsmasq.more.conf
#conf-dir=/etc/dnsmasq.d
 




Username 17.05.10 19:30 # +1
Неистово плюсую, добавляю в мемориз и реквестирую редактирование поста для вообще идиотов.
jerromo 17.05.10 19:35 # +0
А по конкретнее? что-то непонятно?
Username 18.05.10 10:02 # +0
Не. Просто чем разжеванней материал, тем он ценее в итоге. ЭЭээ порог вхождения в статью меньше
lockie 17.05.10 19:57 # +0
> редактирование поста для вообще идиотов
Тоже чёт не понял.
wat_che 17.05.10 20:05 # +0
хорошая шняга, только у dnsmasq есть 1 минус, при перезагрузке кеш обнуляется. Из-за этого пользовался pndns, но его глюки достали (временами переставал резольвить локальные адреса, то просто тупо вис)поэтому вернулся назад на dnsmasq
jerromo 17.05.10 21:28 # +1
Призрачный минус. Время жизни доменной записи как правило 2-3 часа (в основном), поэтому они в кэше все равно умирают.
wat_che 17.05.10 22:37 # +0
Время жизни доменной записи
где?
jerromo 17.05.10 22:43 # +2
в кэшах NS серверов. Прописана в SOA доменов. wiki
wat_che 17.05.10 23:16 # +0
а причем тут кеши ns серверов ? Насколько я понимаю принцип работы локального кеширующего днс в том, что он сначала ищет запись у себя, а если не находит отправляется искать её выше по иерархии. Или я ошибаюсь?
jerromo 17.05.10 23:31 # +2
нет все правильно. Только надо понимать, что кэш dnsmasq ничем не отличается от кэша вышестоящих серверов. В его кэше записи также умирают по истечении TTL
wat_che 17.05.10 23:54 # +0
# Установить время жизни кэша запросов к файлу /etc/hosts и DHCP
#local-ttl=

вот тут -то эти плюшки и настраиваются :)
jerromo 18.05.10 00:08 # +1
неа. тут настраиваются плюшки только для адресов прописанных в файле /etc/hosts и полученных от встроенного DHCP. И какой смысл кэшировать записи находящиеся и так локально?
TiGR 17.05.10 23:33 # +0
Вопрос. У меня такая ситуация - есть много локальных проектов, они все в зоне .dev, то есть, любой адрес, оканчивающийся на .dev отправляется апачу, который сам по нему определяет путь до сайта (то есть для создания нового сайта не нужны вообще никакие правки httpd.conf, используется mass hosting).

Так вот, я для этого использовал bind9, а можно ли такую же задачу решить этими инструментами (то есть резолвить все *.dev как 127.0.0.1)?
jerromo 17.05.10 23:40 # +2
Можно. В конфиге прописать:
address=/dev/127.0.0.1
TiGR 18.05.10 22:29 # +0
Спасибо, всё настроил. Можно bind не ставить. :)
dinix 18.05.10 08:58 # +1
jerromo спасибо! второй пример с указанием конкретных dns серверов это то что надо. Все заработало как и хотел.
axule 18.05.10 11:31 # +0
что то у меня с утра плохо думается сегодня, разжуйте поплиз... =)
в случае использования bind на локальной машине все ясно:
в /etc/resolv.conf прописываем nameserver 127.0.0.1 поднимаем bind на loopbak'e и в конфигурации bind указываем forvarders сервера у которых bind спрашивает то чего не знает.
А тут я что то запутался dnsmasq смотрит этот самый /etc/resolv.conf в котором те самые сервера у которых он спрашивает, а где же тогда говорить системе что ей надо искать DNS на loopback интерфейсе?
wat_che 18.05.10 12:45 # +0
DNS-сервер на интерфейсе, например eth0, указывается как 127.0.0.1. Как-то так наверное.
jerromo 18.05.10 13:53 # +0
тут описанную картину меняет пакет resolvconf. Это именно он разруливает ситуацию с разными dns с разных интерфейсов. Во первых /etc/resolv.conf перестает быть файлом и становится симлинком на автоматом генерируемый файл. Его теперь руками править нельзя. Во вторых dnsmasq, как впрочем и bind, умеет сообщать resolvconf свой адрес и интерфейс (типа 127.0.0.1, после чего resolv.conf содержит только его). resolvconf все полученные адреса серверов по интерфейсам хранит в /etc/resolvconf/run/interface/, и вызывает скрипты /etc/resolvconf/update.d если информация обновилась. Все заинтересованные, в том числе dnsmasq и bind, имеют там свои обработчики и забирают себе адреса. И да bind тоже динамически добавляет сервера в forwarders {} у себя в конфиге (/var/run/bind/named.options).
Так что /etc/resolv.conf трогать не надо, кому надо тот адреса DNS узнает сам. А если надо прописать свои сервера руками, тогда либо в конфиги dnsmasq, bind, etc, либо в /etc/resolvconf/resolv.conf.d/{base|head|tail}.
PS. Получилось несколько сумбурно, но надеюсь понятно :)
TiGR 18.05.10 14:45 # +0
А оно нормально дружит с Network Manager? Он ведь прямо в resolv.conf пишет.
jerromo 18.05.10 15:52 # +0
я Network Manager не использую, поэтому точно сказать не могу. но скорее всего тут либо Network Manager либо resolvconf. Они по сути занимаются одним и тем же в плане DNS, т.е. разруливают разные сервера с разных интерфейсов. так что конфликт неизбежен.
jerromo 18.05.10 16:09 # +0
сейчас проверил на Ubuntu 10.04, работает нормально. /etc/resolv.conf на месте, а свои записи он поместил в /etc/resolvconf/run/interface/NetworkManager.

Лучшие блоги (все 140)
Топ пользователей Топ блогов
Топ пользователей Топ блогов
Элита (все 2784 из 213 городов)
Топ пользователей Топ блогов
welinux.ru

Смотреть видео онлайн

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн