Перейти к содержимому
Калькуляторы

Динамический DNS Динамическая смена ip-адреса в DNS

Доброго дня!

 

Есть несколько серверов pptp c адресами

192.168.0.2

192.168.0.3

192.168.0.4

 

На данный момент, задействован только 192.168.0.2, но хотелось бы распределить нагрузку pptp сервера,

и как решения, я думаю, что можно как-то реализовать динамическую смену записи

был vpn.net [192.168.0.2]

на vpn.net [192.168.0.3]

в DNS-сервере, чтобы ппри следующем обращении, клиент подключился уже к другому серверу.

 

У клиентов IP прописан статический 192.168.16.0/16, в том числе и DNS 192.168.0.254

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Просто прописать у vpn.net несколько ИП адресов и получите балансировку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

только смотрите чтоб ответ не превысил 512 байт, а то некоторые роутеры тупят. сколько это записей не помню, но не очень много

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А как то можно сделать, чтобы по какому то условию исключать включать в днс ip-сервера?

Например если не доступен первый сервер, то днс-сервер не должен его выдавать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

только смотрите чтоб ответ не превысил 512 байт, а то некоторые роутеры тупят. сколько это записей не помню, но не очень много

512 это для некоторых длинков перебор. =) грязный хак, с которым и овцы ("умные" роутеры, которые знают про флаг tc, но не могут 53/tcp) целы, и волки (длинки) сыты:

%cat 9.4-ESV-R5-P1-named-client.c.diff
--- contrib/bind9/bin/named/client.c    2012-04-08 07:43:41.000000000 +0600
+++ contrib/bind9/bin/named/client.c    2012-12-27 15:29:01.000000000 +0600
@@ -634,7 +634,7 @@
       }

       client->signer = NULL;
-       client->udpsize = 512;
+       client->udpsize = 368;
       client->extflags = 0;
       client->ednsversion = -1;
       dns_message_reset(client->message, DNS_MESSAGE_INTENTPARSE);
@@ -988,7 +988,7 @@
       result = dns_message_rendersection(client->message,
                                          DNS_SECTION_QUESTION, 0);
       if (result == ISC_R_NOSPACE) {
-               client->message->flags |= DNS_MESSAGEFLAG_TC;
+               //client->message->flags |= DNS_MESSAGEFLAG_TC;
               goto renderend;
       }
       if (result != ISC_R_SUCCESS)
@@ -998,7 +998,7 @@
                                          DNS_MESSAGERENDER_PARTIAL |
                                          render_opts);
       if (result == ISC_R_NOSPACE) {
-               client->message->flags |= DNS_MESSAGEFLAG_TC;
+               //client->message->flags |= DNS_MESSAGEFLAG_TC;
               goto renderend;
       }
       if (result != ISC_R_SUCCESS)
@@ -1008,7 +1008,7 @@
                                          DNS_MESSAGERENDER_PARTIAL |
                                          render_opts);
       if (result == ISC_R_NOSPACE) {
-               client->message->flags |= DNS_MESSAGEFLAG_TC;
+               //client->message->flags |= DNS_MESSAGEFLAG_TC;
               goto renderend;
       }
       if (result != ISC_R_SUCCESS)
@@ -2103,7 +2103,7 @@
       client->tcpmsg_valid = ISC_FALSE;
       client->tcpbuf = NULL;
       client->opt = NULL;
-       client->udpsize = 512;
+       client->udpsize = 368;
       client->extflags = 0;
       client->ednsversion = -1;
       client->next = NULL;

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А как то можно сделать, чтобы по какому то условию исключать включать в днс ip-сервера?

Например если не доступен первый сервер, то днс-сервер не должен его выдавать

скриптами правит файл зоны или удалять запись в базе

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А как то можно сделать, чтобы по какому то условию исключать включать в днс ip-сервера?

Например если не доступен первый сервер, то днс-сервер не должен его выдавать

в вашу зону vpn.net добавляете $INCLUDE c файлом ip ваших серверов.

Скрипт опрашивает 3 сервера, если один сдох , вносит только два ip.

Затем делаете rpcbind reload и у вас зона уже с двумя IP.

Но я делал иначе, в скрипте указывал "вес" каждого VPN-сервера(разные по мощности), опрашивал и генерил зону с наиболее не загруженным. Скрипт работал каждую 1 мин. В зону попадал не нагруженный VPN сервер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

реализовать динамическую смену записи

был vpn.net [192.168.0.2]

на vpn.net [192.168.0.3]

в DNS-сервере, чтобы ппри следующем обращении, клиент подключился уже к другому серверу.

 

Только не забудьте уменьшить TTL для A записи, иначе получится "при следующем обращении через неделю клиент наконец-то решит обратиться к новому серверу".

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.