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

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

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this