- Как узнать значение MTU
- Windows
- Linux
- ip address
- ifconfig
- FreeBSD
- Провайдера
- monline
- Search this site:
- Recent links
- Recent comments
- How to determine the proper MTU size with ICMP pings
- Comments
- Re: MAC
- here is an odd situation.
- Re: here is an odd situation.
- for loop with ping
- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- 15 примеров команды PING для диагностики сети
- Про Linux за 5 минут | Что это или как финский студент перевернул мир?
- Для чего используется команда PING?
- Как работает команда PING?
- Можно ли использовать PING с прокси-сервером?
- Ping IPv6 адресов
- Ping конкретного порта
- Ping с выводом времени
- Ping всех устройств в указанной подсети
- Как завершить команду PING?
- Завершение работы команды по счетчику
- Где расположена утилита PING?
- Проверка задержки командой PING
- Поиск идеального значения MTU
- Ping на 2-ом уровне OSI (использование arping)
- Ping по имени узла
- Ping маршрута (traceroute)
- Запустить команду если ping вернул ошибку
- Установление размера пакета ping
- Отключение команды ping
- Заключение
Как узнать значение MTU
Windows
Нажмите комбинащию клавишь Win + R
В появившемся окне введите cmd и нажмите OK
В открывшемся черном окне введите команду:
netsh interface ipv4 show subinterfaces
В первой колонке ответа мы увидим значение MTU:
* в данном примере, значение MTU равно 1500 для сетевого адаптера Ethernet.
Linux
ip address
В более современных системах используется утилита для работы с сетевыми интерфейсами — ip address. Вводим команду:
В полученном результате находим нужный сетевой интерфейс и строчку на подобие:
eth0:
mtu 1500 qdisc pfifo_fast state UP qlen 1000
* то, что мы ищем — mtu 1500.
ifconfig
В более ранних системах или с установленным ifconfig вводим:
* где eth0 — сетевой адаптер, для которого хотим узнать MTU.
В полученном результате находим что-то на вроде:
eth0: flags=4163 mtu 1500
* где mtu 1500 — наше значение.
FreeBSD
В данной системе работаем с уже описанным выше ifconfig:
em0: flags=8843 metric 0 mtu 1500
Провайдера
Чтобы определить оптимальное значение MTU для нашего сетевого адаптера, подключенного к сети Интернет, необходимо узнать значение, используемое на оборудовании поставщика.
Для этого выполняем ping с запретом фрагментации сетевых пакетов (-f) и выставлением определенного размера пакета (-l):
ping dmosk.ru -f -l 1472
* 1472 будет соответствовать MTU — 1500, так как к пакету мы должны еще прибавить 28 (заголовок).
Наша задача — подобрать значение пакета, при котором будет идти пинг:
Ответ от 90.156.242.197: число байт=1472 время=13мс TTL=56
Ответ от 90.156.242.197: число байт=1472 время=12мс TTL=56
Требуется фрагментация пакета, но установлен запрещающий флаг.
Требуется фрагментация пакета, но установлен запрещающий флаг.
Значит значение -l нужно уменьшить, пока сигнал не начнет проходить.
Находим значение, которое стоит на границе с ошибкой и прибавляем к нему заголовок пакета — 28. Так мы получаем наше оптимальное MTU.
На данный момент большинство Интернет провайдеров предоставляет услуги связи с фрагментом в 1500. Старые подключения от Ростелеком или подключения на основе PPPoE могут работать на меньших значениях.
Источник
monline
Search this site:
Recent links
Recent comments
- Szia!Nem vagyok biztos
36 weeks 2 days ago - nem jön ki a matek
36 weeks 4 days ago - Thanks for this, with one modification
38 weeks 3 days ago - Hi
39 weeks 3 days ago - Re: App
46 weeks 20 hours ago - Re: App
46 weeks 1 day ago - App
46 weeks 2 days ago - Re: Köszi !
46 weeks 3 days ago - Köszi !
46 weeks 5 days ago - Re: OSM alapú alternatíva
46 weeks 5 days ago
How to determine the proper MTU size with ICMP pings
There’s a nice intro on the topic in one of the Linksys knowledgebase articles. I copy the info here so it won’t vanish once their knowledgebase goes offline. The original article used the Windows ping command in its examples, but I’ve added linux and Mac specific examples too.
To find the proper MTU size, you’ll have to do a special ping of the destination you’re trying to go to. This could be a local machine (a router, gateway, etc.) or a distant server on the internet (eg. example.com).
In case of a Windows machine the ping command should be formatted like:
The options used are:
- -f : set «Don’t Fragment» flag in packet
- -l size : send buffer size
In case of Linux, the command line should be:
The options used are:
- -M : Select Path MTU Discovery strategy. may be either «do» (prohibit fragmentation, even local one), «want» (do PMTU discovery, fragment locally when packet size is large), or «dont» (do not set DF flag).
- -s packetsize : Specifies the number of data bytes to be sent. The default is 56, which translates into 64 ICMP data bytes when combined with the 8 bytes of ICMP header data.
In case of Mac (Leopard), the command should be:
The options used are:
- -D : set the «Don’t Fragment» bit
- -s packetsize : Specify the number of data bytes to be sent. The default is 56, which translates into 64 ICMP data bytes when combined with the 8 bytes of ICMP header data.
You should always start at 1472 and work your way down by 10 each time. Once you get a reply, go up by 2 until you get a fragmented packet. Take that value and add 28 to the value to account for the various TCP/IP headers. Eg. let’s say that 1452 was the proper packet size (where you first got an ICMP reply to your ping). The actual MTU size would be 1480, which is the optimum for the network we’re working with.
Comments
On my MAC I personally use the Min -g 1330 and Max -G 1500, plus 8 byte ICMP header to start and increment by 1 (-h 1), let ping do the work.
for a VPN I like to start at 1330 with a 1500 max.
ping -g 1330 -G 1500 -h 1 -D 10.152.0.19
PING 10.152.0.19 (10.152.0.19): (1330 . 1400) data bytes
1338 bytes from 10.152.0.19: icmp_seq=0 ttl=121 time=418.883 ms
1339 bytes from 10.152.0.19: icmp_seq=1 ttl=121 time=441.258 ms
1340 bytes from 10.152.0.19: icmp_seq=2 ttl=121 time=289.218 ms
36 bytes from 10.152.0.19: frag needed and DF set (MTU 1360)
Vr HL TOS Len ID Flg off TTL Pro cks Src Dst
4 5 00 5105 a691 0 0000 3a 01 dd47 172.24.1.16 10.152.0.19
For DSL min -g 1420 max -G 1500, My MTU is 1454
ping -g 1420 -G 1500 -h 1 -D 4.2.2.2
PING 4.2.2.2 (4.2.2.2): (1420 . 1500) data bytes
1428 bytes from 4.2.2.2: icmp_seq=0 ttl=58 time=43.811 ms
1429 bytes from 4.2.2.2: icmp_seq=1 ttl=58 time=47.041 ms
1430 bytes from 4.2.2.2: icmp_seq=2 ttl=58 time=46.520 ms
1431 bytes from 4.2.2.2: icmp_seq=3 ttl=58 time=44.635 ms
1432 bytes from 4.2.2.2: icmp_seq=4 ttl=58 time=46.400 ms
1433 bytes from 4.2.2.2: icmp_seq=5 ttl=58 time=45.652 ms
1434 bytes from 4.2.2.2: icmp_seq=6 ttl=58 time=43.712 ms
36 bytes from pool-xx-xx-xx-52.dfw.dsl-w.verizon.net (xx.xx.xx.52): frag needed and DF set (MTU 1454)
Vr HL TOS Len ID Flg off TTL Pro cks Src Dst
4 5 00 af05 83c7 0 0000 40 01 9f64 10.200.1.87 4.2.2.2
Just my two cents!
Re: MAC
Thanks! I didn’t notice the -g and -G options on Mac.
here is an odd situation.
I tried this method to with my new NetGear GS116E switch and it always blocks pings with buffer sizes between 513 and 1472! The switch has NO problem passing traffic with even jumbo frames as proven by sharking the traffic. Pings however within those ranges are not passed.
I have not been able to find an explanation for this.
Re: here is an odd situation.
Does this mean that only pings with a packet size below 513 bytes go through? I’m asking because 1472 is most probably the upper limit (at least for most networks/ISPs). Have you tried to ping multiple hosts and the results were all the same? Do pings work with all sorts of packet sizes if you remove the switch from your network setup?
for loop with ping
You can try this.
for i in <1500..900..-2>; do ping -M do -c 1 $IP_OF_VPN_SERVER -s «$i» 2>&1 | grep -q ‘1 received’ && break; done; echo $i
Источник
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
15 примеров команды PING для диагностики сети
10 минут чтения
Благодаря Linux, у нас есть очень много инструментов облегчающих администрирование и диагностику сети. В этом плане команда PING является одним из самых полезных инструментов для системных и сетевых администраторов.
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Сама базовая возможность этой утилиты – определить доступен ли тот или иной хост. Тем не менее в этом материале мы приведем примеры расширенных возможностей этой команды в системе Linux.
Про Linux за 5 минут | Что это или как финский студент перевернул мир?
Для чего используется команда PING?
Команда ping один из базовых инструментов для работы с сетью. Наряду с проверкой доступности удаленного хоста, эта команда даёт возможность выполнять и другие диагностические задачи в том числе:
- измерение времени за которое общаются два хоста;
- выявление IP адреса конкретного хоста, как в локальной сети, так и в глобальной
- она может быть частью bash скрипта для автоматической проверки сетевого устройства
- проверка связи с конкретным устройством.
Как видно, эта команда очень необходима для администрирования сети и серверов.
Как работает команда PING?
Принцип работы команды Ping прост: она посылает серию пакетов маленького размера на указанное устройство.
Для тестирования устройства может быть использован либо IP-адрес, либо имя хоста. После отправки пакета, утилита проверяет и измеряет время ответа целевого устройства.
Как вы могли предположить, время ответа зависит от нескольких условий в том числе географическое расположение или устройств, расположенных между источником и целевым устройством.
Например, в локальной проводной сети команда вернет лучший результат по времени, чем в сети с несколькими маршрутизаторами и сетевыми мостами.
Однако, на основе полученной информации утилита будет судить о состоянии целевого устройства.
Синтаксис команды следующий:
Ниже приведены некоторые полезные и часто используемые ключи для этой команды:
- -c: Позволяет указать количество пакетов для отправки.
- -s: Позволяет изменять размер пакета по умолчанию.
- -v: Отображает текущее состояние выполнения команды.
- -w: Указывает в секундах время завершения команды.
- -i: Позволяет указать интерфейс, с которого будут идти запросы.
Можно ли использовать PING с прокси-сервером?
Прокси – это сервер или приложение играющее роль посредника для соединения двух хостов в сети. Это своего рода «человек посередине», который отправляет запросы прямо к хосту.
Проблема в том, что команда PING требует прямого соединения между устройствами. Таким образом, команда Ping не может функционировать если перед ним стоит прокси-сервер.
Как вариант, можно воспользоваться сайтами, которые предлагают команду Ping как услугу. С другой стороны, для решения некоторых задач с командой Ping, можно использовать команду curl . Также можно прибегнуть к помощи VPN, который спрячет ваш реальный IP.
Ping IPv6 адресов
По умолчанию, когда запускаем команду PING, мы используем IP версии 4. Однако, с появлением протокола IPv6, все чаще стали встречаться адреса такого формата.
Ядро Linux поддерживает IPv6 начиная с версии 2.2, так что все дистрибутивы Linux поддерживают этот протокол.
Базовый синтаксис таков:
В старых версиях была команда ping6 . В новых дистрибутивах её нет и весь функционал объединен с ping .
Как и при работе с IPv4, ключом –c можем указать число пакетов, для отправки, а ключ –i – определяет интерфейс для исходящих запросов.
Ping конкретного порта
Иногда приходится проверят доступен ли тот или иной порт на проверяемом хосте. К сожалению, команда Ping не имеет такой возможности, но это можно сделать с помощью telnet , который по умолчанию установлен на Linux.
Чтобы проверить доступность порта просто введите следующую команду:
Ping с выводом времени
Хотя команда ping дает много полезной информации, но этого может быть недостаточно. Тем не менее, есть возможность настроить команду так, чтобы она показала дату и время отправки пакета. Это может сделать вывод приятней и полезней для скриптов и логирования.
Для этого достаточно прописать указанную ниже команду. Но вам придется установить пакет ccze .
Как видно из скриншота, команда показывает дату и время отправки каждого пакета.
Ping всех устройств в указанной подсети
Командой Ping можно посылать сигнал всем хостам в сети или подсети. Для этого нужно запустить ping с ключом –b на широковещательный адрес, который заканчивается на 255. Например:
Итак, если хост назначения недоступен, значит либо там блокируются ICMP пакеты, либо есть проблемы с сетью или таблицей маршрутизации.
Как завершить команду PING?
По умолчанию, в системе Linux команда Ping непрерывно посылает пакета на хост. Но если нужная информация получена, то необходимо как-то прервать выполнение команды. Для этого просто нужно нажать комбинацию клавиш CTRL+C .
После этого команда немедленно остановится.
Завершение работы команды по счетчику
Вы можете ограничить число посылаемых пакетов. Например, если поставить число пакетов равным 10, то после отправки указанного числа пакетов выполнение команды прекратится.
Где расположена утилита PING?
В Unix-подобных системах таких, как Linux бинарные файлы обычно располагаются по пути
В этой папке можно найти все множество бинарных файлов, которые мы используем как команды в терминале. В других ОС семейства Linux, они могут быть расположены в:
Проверить это можем командой ls :
На скриншоте видно, что команда ping находится в папке
Другой метод, которым можно найти место расположения команд это which :
На выводе она даст следующую информацию:
Проверка задержки командой PING
Одна из возможностей, предоставляемых командой PING, является возможность измерения времени отклика сети. По-другому это называется задержка или время ожидания.
Чтобы измерить задержку введи указанную команду и обратите внимание на ввыод:
Как вы могли заметить, каждый пакет был отправлен с конкретным временем ответа. В конце же есть строка, которая начинается на:
Второе значение после знака равенства – это время задержки. В нашем случае он равен 6,798.
С помощью этого показателя мы можем определить хосты, связь с которыми хуже и приять соответствующие меры.
Поиск идеального значения MTU
MTU (Maximum Transmission Unit) это максимальный размер пакета, который может быть передан по сети.
Сегодня, в целях безопасности, в сетях создаются препятствия для работы MTU. Но большинство локальных сетей на основе Ethernet использует MTU размером 1500 байт.
Если нужно найти самый подходящий размер MTU с помощью команды Ping, следует определить начальное значение и уменьшать его до тех пор, пока прекратятся ошибки. Если значение большое, мы получим следующую ошибку:
Чтобы сделать это запустите следующую команду:
В нашем случае, значение размера пакета слишком большое. Поэтому уменьшаем его до 1472 байтов.
Если получите другое сообщение, начальное значение должно быть уменьшено по единице до тех пор, пока не получите требуемый результат.
Если значение MTU известно, оно может быть использовано для улучшения сети. Особенное если сеть большая вплоть до городских сетей.
Ping на 2-ом уровне OSI (использование arping)
С помощью команды ping диагностика проводится на основе IP-адреса конкретного узла в сети. Это связано с тем, что команда ping работает на третьем сетевом уровне модели OSI.
С другой стороны, можно использовать другую встроенную в Linux команду – arping . Эта утилита работает так же, как ping, но на втором – канальном уровне модели OSI.
Синтаксис команды следующий:
В результате получите что-то подобное:
Вывод команды показывает размер отправленного пакета, затем MAC адрес узла назначения, а также время ответа.
Отметим, что эта команда не предустановлена на системе Debian и производных.
Ping по имени узла
По умолчанию, команда ping посылает пакеты на узел назначения используя IP адрес или имя узла назначения. Также нужно отметить, что большинство реализаций утилиты ping на Linux не разрешают DNS в обратном направлении.
Например, если мы запустим команду ping, указав IP адрес, он вернёт только IP узла. И наоборот, если параметром передадим имя узла, то команда вернет его IP адрес. Посмотрите вывод введя команду ниже:
Ping маршрута (traceroute)
Сама по себе команда ping не показывает пути от источника к узлу назначения. Но это было бы очень кстати в том случае, когда узел назначения не отвечает, чтобы определить где именно теряется связь.
Команда tracert (Windows) или traceroute работают аналогично ping. Преимуществом этой команды является то, что он показывает весь путь следования пакета от источника до узла назначения.
В принципе traceroute посылает тот же ICMP пакет, что и Ping. Но в случае traceroute, в отличии от ping начально значение TTL пакета выставляется равным единице. Пакет доходит до первого узла по пути к узлу назначения. Устройство уменьшает TTL на одну единицу и если получается нуль, то возвращает сообщение об ошибке истечения времени пакета. В сообщение так же содержится IP адрес и имя хоста. Отправитель получает данное сообщение. Если оно не от узла назначения, то посылает второй пакет с TTL на один больше предыдущего. И так до тех пор, пока не получит ответ от узла назначения. Для получения пути нужно ввести команду:
Запустить команду если ping вернул ошибку
Представьте, что вам нужно получить оповещение если узел назначения перестал отвечать на запросы команды ping. Для этого нужно включить команду ping в bash скрипт и прописать нужные команды. Например, скрипт ниже позволяет вам проверить отвечает ли узел на запросы ping:
Установление размера пакета ping
По умолчанию, размер пакетов ICMP равен 56 байтам. Это позволяет не влиять на работу сети во время проверки. Но при необходимости можно изменять это значение. Для этого достаточно запустить команду ping с ключом –s и требуемым размером. Например:
Если нужно установить значение пакета равным 100 байтам, нужно прописать команду ниже:
Отключение команды ping
Если вы обслуживаете сеть, то вам может быть необходимо отключить ответ на ping запросы в любое время. Это можно сделать как временно, так и постоянно, в зависимости от ваших нужд. Для временного отключения команды ping нужно ввести команду ниже от имени root-а:
Она выключить возможно ответа на ICMP запросы до перезагрузки системы. Но если нужно навсегда отключить эту возможность, то придется отредактировать файл
и добавить следующую строку:
Сохраните файл и, для применения изменений введите команду:
Заключение
В этом материале мы рассмотрели, как команда ping работает в системе Linux. Ping одна из самых легких команд. Она позволяет лицам, ответственным в обеспечении нормально работы сети, выявлять проблемы и устранять их.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Источник