Два DNS, две сети

Автор speed_vm, 22 мая 2015, 09:54:21

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

speed_vm

Доброго времени суток!
Установлен Debian 7. В компе две сетевые карты для двух сетей (10.x.x.x и 192.x.x.x). В этих сетях разные DNS серверы. Каким образом можно настроить resolv.conf для того, чтобы пинговались имена компов из этих сетей.
Вроде как можно настроить через /etc/dhcp/dhclient.conf. Подскажите, как это можно сделать.
P.S. В сетях развернуты разные домены. Для сети 10.x.x.x адрес получаю по dhcp, для сети 192.x.x.x адрес задаю руками.

sandaksatru

Просто укажите оба DNS. Первый тот, к которому чаще всего обращаетесь. Для конкретных сетей можно сконфигурировать лишь обратные зоны, и то подняв свой кеширующий DNS.

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

Хотя можно поступить следующим образом:
Поднять свой bind9, настроить его на кеширование зон - одну зону с одного сервера, другую с другого. А в resolv.conf указать 127.0.0.1. Тогда при разрешении имени в адрес машин из разных зон он будет отсылать запрос на соответствующий DNS.

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

speed_vm

#2
Дело в том, что при загрузке файл /etc/resolv.conf перезаписывается, и настройки устанавливаются для первой сети:
domain domain.com
search domain.com
nameserver 10.x.x.1
nameserver 10.x.x.2

Если менять руками этот файл после конфигурации на такой:
domain domain.com
search domain.com domain2.com
nameserver 10.x.x.1
nameserver 10.x.x.2
nameserver 192.x.x.1
nameserver 192.x.x.2

То из первой сети компы пингуются, из второй - нет.

Хосты из обоих сетей запинговались при указании серверов и доменов в обратном порядке. Т.е. вывод /etc/resolv.conf:
domain domain2.com
search domain2.com domain.com
nameserver 192.x.x.1
nameserver 192.x.x.2
nameserver 10.x.x.1
nameserver 10.x.x.2

Только пинг-запросы очень долго стали выполнятся. С чем это может быть связано? Т.е. я понимаю, что это связано с наличием двух сетей и днс серверов в них. Можно ли сделать так, чтобы пинги к основной сети (к одной из сетей) проходили "без тормозов"? И почему, если указать в resolv.conf сначала днс 10.x.x.x, то сеть 192.x.x.x не пингуется, а если указать наоборот, то обе сети пингуются, но пинги УЖАСНО тормозят?

sandaksatru

Цитата: speed_vm от 22 мая 2015, 11:39:48Дело в том, что при загрузке файл /etc/resolv.conf перезаписывается, и настройки устанавливаются для первой сети:
Resolv.conf перезаписывается dhcp-клиентом. Скорей всего у вас установлен isc-dhcp-client, идущий в Debian по умолчанию. Чтобы всегда использовать вначале определённое значение парамтра, перед получаемым по dhcp, нужно указать это в файле настроек dhclient.conf. ЕМНИП, за это отвечает опция pretend:
interface "ethX" {
    prepend domain-name-servers 192.x.x.1, 192.x.x.2;
    request routers, subnet-mask, broadcast-address, ntp-servers, domain-search, domain-name, domain-name-servers, host-name;
}

Или можно не указывать pretend, а просто убрать параметры DNS (domain-search, domain-name, domain-name-servers, host-name) из request, тогда resolv.conf будет статичен.

И ещё, через какой интерфейс осуществляется выход в интернет? Если через настраиваемый статически, то уберите пареметр routers в опции request, а маршруты в этой сети пропишите статически для этого интерфейса.

Для полноты картины неплохо бы знать все получаемые маршруты и настройки. Скиньте вывод ip a && ip r

Цитата: speed_vm от 22 мая 2015, 11:39:48
Только пинг-запросы очень долго стали выполнятся. С чем это может быть связано? Т.е. я понимаю, что это связано с наличием двух сетей и днс серверов в них. Можно ли сделать так, чтобы пинги к основной сети (к одной из сетей) проходили "без тормозов"? И почему, если указать в resolv.conf сначала днс 10.x.x.x, то сеть 192.x.x.x не пингуется, а если указать наоборот, то обе сети пингуются, но пинги УЖАСНО тормозят?
Пингуете по доменному имени? Имя домена полностью прописываете? Если пинговать по адресу, задержка имеется?

speed_vm

Цитата: sandaksatru от 24 мая 2015, 00:42:07И ещё, через какой интерфейс осуществляется выход в интернет? Если через настраиваемый статически, то уберите пареметр routers в опции request, а маршруты в этой сети пропишите статически для этого интерфейса.
Выхода в инет нет. Развернуты две закрытые сети с разными доменами и адресными пространствами.
Цитата: sandaksatru от 24 мая 2015, 00:42:07Пингуете по доменному имени? Имя домена полностью прописываете? Если пинговать по адресу, задержка имеется?
Пингую по по разному. Задержки и там, и там. Если пинговать по ip, задержек нет. Более подробно (с выводом команд) напишу завтра, когда на работе окажусь. Благодарю sandaksatru за то, что не бросаете один на один с моей бедой!

sandaksatru

