Данные по сети передаются пакетами. При чём эти пакеты, прежде чем попадут адресату, проходят несколько других сетевых узлов чтобы добраться сначала в локальную сеть адресата, а потом уже непосредственно к нему. Иногда такие пакеты могут выбирать неверный маршрут и блудить. Чтобы они не блудили по сети вечность создавая ненужную нагрузку, у каждого пакета есть своё время жизни.
За время жизни пакета отвечает параметр TTL. Это количество узлов, которые может пройти пакет, прежде, чем он будет уничтожен. При прохождении каждого узла значение TTL для пакета уменьшается, пока не будет равным нулю. Таким образом чем больше TTL, тем более запутанные сети может проходить пакет. В этой статье мы рассмотрим как изменить TTL Linux.
Такими низкоуровневыми параметрами сети как TTL в Linux управляет ядро. Поэтому и настраивать его надо с помощью интерфейса настройки ядра. Но давайте сначала посмотрим какой TTL используется сейчас в вашей системе. Для этого можно воспользоваться командой ping:
ping 127.0.0.1
В информации об отправке каждого пакета отображается TTL, с которым он был отправлен. В данном случае используется значение 64. Для Windows применяется значение TTL 128. Обычно этого вполне достаточно, поскольку между большинством узлов сети не больше 20-30 маршрутизаторов, которые необходимо пройти. Вряд-ли вам придется менять TTL чтобы пакеты смогли достигать нужной вам цели, но зато это может понадобится для обхода блокировок сотовых операторов и решения тому подобных задач.
Чтобы изменить TTL надо изменить значение параметра net.ipv4.ip_default_ttl. Для этого можно воспользоваться такой командой:
sudo sysctl -w net.ipv4.ip_default_ttl=65
Для того чтобы изменения сохранились после перезагрузки можно прописать эту строчку настроек в файл /etc/sysctl.conf:
sudo vi /etc/sysctl.conf
net.ipv4.ip_default_ttl=65
После этого ваш TTL будет 65:
Если вы не хотите менять параметры ядра, можно модифицировать TTL в пакеты при его прохождении через сетевой фильтр iptables. Для этого выполните такую команду:
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 65
Это тоже будет работать. Как видите, смена TTL Linux выполняется совсем не сложно. Если у вас остались вопросы, спрашивайте в комментариях!
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
-
blee
- Posts: 3
- Joined: 2020-03-29 03:40
nftables mangle to set / change ttl hoplimit on host firewal
#1
Post
by blee » 2020-03-29 03:51
I have been trying and researching how to get the same output for
Code: Select all
iptables -t mangle -A PREROUTING -j TTL --ttl-set 65
for nftables.
The closest i am come to something is flowtables.
Can anyone help or point in direction of changing hoplimit to 65 or any number for that reason?
i have changed the TTL on raspbian host machine but this still does not effect clients coming through.
I have also tried putting this iptables setting as it was once translated but it does nothing.
Thank you.
forgive the messy comments
Code: Select all
## this assumes wwan0 is LAN and eth0 is WAN
flush ruleset
## change these
define wan = wwan0
define lan = eth0
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
# established/related connections
ct state established,related accept
# loopback interface
iifname lo accept
## icmpv6 is a critical part of the protocol, we just
## accept everything, you can lookin to making this
## more restrictive but be careful
ip6 nexthdr icmpv6 accept
# we are more restrictive for ipv4 icmp
ip protocol icmp icmp type { destination-unreachable, router-solicitation, router-advertisement, time-exceeded, parameter-problem } accept
ip protocol igmp accept
ip protocol icmp meta iifname eth0 accept
## ntp protocol accept from LAN
udp dport ntp iifname eth0 accept
## DHCP accept
iifname eth0 accept
#ip protocol udp udp sport bootpc udp dport bootps log prefix "FIREWALL ACCEPT DHCP: " accept
## DHCPv6 accept from LAN
#iifname eth0 udp sport dhcpv6-client udp dport dhcpv6-server accept
## allow dhcpv6 from router to ISP
#iifname eth0 udp sport dhcpv6-server udp dport dhcpv6-client accept
# SSH (port 22), limited to 10 connections per minute,
# you might prefer to not allow this from WAN for
# OpenWrt, in which case you should also add an
# iifname eth0 filter in the front so we're only
# allowing from LAN
ct state new tcp dport ssh meter ssh-meter4 {ip saddr limit rate 10/minute burst 15 packets} accept
ct state new ip6 nexthdr tcp tcp dport ssh meter ssh-meter6 {ip6 saddr limit rate 10/minute burst 15 packets} accept
## allow access to LUCI from LAN
iifname eth0 tcp dport {http,https} accept
## DNS for main LAN, we limit the rates allowed from each LAN host to reduce chance of denial of service
iifname eth0 udp dport domain meter dommeter4 { ip saddr limit rate 240/minute burst 240 packets} accept
iifname eth0 udp dport domain meter dommeter6 { ip6 saddr limit rate 240/minute burst 240 packets} accept
iifname eth0 tcp dport domain meter dommeter4tcp { ip saddr limit rate 240/minute burst 240 packets} accept
iifname eth0 tcp dport domain meter dommeter6tcp { ip6 saddr limit rate 240/minute burst 240 packets} accept
## allow remote syslog input? you might want this, or remove this
iifname eth0 udp dport 514 accept
counter log prefix "FIREWALL INPUT DROP: " drop
}
chain forward {
type filter hook forward priority 0; policy drop;
ct state established,related accept
iifname lo accept
iifname eth0 oifname wwan0 accept ## allow LAN to forward to WAN
counter log prefix "FIREWALL FAIL FORWARDING: " drop
}
# chain prerouting {
# type route hook prerouting priority 0; policy drop;
##change ttl to 65
# iifname eth0 ip ttl 65
# established/related connections
# ct state established,related accept
# counter log prefix "FIREWALL FAIL FORWARDING: " drop
# }
}
## masquerading for ipv4 output on WAN
table ip masq {
chain masqout {
type nat hook postrouting priority 0; policy accept;
oifname wwan0 masquerade
}
## this empty table is required to make the kernel do the unmasquerading
chain masqin {
type nat hook prerouting priority 0; policy accept;
}
}
-
blee
- Posts: 3
- Joined: 2020-03-29 03:40
Re: nftables mangle to set / change ttl hoplimit on host fir
#2
Post
by blee » 2020-03-29 18:01
So this portion ended up not being needed:
Code: Select all
chain prerouting {
type route hook prerouting priority 0; policy drop;
##change ttl to 65
iifname eth0 ip ttl set 65
}
For some estranged reason if I put the ‘iptables’ command in to att mangle, it adds it and starts working. If I restart nftables it is removed.
when I add ‘iptables’ entry then run
I get this table added to my output:
Code: Select all
table ip mangle {
chain PREROUTING {
type filter hook prerouting priority -150; policy accept;
counter packets 93541 bytes 74006031 # TTL set to 65
}
chain INPUT {
type filter hook input priority -150; policy accept;
}
chain FORWARD {
type filter hook forward priority -150; policy accept;
}
chain OUTPUT {
type route hook output priority -150; policy accept;
}
chain POSTROUTING {
type filter hook postrouting priority -150; policy accept;
}
}
After I restart nftables, this table is removed.
If I try to copy and paste it into the /etc/nftables.conf file it does not work.
It does not show when running iptables -L
Where is this entry saved??
Also, the ‘packets’ and ‘bytes’ values keep increasing as traffic is passed.
I need to change the default TTL of TCP/IP packets sent from my Ubuntu computer. I found the solution for Windows:
-
To make reg-file:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservic esTcpipParameters] "DefaultTTL"=dword:00000081
-
To execute this commands in console:
netsh int ipv4 set glob defaultcurhoplimit=129 netsh int ipv6 set glob defaultcurhoplimit=129
The question is how should I translate this solution for Ubuntu?
Eric Carvalho
53k102 gold badges134 silver badges161 bronze badges
asked Aug 29, 2015 at 11:31
0
To change the default TTL of TCP/IP packets sent from your Linux computer you can run the following command:
sudo sysctl -w net.ipv4.ip_default_ttl=129
Or:
echo 129 | sudo tee /proc/sys/net/ipv4/ip_default_ttl
Or:
sudo bash -c 'echo 129 > /proc/sys/net/ipv4/ip_default_ttl'
But you have to run one of those commands whenever the computer boots. To make this setting persistent across reboots you could append the following line to the file /etc/sysctl.conf
:
net.ipv4.ip_default_ttl=129
You should do the same with ipv6
instead of ipv4
if you want to change the settings for ipv6 as well.
answered Sep 4, 2015 at 17:26
Eric CarvalhoEric Carvalho
53k102 gold badges134 silver badges161 bronze badges
2
for IPv6:
The other answer here says, «You should do the same with ipv6» but this does not work. IPv6 uses net.ipv6.conf.all.hop_limit
and net.ipv6.conf.default.hop_limit
. However, these values are overwritten by interface-specific names such as net.ipv6.conf.eth0.hop_limit
. To change them all, use:
for N in $(sudo sysctl --all 2>/dev/null |grep -Eo "^net.ipv6.conf.[^.]+.hop_limit"); do
sudo sysctl --write "$N=128"
done
where 128
is the desired new value.
To make this permanent (survive reboot) for IPv4 and IPv6:
sudo sysctl --all 2>/dev/null |grep -E -e "^net.ipv6.conf.[^.]+.hop_limit" -e "net.ipv4.ip_default_ttl" |sudo tee /etc/sysctl.d/11-custom-ttl-hop.conf
answered Jan 20, 2022 at 9:15
bitinerantbitinerant
6796 silver badges9 bronze badges
Содержание
- Как изменить TTL в Linux
- Изменение TTL в Linux
- Изменить ttl linux debian
- Значение ttl
- Как изменить ttl windows
- Как изменить ttl Ubuntu, Debian
- Как изменить ttl MacOS
- Популярные Похожие записи:
- 22 Responses to Как по ping узнать операционную систему хоста
- Как навсегда изменить TTL в Ubuntu?
Как изменить TTL в Linux
Данные по сети передаются пакетами. При чём эти пакеты, прежде чем попадут адресату, проходят несколько других сетевых узлов чтобы добраться сначала в локальную сеть адресата, а потом уже непосредственно к нему. Иногда такие пакеты могут выбирать неверный маршрут и блудить. Чтобы они не блудили по сети вечность создавая ненужную нагрузку, у каждого пакета есть своё время жизни.
За время жизни пакета отвечает параметр TTL. Это количество узлов, которые может пройти пакет, прежде, чем он будет уничтожен. При прохождении каждого узла значение TTL для пакета уменьшается, пока не будет равным нулю. Таким образом чем больше TTL, тем более запутанные сети может проходить пакет. В этой статье мы рассмотрим как изменить TTL Linux.
Изменение TTL в Linux
Такими низкоуровневыми параметрами сети как TTL в Linux управляет ядро. Поэтому и настраивать его надо с помощью интерфейса настройки ядра. Но давайте сначала посмотрим какой TTL используется сейчас в вашей системе. Для этого можно воспользоваться командой ping:
В информации об отправке каждого пакета отображается TTL, с которым он был отправлен. В данном случае используется значение 64. Для Windows применяется значение TTL 128. Обычно этого вполне достаточно, поскольку между большинством узлов сети не больше 20-30 маршрутизаторов, которые необходимо пройти. Вряд-ли вам придется менять TTL чтобы пакеты смогли достигать нужной вам цели, но зато это может понадобится для обхода блокировок сотовых операторов и решения тому подобных задач.
Чтобы изменить TTL надо изменить значение параметра net.ipv4.ip_default_ttl. Для этого можно воспользоваться такой командой:
sudo sysctl -w net.ipv4.ip_default_ttl=65
Для того чтобы изменения сохранились после перезагрузки можно прописать эту строчку настроек в файл /etc/sysctl.conf:
sudo vi /etc/sysctl.conf
После этого ваш TTL будет 65:
Если вы не хотите менять параметры ядра, можно модифицировать TTL в пакеты при его прохождении через сетевой фильтр iptables. Для этого выполните такую команду:
iptables -t mangle -A POSTROUTING -j TTL —ttl-set 65
Это тоже будет работать. Как видите, смена TTL Linux выполняется совсем не сложно. Если у вас остались вопросы, спрашивайте в комментариях!
Источник
Изменить ttl linux debian
Добрый день уважаемые читатели блога, сегодня я хочу вас спросить, а умеете ли вы по команде пинг определить какое устройство или операционная система вам отвечает, если нет, то вы пришли по адресу и я вам расскажу еще одно назначение утилиты ping. Думаю данный материал, будет полезен как новичкам, так и продвинутым пользователям, особенно когда вы ищите причину неисправности в сети или сервисе, встречал много раз, что вы думаете, что вам отвечает один сервер, а на самом деле это другой, так как кто то, что то поменял и не задокументировал.
Значение ttl
Ранее я вам рассказывал про модель OSI, и там у сетевого пакета, есть такое значение TTL (Time To Life), если перевести, то это время жизни пакета. TTL это некий счетчик, который уменьшается на единицу, при прохождении сетевого пакета или как его еще называют, кадра через маршрутизатор, делается это для того, чтобы он, при невозможности найти пункт назначения, вечно не бегал по роутерам, создавая нагрузку и паразитный трафик.
Именно время жизни пакета (TTL) нам и поможет, определить кто там с другой стороны. У каждой операционной системы этот показатель свой, так например
- Cisco TTL > равен 255
- ttl windows > равен 128
- Unix ttl > равен 64
- Android и IOS Apple> 65
- Lumia > 130
Как видите у всех он разный, и давайте разбираться, для примера я пропингую коммутатор Cisco, для этого открываем командную строку Windows, у вас может и linux быть.
Как видите значение ttl тут 255, что и показывает, что отвечает вам IOS у устройства Cisco, как видите команда ping отлично узнала операционную систему хоста с другой стороны.
Попробуем пропинговать unix систему, у меня например в локальной сети шлюзом выступает Kerio Control, на linux версии. Пингуем.
Как видите тут значение ttl равно 64, что означает unix платформу, так могут отвечать различные D-link устройства и другие домашние роутеры.
Давайте еще проверим Windows платформы, например у меня есть Windows 8.1 в локальной сети, сделаем пинг. И видите, что оно равно 128, как я и говорил.
Вот вам. тогда загадка, пингуем Windows Server 2012 R2, на нем есть веб сайт relay.aetp.ru. Что вы видите, а то что значение ttl равно 120, но в Windows же 128 по умолчанию идет, не стыковка 🙂
Все дело в хопах, помните в определении я вам говорил, что значение ttl уменьшается на единицу при следующем шаге и проходе через маршрутизаторы, давайте произведем трассировку до данного адреса.
Как видите сетевой пакет проходит не один хо до нужного адреса, и на определенных этапах он теряет от ttl по единичке. Все теперь вы знаете как узнать ttl windows.
Как изменить ttl windows
Давайте рассмотрим ситуацию, что вам нужно изменить ttl windows, поверьте бывают такие ситуации в жизни, примером может быть компания Yota, с ее дурацкой политикой ограничений Yota на раздачу Wi-Fi. Представим ситуацию, что взяли себе оператора Yota на телефон и решили раздать Wifi на ноутбук, но вы даже не знали подводных камней. в плане фильтрации пакетов со стороны Yota. Она жестко режет скорость, и режет она посредством значения ttl, оно должно быть 64, а если у вас дополнительное устройство, то это лишний хоп и значит ttl меньше, вот для обхода этой подставы с раздачей Wifi на ноутбук от Yota, мы и изменим ttl. Менять ttl мы будем в Windows 10, но данные действия подойдут и для Windows 7 и 8.1.
В итоге у вас откроется редактор реестра Windows. Вам нужно перейти в ветку реестра
В разделе вам нужно создать значение, все зависит от разрядности Windows, если 32 битная, то создаем параметр DWORD (32 бита), если 64 битная, то QWORD (64 бита). Я создаю QWORD.
эта лишняя единица, как раз и пойдет на лишний скачок через ваш телефон с ноутбука и Yota ничего не увидит, как видите изменить ttl windows 10, очень просто.
Как изменить ttl Ubuntu, Debian
И так с Windows мы уже научились, менять ttl, но не у всех стоит именно он, есть люди с Ubuntu например, давайте учиться как обойти ограничение на раздачу интернета через телефон на компьютер с Ubuntu на борту, в случае, если ваш оператор Йота, вы должны сделать несколько простых вещей.
1) Нажать одновременно Ctrl+Alt+T. Так вы вызовете терминал.
2) Ввести первую команду:
3) Попросит ваш пароль, вводим, жмем Enter, далее жмем i — это введет редактор vi в режим редактирования.
4) Вводим сам скрипт фиксирования TTL Ubuntu на значении 65, если у вас Android или iOS (у них стандартный TTL=64), если вы обладатель Люмии, где стандартный TTL равен 128, вам вместо 65 нужно прописать 129. Все это по простейшей формуле, ttl на компе должен быть на 1 больше, чем ttl на телефоне, с которого вы раздаете. Теорию я вам рассказал, а теперь сам скрипт:
5) Далее, для окончания редактирования жмем Esc. Потом сохраняем файл, зажимая Shift+ZZ.
6) Теперь необходимо проставить скрипту права на запуск:
7) Теперь последнее, добавляем все это дело в автозапуск:
Нажимаем Enter. Все будет делаться автоматически и без вашего участия.
Как изменить ttl MacOS
Ну и конечно, нельзя обижать яблочников 🙂 Для изменения ttl на mac делаем следующее
Идем в /Library/StartupItems. Открываем терминал и прописываем:
Создаем там папку (например, это будет yota). В терминале пишем: /Library/StartupItems> sudo mkdir yota
Идем туда. В терминал вставляем: /Library/StartupItems> cd yota/
4) Создаем там скрипт (он должен называться так же как и папка), который хотим выполнять.
Для создания скрипта в терминал вбиваем:
/Library/StartupItems/yota> sudo vim yota
И тут откроется редактор Vim! Сюда копируем сам скрипт:
# Скрипт смены ttl на Mac OS X:
И закрываем Vim с сохранением результата, вводим в виме (редакторе): yota
5) Создаем файл параметров StartupParameters.plist.
/Library/StartupItems/yota> sudo vim StartupParameters.plist
И тут опять откроется редактор Vim! Сюда копируем содержание файла параметров:
Самое главное, чтобы в строчке Provides было прописано то же имя, что и название скрипта и название папки:
И опять закрываем Vim с сохранением результата, для этого вводим: w! StartupParameters.plist
6) Выставляем права на выполнение нашему скрипту.
/Library/StartupItems/fuckingyota> sudo chmod 755 yota
7) в итоге получаем: /Library/StartupItems/yota> ll
9) А сейчас, мы не будем перезагружать комп, а просто стартанем скрипт, чтобы убедиться в его работоспособности:
/Library/StartupItems/yota> sudo SystemStarter start fyota
Резюмируя мы с вами рассмотрели какие значения ttl у каждой операционной системы, рассмотрели для чего они. Мы научились менять ttl на самых распространенных системах, если есть вопросы пишите их в комментариях.
Популярные Похожие записи:
22 Responses to Как по ping узнать операционную систему хоста
Прикольное использование команды пинг
Привет! Я играю в варфейс. TTL на альфа 56. У меня винда 7 (там 128TTL). Какое значение TTL мне выставить в винде. Заранее спс.
Я если честно не игрок и не знаю, что такое варфейс, в Windows уже ttl сделан таким какой он должен быть, а в чем проблема оставаться с параметром 128?
А как изменить TTL Android? И сколько поставить, что бы нормально раздавать wi-fi?
Есть приложение TTL Editor, но там требуются root права.
Это приложение не работает для оператора мтс. Пришло мне уведомление, что с 10.11.2016 за раздачу инета на тарифе «безлимитище» будут снимать 30 зублей. Я установил это приложение. Сегодня пришло уведомление, что я использую передачу инета. И с меня сняли 30 р..
Уроды, что сказать, я поищу еще варианты, если найдете что то рабочее, напишите в комментарии
Здравствуйте! Подскажите, у меня симка вставлена в роутер от МТС 823F, я с ним не чего не делал, я раздаю по WiFi подключаю ноутбук, я на ноутбуки сменил TTL 65, и бывает подключаются смартфон к роутеру, и мне приходят смс Что я раздаю интернет, не подскажите сто сделать? Спасибо!
Возможно у них еще по каким то параметрам идет определение, я поизучаю данный вопрос
Почему для виндовс указываем 130, а для ибунту 129.
Товарищи помогите. Я с макбуками не знаком вообще. задача — TTL поменять на постоянный равный 65. НО что то у меня не работает смена TTL. Делаю все по инструкции, все получается. создаю файл в папке etc, прописываю туда net.inet.ip.ttl=65. перезагружаю проверяю Ping-ом в терминале, пишет ttl=51, причем пингую разные сайты и он каждый раз разный ТТЛ показывает, то 55, то 51, то 53! как так то?! пробую в терминале сменить TTL командой net.inet.ip.ttl=65 (как в инструкции в инете), он пишет что все отлично ttl сменил со стандратного 64 на 65. Не перезагружаясь сразу иду проверять командой ping и он опять пишет каждый раз разный ттл, например пинг до google.com ТТЛ=55, до яндекса ТТЛ=51 и т.д. мак бук эйр — os el capitan 10.11.2 Помогите победить этот дьявольский аппарат. (блин как же на винде все легко, а тут я только полчаса потратил чтоб понять как попасть в папку etc). помогите
Разные ttl До сайтов, разные потому, что до них ваш пакет идет через разное количество узлов, и на каждым ttl уменьшается на 1.
Источник
Как навсегда изменить TTL в Ubuntu?
Пробовал делать вот так, но увы, после перезагрузки ttl=64.
Попробовал вот так:
В нормальных дистрах есть /etc/sysctl.conf, не знаю как там в убунте.
А, да, извини. Это временная установка.
Лучший вариант, наверное, это создать файл, какой-нибудь /etc/sysctl.d/99_default_ttl.conf, в который добавить net.ipv4.ip_default_ttl=65. Затем sudo sysctl —system.
Спасибо, это помогло =)
Это во всех дистрах
Это linux? Ща я с Соляры вывод принесу.
Ого, в Генту файл /etc/sysctl.conf считается legacy. А современным подходом считаются конфиги в /etc/sysctl.d/ ?
Хз почему у тебя так, но вот:
Понятно, причина в этом:
жизнь спас 🙂 Спасибо
нормальные это те, с которыми ты сталкивался?
Всё помогло лучший вариант что можно было придумать
Не во всех, в генту делали так что этот файл не читался. Там патч для какого-то древнего бага в procps был, из генту патч выкинули и всё, файл больше не считывается. Обнаружить это конечно можно только постфактум и опытным путём.
Источник
If the dynamic DNS service you’re using only allows TTL’s of 3600, then your only option is to switch providers. There really isn’t any way to control the TTL unless the DDNS service provider gives you an option to control it.
Checking TTL’s
Incidentally to check what the TTL is for a given entry you can use dig
with the following switches.
Example
$ 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
So the TTL for this response is 137 seconds. Waiting ~2 seconds and running it again shows 135 seconds. The TTL means how much time is left until the DNS entry expires, and we need to go query the authoritative server for the domain.
Checking Max TTL’s
If we were to query the authoritative server.
$ dig @ns1.google.com +nocmd www.google.com +noall +answer | tail -1
www.google.com. 300 IN A 74.125.225.210
So the actual TTL for this entry is 300 seconds.
NOTE: The authoritative server is also known as the SOA — Start of Authority.
SOA information
You can query the domain further for SOA information.
$ 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
Changing TTLs
The only way to change a DNS entry’s TTL (outside of some sort of API that your registrar might provide) is through the server.
Example
Within Bind you could setup your zone file like so:
;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
The above macro, $TTL would set the TTL to 14400 seconds for any entries, unless it get’s overridden for particular entries.
References
- HOWTO: Using dig(1) to Find DNS Time to Live (TTL) Values
- Dig HOWTO
- Name Server Operations Guide for BIND Release 4.9.5
- How To: Lowering Your DNS TTLs
If the dynamic DNS service you’re using only allows TTL’s of 3600, then your only option is to switch providers. There really isn’t any way to control the TTL unless the DDNS service provider gives you an option to control it.
Checking TTL’s
Incidentally to check what the TTL is for a given entry you can use dig
with the following switches.
Example
$ 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
So the TTL for this response is 137 seconds. Waiting ~2 seconds and running it again shows 135 seconds. The TTL means how much time is left until the DNS entry expires, and we need to go query the authoritative server for the domain.
Checking Max TTL’s
If we were to query the authoritative server.
$ dig @ns1.google.com +nocmd www.google.com +noall +answer | tail -1
www.google.com. 300 IN A 74.125.225.210
So the actual TTL for this entry is 300 seconds.
NOTE: The authoritative server is also known as the SOA — Start of Authority.
SOA information
You can query the domain further for SOA information.
$ 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
Changing TTLs
The only way to change a DNS entry’s TTL (outside of some sort of API that your registrar might provide) is through the server.
Example
Within Bind you could setup your zone file like so:
;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
The above macro, $TTL would set the TTL to 14400 seconds for any entries, unless it get’s overridden for particular entries.
References
- HOWTO: Using dig(1) to Find DNS Time to Live (TTL) Values
- Dig HOWTO
- Name Server Operations Guide for BIND Release 4.9.5
- How To: Lowering Your DNS TTLs