Как отключить кэширование DNS или переопределить TTL для определенного имени хоста?

Я использую nc вместо ping:

franklin() {
    local host=franklin.local
    if nc -w1 $host 22 &>/dev/null; then
        echo "connecting locally"
    else
        echo "connecting remotely"
        host=remote.address.of.franklin
    fi
    ssh username@$host "$@"
}

Я добавил "$@" к вызову ssh. Это позволяет нам, Вы быстро выполняете удаленные команды как

franklin uptime

5
03.01.2014, 20:56
3 ответа

Если динамическая служба DNS, которую Вы используете только, позволяет TTL 3 600, то Ваша единственная опция состоит в том, чтобы переключить поставщиков. Действительно нет никакого способа управлять TTL, если поставщик услуг DDNS не дает Вам опцию управлять им.

Проверка TTL

Случайно для проверки то, что TTL для данной записи, которую можно использовать dig со следующими переключателями.

Пример

$ dig +nocmd www.google.com +noall +answer | tail -1
www.google.com.     137 IN  A   74.125.225.82

$ dig +nocmd www.google.com +noall +answer | tail -1
www.google.com.     135 IN  A   74.125.225.115

Таким образом, TTL для этого ответа составляет 137 секунд. Ожидание ~2 секунд и выполнение его снова показывают 135 секунд. TTL означает, сколько времени оставляют, пока запись DNS не истекает, и мы должны пойти, запрашивают авторитетный сервер для домена.

Проверка Max TTL

Если мы должны были запросить авторитетный сервер.

$ dig @ns1.google.com +nocmd www.google.com +noall +answer | tail -1
www.google.com.     300 IN  A   74.125.225.210

Таким образом, фактический TTL для этой записи составляет 300 секунд.

Примечание: Авторитетный сервер также известен, поскольку SOA - Запускается полномочий.

Информация о SOA

Можно запросить домен далее для получения информации о SOA.

$ dig +nocmd dyndns.org any +multiline +noall +answer
dyndns.org.     596 IN SOA ns1.dyndns.org. hostmaster.dyndns.org. (
                863998266  ; serial
                600        ; refresh (10 minutes)
                300        ; retry (5 minutes)
                604800     ; expire (1 week)
                600        ; minimum (10 minutes)
                )
dyndns.org.     85904 IN NS ns5.dyndns.org.
dyndns.org.     85904 IN NS ns1.dyndns.org.
dyndns.org.     85904 IN NS ns2.dyndns.org.
dyndns.org.     85904 IN NS ns3.dyndns.org.
dyndns.org.     85904 IN NS ns4.dyndns.org.
dyndns.org.     12268 IN MX 10 mail.dyndns.com.
dyndns.org.     12268 IN MX 20 mx2.mailhop.org.
dyndns.org.     179 IN A 204.13.248.116

Изменение TTLs

Единственный способ изменить запись DNS TTL (за пределами своего рода API, который мог бы обеспечить Ваш регистратор) через сервер.

Пример

В Связывают Вас, мог установить Ваш зональный файл как так:

;Zone file for liquidweb.com
$TTL 14400
@      86400    IN      SOA     ns.liquidweb.com. admin.liquidweb.com. (
2009022402      ; serial, todays date+todays
86400           ; refresh, seconds
7200            ; retry, seconds
3600000         ; expire, seconds
86400 )         ; minimum, seconds
liquidweb.com. 86400 IN NS   ns.liquidweb.com.
liquidweb.com. 86400 IN NS   ns1.liquidweb.com.
liquidweb.com.  IN A   209.59.139.21
localhost  IN A   127.0.0.1
liquidweb.com.  IN MX 0   liquidweb.com.
mail  IN CNAME  liquidweb.com.
www  IN CNAME   liquidweb.com.
ftp  IN A   209.59.139.21
cpanel  IN A   209.59.139.21
webmail  IN A   209.59.139.21

Вышеупомянутый макрос, $TTL установил бы TTL на 14 400 секунд для любых записей, если это не добирается, переопределил для конкретных записей.

Ссылки

5
27.01.2020, 20:38
  • 1
    Спасибо за подробное объяснение. Мой регистратор доменных имен (и в то же время поставщик DNS) не позволяет TTLs ниже, чем 3 600 секунд, таким образом, я решил выполнить сервер DNS на одном из моих VPSs для обработки только субдомена с динамическим IP. –  n.st 04.01.2014, 04:17
  • 2
    @n.st - Я работаю, мои собственные Связывают серверы по подобным причинам также. Довольный это решило Ваш вопрос и спасибо за Q. –  slm♦ 04.01.2014, 04:19

Можно создать хост munin как a CNAME для внешнего домена поэтому только имя munin использует динамический хост DNS.

munin.yourdomain.com. CNAME somedynamic.dyndns.org.

Таким образом, поиски на самом деле переходят в somedynamic.dyndns.org который имеет более низкий динамический TTL, остальную часть yourdomain.com остается на Вашем DNS.

1
27.01.2020, 20:38

Если не возможно обновить DNS, то можно использовать другой DNS как DynDNS.org и использовать стандартный сценарий обновления.

0
27.01.2020, 20:38
  • 1
    , который я на самом деле переместил далеко от без IP, потому что я хотел сделать весь свой сервер доступным под моим собственным доменом, таким образом, я не хочу переключаться назад (почти) всеми средствами. –  n.st 04.01.2014, 00:53

Теги

Похожие вопросы