Ок, дождёмся вывода сетевых параметров. А пока подскажу:
Цитата: speed_vm от 24 мая 2015, 11:26:07Выхода в инет нет. Развернуты две закрытые сети с разными доменами и адресными пространствами.
Если выхода в инет нету, то в качестве маршрута по умолчанию лучше оставить шлюз той сети, из которой/в которую больше всего идёт запросов. Маршрут для второй сети должен иметь меньшую метрику. Соответственно, в resolv.conf должен также стоять DNS от наиболее часто используемой сети первым. При такой конфигурации задержки по ip должны исчезнуть, по доменному имени задержки миогут быть только при обращении ко второй сети. Чтобы и их не было, то, как я указал выше, вам стоит поднять bind9 и настроить его на кеширование зон с других dns, тогда в настройках dhclient.conf в опции prepend domain-name-servers нужно будет указать локальный адрес 127.0.0.1, либо вручную указать его в resolv.conf, а из request убрать всё, что относится к DNS.

Заодно тогда дайте вывод /etc/network/interfaces, чтобы в случае чего я могу предметно подсказать.

speed_vm

#6
Сеть 10.x.x.x основная, ip адрес получаю для неё автоматически. Сеть 192.x.x.x второстепенная, ip адрес задаю вручную. В /etc/dhcp/dhclient.conf добавляю следующие строки:
append domain-name " domain2.com";
append domain-name-servers 192.x.x.1, 192.x.x.2

Строка request уже присутствовала и содержала следующие параметры:
request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, domain-search, host-name, dhcp6.name-servers, dhcp6.domain-search, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes,ntp-servers;
При перезапуске службы networking соответственно получаю следующий resolv.conf:
domain domain.com
search domain.com domain2.com
nameserver 10.x.x.1
nameserver 10.x.x.2
nameserver 192.x.x.1
nameserver 192.x.x.2

При такой конфигурации пинги в основную сеть идут без задержек по имени и адресу. Во второстепенную сеть пинги идут без задержек по адресу, а по имени машины не пингуются (ни по короткому имени, ни по длинному):
ping: unknown host host
ping: unknown host host.domain2.com

Вывод ip r:
default via 10.x.x.1 dev eth0
10.x.x.0/23 dev eth0  proto kernel  scope link  src 10.x.x.14
192.x.x.0/24 dev eth1  proto kernel  scope link  src 19.x.x.10

Задержки для второстепенной сети погоды не сделают, лишь бы в первую сеть пинги шли без "тормозов".

sandaksatru

Я не совсем прозрачно представляю логику работы NS запросов с клиентов. Я тут у себя немного потестировал, в общем у меня получилось, что оба запроса с подстановкой суффиксов, указанных в поле search, ушли первому в списке нэймсерверу, остальные два запроса другим двум нэймсерверам ушли по хостнейму, без добавки имени домена, и соответственно вернули нулевой результат. То есть получается, resolv.conf поддерживает максимум три DNS. Но почему у вас третий не получает запрос - хз. Попробуйте поснимайте дампы при выполнении пингов по имени:
tcpdump -nn -i eth[i]X[/i] 'proto \udp and port 53'

Может кто ещё подскажет что...

speed_vm

Заметил странность: поставил наоборот настройки для интерфейсов и кабели поменял местами. В этом случае первая сеть (10.x.x.x) всё также отлично пингуется, а хосты из второй при таком раскладе перестали принговаться даже по адресу.

endru

Цитата: speed_vm от 25 мая 2015, 17:53:32Заметил странность: поставил наоборот настройки для интерфейсов и кабели поменял местами
значит что то намудрил.

по теме: скорее всего 3 DNS сервер и последующие отбросятся, если их ответ не будет заслуживать доверия (например, если эти DNS кэширующие)
domain domain1.com
search domain1.com domain2.com
nameserver 10.x.x.1
nameserver 192.x.x.1

для корректной работы в 2-х сетях нужно в файле /etc/hosts прописать имя компьютера для сетей:
127.0.1.1 compname conpname.domain1.com compname.domain2.com

speed_vm

#10
Решил оставить одну сеть (192.x.x.x) и настройки для только для неё. В результате на обоих сетевухах "тормоза" (если пинговать по имени машины) при разных конфигурациях resolv.conf и ip адреса (ставил руками и через dhcp). В hosts тоже прописывал домены - не помогает.

Если запускать "ping -n" до хоста, то тормозов нет. Что может быть?

Пока что выхожу из сложившейся ситуации таким образом:
Настроил на первой сетевухе сеть 10.x.x.x, на второй - 192.x.x.x. В /etc/dhcp/dhclient.conf написал:
append domain-name " domain2.com";
prepend domain-name-servers 192.x.x.1
append domain-name-servers 192.x.x.2

Таким образом resolv.conf формируется следующим:
domain domain.com
search domain.com domain2.com
nameserver 192.x.x.1
nameserver 10.x.x.1
nameserver 10.x.x.2
nameserver 192.x.x.2

Компы сетей пингую с помощью "ping -n". В этом случае "задержка" получается только после запуска пинга. Ответы же приходят без "тормозов". Не знаю, являются ли данные манипуляции решением, поэтому тему не закрываю пока. Вдруг кто-то что-нибудь ещё подскажет.
P.S. Забавна, конечно, ситуация, если nameserver 10.x.x.1 стоит первым (т.е. перед 192.x.x.1), то имена компов из второй сети вообще не резолвятся (т.е. появляется сообщение "ping: unknown host" и всё).