Doubt In default time to live (TTL) 255?
There is only one hop b/w by pc to router so my expected TTL is 254 but why here ping shows TTL as 64.. Any help could be appreciated.
3 Answers 3
Here’s a relevant quote from the ping manpage:
TTL DETAILS The TTL value of an IP packet represents the maximum number of IP routers that the packet can go through before being thrown away. In current practice you can expect each router in the Internet to decrement the TTL field by exactly one.
The TCP/IP specification recommends setting the TTL field for IP packets to 64, but many systems use smaller values (4.3BSD uses 30, 4.2BSD used 15).
The current recommended default time to live (TTL) for the Internet Protocol (IP) is 64.
if 64 as default.if its cross another hops it decrement as 63,62 etc.. is it correct or its decrement from 254,253.
The initial value of the TTL field is set by the host transmitting the packet. As stated in this answer, the value varies and is generally left to the operating system. If the initial value is 64 then after it has passed through the first router it drops to 63 as you say. The TTL you are seeing in your ping response is counting down from the default used by the OS on your gateway router. The ICMP echo response is a new packet and will have a fresh TTL filled in, it will not count down from what was left in the TTL from the ICMP echo request.
Ttl windows и linux
Добрый день уважаемые читатели блога, сегодня я хочу вас спросить, а умеете ли вы по команде пинг определить какое устройство или операционная система вам отвечает, если нет, то вы пришли по адресу и я вам расскажу еще одно назначение утилиты ping. Думаю данный материал, будет полезен как новичкам, так и продвинутым пользователям, особенно когда вы ищите причину неисправности в сети или сервисе, встречал много раз, что вы думаете, что вам отвечает один сервер, а на самом деле это другой, так как кто то, что то поменял и не задокументировал.
Значение ttl
Ранее я вам рассказывал про модель OSI, и там у сетевого пакета, есть такое значение TTL (Time To Life), если перевести, то это время жизни пакета. TTL это некий счетчик, который уменьшается на единицу, при прохождении сетевого пакета или как его еще называют, кадра через маршрутизатор, делается это для того, чтобы он, при невозможности найти пункт назначения, вечно не бегал по роутерам, создавая нагрузку и паразитный трафик.
Именно время жизни пакета (TTL) нам и поможет, определить кто там с другой стороны. У каждой операционной системы этот показатель свой, так например
- Cisco TTL > равен 255
- ttl windows > равен 128
- Unix ttl > равен 64
- Android и IOS Apple> 65
- Lumia > 130
Как видите значение 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 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.
Задаем ему имя DefaultTTL и значение и устанавливаем его значение 65 для Android и iOS или 130 — Lumia, Nokia, Microsoft Phone и обязательно перезагружаемся .
эта лишняя единица, как раз и пойдет на лишний скачок через ваш телефон с ноутбука и Yota ничего не увидит, как видите изменить ttl windows 10, очень просто.
Как изменить ttl Ubuntu, Debian
И так с Windows мы уже научились, менять ttl, но не у всех стоит именно он, есть люди с Ubuntu например, давайте учиться как обойти ограничение на раздачу интернета через телефон на компьютер с Ubuntu на борту, в случае, если ваш оператор Йота, вы должны сделать несколько простых вещей.
1) Нажать одновременно Ctrl+Alt+T. Так вы вызовете терминал.
3) Попросит ваш пароль, вводим, жмем Enter, далее жмем i — это введет редактор vi в режим редактирования.
4) Вводим сам скрипт фиксирования TTL Ubuntu на значении 65, если у вас Android или iOS (у них стандартный TTL=64), если вы обладатель Люмии, где стандартный TTL равен 128, вам вместо 65 нужно прописать 129. Все это по простейшей формуле, ttl на компе должен быть на 1 больше, чем ttl на телефоне, с которого вы раздаете. Теорию я вам рассказал, а теперь сам скрипт:
#!/bin/bash
sudo iptables -t mangle -A POSTROUTING -j TTL —ttl-set 65 (вот это значение меняйте сами, теория выше в помощь)
5) Далее, для окончания редактирования жмем Esc. Потом сохраняем файл, зажимая Shift+ZZ.
6) Теперь необходимо проставить скрипту права на запуск:
7) Теперь последнее, добавляем все это дело в автозапуск:
8) Нажимаем Enter. Все будет делаться автоматически и без вашего участия.
Как изменить ttl MacOS
Ну и конечно, нельзя обижать яблочников 🙂 Для изменения ttl на mac делаем следующее
Идем в /Library/StartupItems. Открываем терминал и прописываем: ~> cd /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 было прописано то же имя, что и название скрипта и название папки:
<
Description = ‘Add static routing tables’;
Provides = (‘yota’);
Requires = (‘Network’);
OrderPreference = ‘None’;
>
И опять закрываем 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 на самых распространенных системах, если есть вопросы пишите их в комментариях.
Популярные Похожие записи:
- Виртуальная машина ESXI получает неправильные настройки сети
- Большая потеря пакетов на виртуальной машине ESXI
- Ошибка Запуск этого устройства невозможен (код 10) в Windows 7
- Поиск mac-адреса на DHCP с помощью PowerShell
- Как узнать GUID сетевого интерфейса за минуту
- Настройка сети в CentOS 8, за минуту
Что такое время жизни пакета (TTL)
Вероятно, многие из нас обращали внимание на параметр TTL в запущенной команде ping. Расшифровывается TTL как Time to live.
Время жизни пакета это предельное число итераций, которое пакет данных может совершить до своего исчезновения. Выражаясь не так официально, TTL — это число «прыжков» от устройства к устройству, которое может совершить пакет.
Строго говоря, TTL это не только про пакеты данных. Время жизни имеют и другие вещи, например, DNS-записи на серверах. Поэтому не связывайте понятие TTL только с пакетами данных.
Возвращаясь к теме статьи, объясним предназначение времени жизни пакета. Дело в том, что данные в сети имеют свойство зацикливаться, что создаёт своего рода «мусорный» трафик. Поскольку количество «прыжков» между узлами у пакетов ограничено, они не смогут «бродить» по сети вечно.
На самом деле, изначально предполагалось, что TTL пакетов будет измеряться в секундах. Так что это должно было быть время в буквальном смысле слова. Однако позже от этой концепции отказались в пользу простого числа «прыжков» или хопов (hop). На каждом промежуточном узле это число уменьшается на единицу (по умолчанию, хотя настройки можно выставить иначе). Если число «прыжков» у пакета истекло, а адресата он так и не достиг, этот пакет уничтожается, а адресату направляется сообщение о необходимости повторной отправки данных (Time Exceeded). Учтите, что коммутаторы оставшееся число «прыжков» не изменяют, так как действуют на канальном уровне (более низком) модели OSI, а не сетевом.
Время жизни пакета задаётся в соответствующем поле в заголовке IPv4-пакета. В стандарте IPv6 используется уже другое поле Hop Limit. Максимально возможное значение TTL равно 255. В большинстве популярных операционных систем (macOS, Linux, Android, iOS и т.д.) TTL=64. В Windows по умолчанию TTL=128.
TTL и интернет-провайдеры
Достаточно интересно используют TTL пакетов интернет провайдеры для обнаружения несанкционированного подключения устройств. Способ массово стал использоваться со временем распространения мобильного интернета и устройств, которые могут этот интернет не только потреблять, но и раздавать другим (смартфоны, планшеты).
Как это выглядит на практике? Если Вы пользуетесь мобильным интернетом со смартфона, то тот отправляет TTL=64, но, если раздать с него Wi-Fi, то TTL подключенных устройств будет изменяться на единицу. Нагляднее это можно проследить на схеме ниже.
Таким образом, оператор видит, что TTL «прыгает» с 64 до 63, а то и до 127 (если это ноутбук с Windows), и делает вывод, что в сеть выходит не одно устройство, а больше. В зависимости от условий предоставления связи, это может привести к блокировке.
Мы не будем в этой статье рассматривать способы обхода блокировок. Скажем лишь, что значение TTL по умолчанию можно изменить. Возьмём для примера Windows. Если вы запустите ping localhost, то увидите, что, как и говорилось ранее, TTL=128.
Для изменения установленного по умолчанию значения TTL нам нужно открыть редактор реестра, пройти в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters и отредактировать (или создать, если его нет) параметр DefaultTTL. Если у вас 64-битная версия ОС, то тип параметра будет QWORD (64 бита), если 32-битная версия ОС, то тип DWORD (32 бита). Система исчисления — десятичная, а значение можете задать от 1 до 255. Например, 65. Тогда пакеты данных, пройдя через раздающий Wi-Fi смартфон, будут выдавать TTL=64.
После этого перезагрузите компьютер. Снова запустив ping localhost, можно увидеть, что значение TTL изменилось.
Отдельно стоит упомянуть протокол IPv6. Если вы его используете, то нужная вам в реестре ветка: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\Parameters.
О том, как провернуть подобную настройку в Ubuntu, читайте в статье по этой ссылке.