LinuxForum.Fans
Тема

DNS client in Linux (trouble)

Автор: dimaonline 7 сообщений 2557 просмотров
#179810

Заметил проблему на Linux вне зависимости от реализации и места установки в Internet:

при обращении к геокластерам с балансировкой по DNS (несколько IP на одном имени DNS) Linux игнорирует TTL DNS сервера для записей и при каждом обращении к такому серверу обращается к новому IP.

Для примера пинг на www2.l.google.com

Windows (каждый раз в период TTL):
C:\dig>ping www2.l.google.com

Обмен пакетами с www2.l.google.com [74.125.79.104] с 32 байтами данных:
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49


Linux:

root@www:/etc/apache2# ping www2.l.google.com
PING www2.l.google.com (74.125.79.104) 56(84) bytes of data.
64 bytes from ey-in-f104.1e100.net (74.125.79.104): icmp_seq=1 ttl=49 time=129 ms
64 bytes from ey-in-f104.1e100.net (74.125.79.104): icmp_seq=2 ttl=49 time=129 ms
--- www2.l.google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 129.428/129.470/129.512/0.042 ms

root@www:/etc/apache2# ping www2.l.google.com
PING www2.l.google.com (74.125.79.147) 56(84) bytes of data.
64 bytes from ey-in-f147.1e100.net (74.125.79.147): icmp_seq=1 ttl=49 time=131 ms
64 bytes from ey-in-f147.1e100.net (74.125.79.147): icmp_seq=2 ttl=49 time=135 ms
--- www2.l.google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 131.440/133.372/135.304/1.932 ms

root@www:/etc/apache2# ping www2.l.google.com
PING www2.l.google.com (74.125.79.99) 56(84) bytes of data.
64 bytes from ey-in-f99.1e100.net (74.125.79.99): icmp_seq=1 ttl=49 time=126 ms
64 bytes from ey-in-f99.1e100.net (74.125.79.99): icmp_seq=2 ttl=49 time=131 ms
--- www2.l.google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 126.788/128.926/131.064/2.138 ms




Как заставить Linux обращаться одному серверу в окне TTL DNS записи?

#179811
dimaonline написал:
Заметил проблему на Linux вне зависимости от реализации и места установки в Internet:

при обращении к геокластерам с балансировкой по DNS (несколько IP на одном имени DNS) Linux игнорирует TTL DNS сервера для записей и при каждом обращении к такому серверу обращается к новому IP.

Для примера пинг на www2.l.google.com

Windows (каждый раз в период TTL):
C:\dig>ping www2.l.google.com

Обмен пакетами с www2.l.google.com [74.125.79.104] с 32 байтами данных:
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49


Linux:

root@www:/etc/apache2# ping www2.l.google.com
PING www2.l.google.com (74.125.79.104) 56(84) bytes of data.
64 bytes from ey-in-f104.1e100.net (74.125.79.104): icmp_seq=1 ttl=49 time=129 ms
64 bytes from ey-in-f104.1e100.net (74.125.79.104): icmp_seq=2 ttl=49 time=129 ms
--- www2.l.google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 129.428/129.470/129.512/0.042 ms

root@www:/etc/apache2# ping www2.l.google.com
PING www2.l.google.com (74.125.79.147) 56(84) bytes of data.
64 bytes from ey-in-f147.1e100.net (74.125.79.147): icmp_seq=1 ttl=49 time=131 ms
64 bytes from ey-in-f147.1e100.net (74.125.79.147): icmp_seq=2 ttl=49 time=135 ms
--- www2.l.google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 131.440/133.372/135.304/1.932 ms

root@www:/etc/apache2# ping www2.l.google.com
PING www2.l.google.com (74.125.79.99) 56(84) bytes of data.
64 bytes from ey-in-f99.1e100.net (74.125.79.99): icmp_seq=1 ttl=49 time=126 ms
64 bytes from ey-in-f99.1e100.net (74.125.79.99): icmp_seq=2 ttl=49 time=131 ms
--- www2.l.google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 126.788/128.926/131.064/2.138 ms




Как заставить Linux обращаться одному серверу в окне TTL DNS записи?

TTL здесь причём?
И у Вас только один ping под виндовсом, сделайте несколько...

#179814

Нет - в Windows просто все пинги имеют одну картину:

C:\dig>ping www2.l.google.com

Обмен пакетами с www2.l.google.com [74.125.79.104] с 32 байтами данных:
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49

C:\dig>ping www2.l.google.com

Обмен пакетами с www2.l.google.com [74.125.79.104] с 32 байтами данных:
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49

C:\dig>ping www2.l.google.com

Обмен пакетами с www2.l.google.com [74.125.79.104] с 32 байтами данных:
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49

#179852
dimaonline написал:
Нет - в Windows просто все пинги имеют одну картину:

C:\dig>ping www2.l.google.com

Обмен пакетами с www2.l.google.com [74.125.79.104] с 32 байтами данных:
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49

C:\dig>ping www2.l.google.com

Обмен пакетами с www2.l.google.com [74.125.79.104] с 32 байтами данных:
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49

C:\dig>ping www2.l.google.com

Обмен пакетами с www2.l.google.com [74.125.79.104] с 32 байтами данных:
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49
Ответ от 74.125.79.104: число байт=32 время=138мс TTL=49

Вообще то это нормальное поведение DNS сервера отдавать "по кругу" ip адреса.
Просто это странное поведение маздая. Кэширует DNS он. Если стоит каспер, то отклучите кэширование DNS и посмотрите что будет.

#179859

Это нормальное поведение DNS сервера, но НЕНОРМАЛЬНОЕ ПОВЕДЕНИЕ функции gethostbyname, так как ответы от DNS приходят с TTL. В период действия TTL запись должна закеширована и не больше не запрашиваться. Так что Windows как раз правильно отрабатывает, а Linux - нет

#179913

Не путайте TTL и по поводу кеша это разные вещи.

#180016
dimaonline написал:
Это нормальное поведение DNS сервера, но НЕНОРМАЛЬНОЕ ПОВЕДЕНИЕ функции gethostbyname, так как ответы от DNS приходят с TTL. В период действия TTL запись должна закеширована и не больше не запрашиваться. Так что Windows как раз правильно отрабатывает, а Linux - нет

Откуда у Вас эта информация, что запись должна быть закэширована?

Войдите или зарегистрируйтесь, чтобы ответить.