ayf Posted March 21, 2017 Posted March 21, 2017 Добрый день. Коллеги, поделитесь знаниями, как сделать баласировку нагрузки между серверами ДНС, чтобы не получалось, что при подключении клиентов по DHCP все будут ломиться на примари DNS. Проблема в том, что нужна одна большая сеть типа 10.0.0.0/8. То есть на подсети с разными ДНС я ее разбить не могу. Вставить ник Quote
sol Posted March 21, 2017 Posted March 21, 2017 >> все будут ломиться на примари DNS. Разок не получат ответ и перейдут на второй сервер. К стати, в DHCP нет примари/не примари. ДНС отдаются списком без выделения какой либо роли. По RFC, после получения адреса, ДНС, к которому пойдёт первый запрос, должен выбираться случайно, если ДНС серверов пришло более одного. Вставить ник Quote
Tau Posted March 21, 2017 Posted March 21, 2017 Добрый день. Коллеги, поделитесь знаниями, как сделать баласировку нагрузки между серверами ДНС, чтобы не получалось, что при подключении клиентов по DHCP все будут ломиться на примари DNS. Проблема в том, что нужна одна большая сеть типа 10.0.0.0/8. То есть на подсети с разными ДНС я ее разбить не могу. Какой DHCP? Почему сегментировать не можете? Вставить ник Quote
ayf Posted March 21, 2017 Author Posted March 21, 2017 Добрый день. Коллеги, поделитесь знаниями, как сделать баласировку нагрузки между серверами ДНС, чтобы не получалось, что при подключении клиентов по DHCP все будут ломиться на примари DNS. Проблема в том, что нужна одна большая сеть типа 10.0.0.0/8. То есть на подсети с разными ДНС я ее разбить не могу. Какой DHCP? Почему сегментировать не можете? DHCP на рутере Cisco. Клиент поставил задачу, что все абоненты (несколько тысяч человек) должны быть в одной сети. Вставить ник Quote
Saab95 Posted March 21, 2017 Posted March 21, 2017 Поставьте несколько DNS серверов с одинаковыми IP адресами в разных участках сети - если терминация всей подсети будет происходить не в одном месте. Вставить ник Quote
myth Posted March 21, 2017 Posted March 21, 2017 Клиент поставил задачу, что все абоненты (несколько тысяч человек) должны быть в одной сети. ссзб Вставить ник Quote
ayf Posted March 21, 2017 Author Posted March 21, 2017 Клиент поставил задачу, что все абоненты (несколько тысяч человек) должны быть в одной сети. ссзб Это понятно, но головняк-то мой получится... Поставьте несколько DNS серверов с одинаковыми IP адресами в разных участках сети - если терминация всей подсети будет происходить не в одном месте. В одном. Грубо говоря, громадная площадка с толпой людей:) Вставить ник Quote
v_r Posted March 21, 2017 Posted March 21, 2017 В одном. Грубо говоря, громадная площадка с толпой людей:) Как вариант можно настроить средствами anycast-маршрутизации. Настройте на лупбеках серверов одинаковые адреса, добавьте эти интерфейсы в DNS-сервер (в смысле разрешите отвечать на запросы с адреса лупбека), на маршрутизаторе прописывайте маршруты на адрес лупбека на два эти сервера, и выдаете клиентам адреса лупбеков в качестве DNS сервера. Можно вместо статики настроить динамическую маршрутизацию, принцип не меняется. Маршрутизатор должен уметь ECMP load-balancing и балансировку на /32 сети (последний пункт поддерживают не все L3-свитчи). Из недостатков - нет связи между маршрутом на сервере и статусом DNS сервера: при остановке DNS на одном из серверов трафик все равно будет направляться к нему. Разок не получат ответ и перейдут на второй сервер. В разных ОС по-разному, Windows вроде бы посылает запросы на оба сервера одновременно. А FreeBSD для определения недоступности DNS-сервера требуется несколько минут, правда в некоторых приложениях своя реализация резолвинга, более шустрая. Вставить ник Quote
sol Posted March 21, 2017 Posted March 21, 2017 Windows вроде бы посылает запросы на оба сервера одновременно. Это не так. WireShark в руки. А FreeBSD для определения недоступности DNS-сервера Это не в ОС. Это в glibc. Вставить ник Quote
edo Posted March 21, 2017 Posted March 21, 2017 Ну будут ломиться на один, и что? Как бы нагрузка по сегодняшним меркам смешная. Вставить ник Quote
myth Posted March 21, 2017 Posted March 21, 2017 днс сервера в этой сети будут не самым слабым местом. Где-то на последнем месте Вставить ник Quote
Antares Posted March 21, 2017 Posted March 21, 2017 Проблема в том, что нужна одна большая сеть типа 10.0.0.0/8. в одном бродкасте? Вставить ник Quote
pppoetest Posted March 21, 2017 Posted March 21, 2017 Добрый день. Коллеги, поделитесь знаниями, как сделать баласировку нагрузки между серверами ДНС, чтобы не получалось, что при подключении клиентов по DHCP все будут ломиться на примари DNS. Проблема в том, что нужна одна большая сеть типа 10.0.0.0/8. То есть на подсети с разными ДНС я ее разбить не могу. Я в дхцп делаю роундробин выдачу двух днс по dhcprequest. Вставить ник Quote
dignity Posted March 21, 2017 Posted March 21, 2017 Проще взять сервер потолще и поднять нормальный рекурсор на pdns и будет счастье. Это вообще, иллюзия что нагрузка будет большая. Если уж сильно хочется - haproxy в помощь. Вставить ник Quote
vurd Posted March 21, 2017 Posted March 21, 2017 Я в дхцп делаю роундробин выдачу двух днс по dhcprequest. Как? По теме, поднимите unbound, кеш побольше, чем по-умолчанию и, собственно, всё. Вставить ник Quote
pppoetest Posted March 21, 2017 Posted March 21, 2017 Как? Меняю местами первичный и вторичный сервера в строке опции днс. Вставить ник Quote
ShyLion Posted March 22, 2017 Posted March 22, 2017 Поставьте несколько DNS серверов с одинаковыми IP адресами в разных участках сети - если терминация всей подсети будет происходить не в одном месте. Совет курильщика. Вставить ник Quote
ShyLion Posted March 22, 2017 Posted March 22, 2017 Добрый день. Коллеги, поделитесь знаниями, как сделать баласировку нагрузки между серверами ДНС, чтобы не получалось, что при подключении клиентов по DHCP все будут ломиться на примари DNS. Проблема в том, что нужна одна большая сеть типа 10.0.0.0/8. То есть на подсети с разными ДНС я ее разбить не могу. top - 11:00:18 up 8 days, 20:48, 1 user, load average: 0.18, 0.16, 0.14 Tasks: 101 total, 1 running, 100 sleeping, 0 stopped, 0 zombie %Cpu(s): 5.1 us, 2.7 sy, 0.0 ni, 91.2 id, 0.0 wa, 0.0 hi, 1.0 si, 0.0 st KiB Mem: 1018248 total, 646148 used, 372100 free, 138300 buffers KiB Swap: 8188 total, 140 used, 8048 free. 83220 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10554 named 20 0 256244 121176 3036 S 7.6 11.9 3:11.12 named 11 root 20 0 0 0 0 S 0.7 0.0 39:43.11 rcuos/0 841 root 20 0 452744 9928 6900 S 0.7 1.0 76:29.90 NetworkManager 10 root 20 0 0 0 0 S 0.3 0.0 35:16.52 rcu_sched 822 root 20 0 186916 4576 3664 S 0.3 0.4 9:29.94 vmtoolsd 2462 mysql 20 0 907468 91436 7748 S 0.3 9.0 4:58.56 mysqld 10590 root 20 0 123676 1608 1112 R 0.3 0.2 0:00.09 top 1 root 20 0 129484 3928 2308 S 0.0 0.4 0:23.76 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.10 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 2:23.89 ksoftirqd/0 ... Полторы тысячи абонентов живут в интернете. Виртуалка под VMWare ESXi. RPZ с блеклистом на список роскомнадзора. Короче, проблема, судя по всему, вымышленная. Для отказоустойчивости можно держать два сервера. Балансировать есть смысл при десятках тысячах абонентов. Вставить ник Quote
vurd Posted March 22, 2017 Posted March 22, 2017 2ShyLion реализацию rpz покажите? Вставить ник Quote
ShyLion Posted March 22, 2017 Posted March 22, 2017 2ShyLion реализацию rpz покажите? Там все просто как 3 кпейки. У меня хост, запрашивающий данные из РКН и DNS сервер разные, поэтому на первом мастер зоны, а на DNS сервере-слейв. Скрипт после парсинга пинает мастера: rndc reload zapret, а дальше все само. Серийник только не забудь увеличивать ( уменя тупо time() ). Мастер: zone "zapret" IN { type master; file "zapret.zone"; allow-transfer { slave_ip; }; also-notify { slave_ip; }; //это важно, там есть имена с подчеркиванием check-names ignore; }; Файл зоны: # head /var/named/zapret.zone $ORIGIN zapret. $TTL 1H @ SOA localhost. root (1490176736 1h 15m 30d 2h) NS localhost. cannabay.org A 127.0.0.1 *.cannabay.org A 127.0.0.1 eoliaseeds.com A 127.0.0.1 *.eoliaseeds.com A 127.0.0.1 www.weedy.be A 127.0.0.1 *.www.weedy.be A 127.0.0.1 и т.д. Сам сервер DNS: options { вся обычная фигня... response-policy {zone "zapret"; }; }; zone "zapret" IN { type slave; masters { master_ip; }; check-names ignore; }; named ванильный из стандартного репозитория CentOS 7 Вставить ник Quote
vurd Posted March 22, 2017 Posted March 22, 2017 Спасибо, а то у меня зонами обычными сделано, пухнет сильно. Вставить ник Quote
ShyLion Posted March 22, 2017 Posted March 22, 2017 Логирование: logging { channel rpz { file "data/rpz.log" versions 7 size 1m; severity info; print-time yes; }; category rpz { rpz; }; } 22-Mar-2017 15:57:22.707 client x.x.x.72#39667 (f-slots.org): rpz QNAME Local-Data rewrite f-slots.org via f-slots.org.zapret 22-Mar-2017 15:57:22.708 client x.x.x.72#39667 (casino-automats.com): rpz QNAME Local-Data rewrite casino-automats.com via casino-automats.com.zapret 22-Mar-2017 15:57:22.711 client x.x.x.72#39667 (slotosfera.com): rpz QNAME Local-Data rewrite slotosfera.com via slotosfera.com.zapret Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.