Jump to content
Калькуляторы

Динамический 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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

только смотрите чтоб ответ не превысил 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;

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

был vpn.net [192.168.0.2]

на vpn.net [192.168.0.3]

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

 

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

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.