- Windows ping через определенный интерфейс
- Ping из определенного сетевого адаптера в Windows
- 2 ответа
- Команда ping: подробный обзор
- Синтаксис команды ping
- Простая проверка доступности
- Изменение интервала между отправкой пакетов
- Массовая отправка пакетов для нагрузочного тестирования
- Изменение размера пакета
- Включение звукового сигнала
- Вывод статистики ping
- Ping и некоторые его параметры
Windows ping через определенный интерфейс
На машине стоит несколько сетевых карт, и есть возможность выходить в интернет через несколько провайдеров.
Как можно программно произвести Ping через заданный сетевой интерфейс? Хочу добавить в программу функциональность определения непрерывности наличия интернета у различных провайдеров.
| От: | Roman Odaisky |
Дата: | 02.11.07 16:33 | |
Оценка: |
Здравствуйте, Kimus, Вы писали:
K>На машине стоит несколько сетевых карт, и есть возможность выходить в интернет через несколько провайдеров.
K>Как можно программно произвести Ping через заданный сетевой интерфейс? Хочу добавить в программу функциональность определения непрерывности наличия интернета у различных провайдеров.
ping -I интерфейс
| От: | Аноним |
Дата: | 02.11.07 22:51 | |
Оценка: |
Здравствуйте, Roman Odaisky, Вы писали:
RO>ping -I интерфейс
Я пытался изучить команду Ping на предмет возможности указать интерфейс.
Вот что она умеет делать на моей машине:
Использование:
ping [-t] [-a] [-n ] [-l ] [-f] [-i ] [-v ]
[-r ] [-s ] [[-j ] | [-k ]]
[-w ] [-R] [-S ] [-4] [-6]
Параметры:
-t Отправка пакетов на указанный узел, пока вы не прекратите
опрос узла вручную. Для вывода статистики и продолжения
опроса нажмите +
, для прекращения опроса
нажмите + .
-a Определение имени узла по адресу.
-n Число отправляемых запросов.
-l Размер буфера отправки.
-f Установка флага, запрещающего фрагментацию пакета
(только IPv4).
-i Задание срока жизни пакета («Time To Live»).
-v Задание типа службы («Type Of Service») (только IPv4).
-r Запись маршрута для указанного числа прыжков
(только IPv4).
-s Штамп времени для указанного числа прыжков (только IPv4).
-j Свободный выбор маршрута по списку узлов (только IPv4).
-k Жесткий выбор маршрута по списку узлов (только IPv4).
-w Таймаут для каждого ответа в миллисекундах.
-R Трассировка кругового пути (только IPv6).
-S Используемый адрес источника (только IPv6).
-4 Обязательное использование протокола IPv4.
-6 Обязательное использование протокола IPv6.
У меня Windows 2003. В каких операционных системах допустима опция -I?
| От: | Michael Chelnokov |
Дата: | 03.11.07 10:26 | |
Оценка: |
Здравствуйте, Аноним, Вы писали:
А> -j Свободный выбор маршрута по списку узлов (только IPv4).
А> -k Жесткий выбор маршрута по списку узлов (только IPv4).
Одна из этих, видимо.
| От: | Michael Chelnokov |
Дата: | 03.11.07 10:35 | |
Оценка: |
Здравствуйте, Roman Odaisky, Вы писали:
RO>ping -I интерфейс
$ man ping
.
-I iface
Source multicast packets with the given interface address. This
flag only applies if the ping destination is a multicast address.
.
$ uname -srp
FreeBSD 6.2-STABLE i386
| От: | Kimus |
Дата: | 03.11.07 13:09 | |
Оценка: |
Здравствуйте, Michael Chelnokov, Вы писали:
MC>Здравствуйте, Roman Odaisky, Вы писали:
RO>>ping -I интерфейс
MC>$ man ping
MC>.
MC> -I iface
MC> Source multicast packets with the given interface address. This
MC> flag only applies if the ping destination is a multicast address.
MC>.
MC>$ uname -srp
MC>FreeBSD 6.2-STABLE i386
Ну да, во FreeBsd я эту команду видел . И с радостью бы использовал, но приложение под Windows и переориентировать его не представляется возможным (требование заказчика). Желательно что-то, что будет работать под Windows и займет минимум усилий по реализации, чтобы не изобретать велосипед.
| От: | Michael Chelnokov |
Дата: | 03.11.07 16:54 | |
Оценка: |
Здравствуйте, Kimus, Вы писали:
K>Желательно что-то, что будет работать под Windows и займет минимум усилий по реализации, чтобы не изобретать велосипед.
Я не помню как там в IPHelper, но вообще-то достаточно сокет забиндить на нужный интерфейс.
| От: | DOOM |
Дата: | 05.11.07 10:00 | |
Оценка: |
Здравствуйте, Michael Chelnokov, Вы писали:
MC>Здравствуйте, Аноним, Вы писали:
А>> -j Свободный выбор маршрута по списку узлов (только IPv4).
А>> -k Жесткий выбор маршрута по списку узлов (только IPv4).
MC>Одна из этих, видимо.
Не верно. Это совсем другая сказка.
| От: | DOOM |
Дата: | 05.11.07 10:29 | |
Оценка: |
Здравствуйте, Аноним, Вы писали:
А>У меня Windows 2003. В каких операционных системах допустима опция -I?
Как ни странно, во всех, кроме винды.
Если хочешь пытаться сделать пинг программно, то научись определять как-нибудь связь IP-интерфейс, а потом попробуй биндиться на конкретный адрес — должно по логике помочь.
| От: | Cruser |
Дата: | 08.11.07 12:16 | |
Оценка: | -1 |
Здравствуйте, Kimus, Вы писали:
K>Здравствуйте!
K>На машине стоит несколько сетевых карт, и есть возможность выходить в интернет через несколько провайдеров.
K>Как можно программно произвести Ping через заданный сетевой интерфейс? Хочу добавить в программу функциональность определения непрерывности наличия интернета у различных провайдеров.
Перед пингом нужно задавать default маршрут через этот интерфейс:
route add 0.0.0.0 mask 0.0.0.0
ping .
route add 0.0.0.0 mask 0.0.0.0
ping .
Ping из определенного сетевого адаптера в Windows
Эй, я искал проблемы с сетью на серверах с двумя сетевыми картами и ноутбуками с проводными и беспроводными картами. Как я могу заставить PING и TELNET отправлять с определенного адаптера? Я знаю, что это проблема с окнами. Отключение одного из адаптеров не является вариантом, я всегда подключаюсь через один из адаптеров. Должна быть опция командной строки, чтобы выбрать один адаптер над другим.
2 ответа
Вы можете установить статический маршрут:
Для получения дополнительной информации ознакомьтесь с Документация Microsoft по route
Вероятно, проще использовать ключ -S, который позволяет указать IP-адрес источника (см. ping /? для получения дополнительной информации).
Еще одна вещь, которую вы можете сделать, — это изменить порядок привязки, который соответствует вашей «опции, чтобы предпочесть один адаптер над другим». Хотя он отличается от ОС Windows до ОС, он находится в том же месте, что и в этом примере: для Windows 7 вы щелкните правой кнопкой мыши по сети и щелкните свойства. Затем вы нажмете «Изменить настройки адаптера». Затем нажмите на меню Advanced> Дополнительные настройки и переместите соединение, для которого вы хотите иметь приоритет, вверху.
Из Windows 7 (версия 6.1 Build 7601: с пакетом обновления 1) ping /?
Документация Microsoft TechNet Ping, в которой говорится, что она может использоваться только для IPV6 (не правильно) Применимо к: Windows Server 2003, Windows Vista, Windows XP, Windows Server 2008, Windows 7, Windows Server 2003 R2, Windows Server 2008 R2, Windows Server 2000, Windows Server 2012, Windows 8
Команда ping: подробный обзор
Ping – утилита командной строки, которая нужна для проверки подключения к другому компьютеру на уровне IP. Принцип работы очень простой: команда ping ip отправляет серию небольших пакетов данных на указанное устройство, а затем показывает время ответа.
Ping – основная команда TCP/IP, которая используется для устранения неполадок подключения, доступности и разрешения имени. Она также позволяет узнать имя и IP-адрес компьютера.
Синтаксис команды ping
Команда ping в Windows имеет следующие параметры, которые позволяют решать разные задачи:
Чтобы посмотреть в командной строке (cmd) ping-команды, вызовите справку:
На Linux параметры команды отличаются. Чтобы посмотреть доступные опции, выполните в терминале команду:
Суть команды ping проста, но примеров ее использования очень много. Давайте посмотрим, что можно делать с ее помощью.
Простая проверка доступности
Это то, что делали многие пользователи, – пинговали популярные ресурсы, чтобы убедиться, что интернет на их компьютере работает. Эта же команда используется для проверки доступности.
Windows отправит только 4 запроса, после чего выдаст статистику для указанного адреса. Можно убрать это ограничение, указав параметр -t.
Чтобы прервать отправку и получить статистику, нажимаем сочетание клавиш Ctrl+C.
По умолчанию команда ping IP-адреса на Linux посылает пакеты, пока вы не прервете их отправку вручную с помощью сочетания клавиш Ctrl+C. Чтобы ограничить количество, укажем нужное число. Например:
Изменение интервала между отправкой пакетов
По умолчанию пакеты отправляются с интервалом в одну секунду. Но можно установить другое время.
Для установки значений меньше 0.2 секунды требуются права суперпользователя (sudo).
Массовая отправка пакетов для нагрузочного тестирования
Эта возможность также доступна только суперпользователям:
Изменение размера пакета
По умолчанию размер пакета – 32 байта. Можно установить другой размер:
Включение звукового сигнала
Если ответа от хоста нет, отправляем эту команду:
Затем начинаем искать причину сбоя. После ее устранения воспроизведется звуковой сигнал. Он говорит о том, что хост теперь отвечает.
Вывод статистики ping
Чтобы не засорять терминал лишней информацией, пропустим ответы хоста и сразу получим статистику:
А можно, наоборот, получать статистику выполнения без прерывания команды. Для этого нужно нажать сочетание клавиш CTRL + |.
Ping и некоторые его параметры
«Для чего в команде ping используются опции Loose, Strict, Record, Timestamp и Verbose?» — такой вопрос мне недавно встретился в вендорном экзамене. Они позволяют влиять на маршрутизацию ICMP пакетов и собирать информацию о транзитных L3-устройствах. Но занимаясь сетевыми технологиями уже достаточно давно, я почти никогда их не использовал.
Мне стало не совсем понятно, почему такой вопрос вообще присутствует в тесте. Вернувшись домой, решил узнать, вдруг я действительно постоянно упускаю из виду что-то важное?
Утилита ping нам всем хорошо знакома. Помимо стандартного «ping 8.8.8.8», можно использовать различные опции, среди которых присутствуют интересующие нас. Их наименование и описание у вендоров примерно одинаковое.
- Количество отправляемых пакетов
Вместо заданного количества пакетов по умолчанию (например, в Windows — четыре, в оборудовании Cisco — пять), мы можем отправить нужное. Сюда же можно отнести многими любимую опцию «-t» в ОС Windows, которая запускает бесконечную отправку пакетов. - Интерфейс источника
В первую очередь актуально для сетевого оборудования. По умолчанию, при использовании команды ping устройство отправляет пакет с адресом ближайшего интерфейса к точке назначения. В случае тестирования функций NAT или проверки VPN, возникает необходимость отправлять ICMP пакеты с другого интерфейса. Ещё один классический пример: как доказать коллеге, что у него включён файрвол на хосте, а не сеть глючит. Запускаем ping с ядра сети без указания интерфейса – пингуется. С указанием неближайшего интерфейса – не пингуется. - Установка DF-бита
Пакет с установленным DF-битом (=1) не может фрагментироваться. Данную опцию удобно использовать для определения максимально допустимого размера кадра (MTU) между двумя точками. Обычно используется в связке параметрами ниже. - Размер пакета
Можно варьировать размер пакета. Вместе с установкой DF-бита помогает в определении MTU. Шлём большой пакет – 1500 байт. Не проходит. Шлём чуть меньше – 1300. Проходит. Шлём 1400. И так далее. В общем, метод дихотомии и MTU определён.
В Windows мы указываем размер сегмента данных ICMP пакета. На устройствах Cisco – размер пакета IP с учётом заголовков. - Вариация размера пакета в указанном диапазоне
Для тех, кто не любит метод дихотомии, может пригодиться данный режим. Мы указываем начальное значение размера пакета, конечное и шаг. Далее устройство отправляет пакеты, постепенно увеличивая их размер. Главное не забыть выставить DF-бит, а то всё насмарку.
За бортом остался ряд других опций (timeout, ToS и пр.), которыми лично я практически не пользуюсь.
Опции Loose, Strict, Record, Timestamp, Verbose включены в утилиту ping на многих сетевых устройствах. Есть поддержка в Windows.
Record (Record Route)
Пакет ICMP с опцией Record при прохождении через L3-устройства записывает IP-адреса исходящих интерфейсов. Делается это как в сторону пункта назначения, так и обратно. Это удобно, например, при диагностировании проблем, связанных с асинхронной маршрутизацией. Получается вроде traceroute, только лучше.
Но рано радоваться: максимальное количество записей равно девяти. Причём в них входят данные об IP-адресах устройств в обе стороны. Обусловлено данное ограничением тем, что информация об IP-адресах сохраняется не в теле пакета, а в заголовке. Поле с опциями не может быть слишком большим. Оно ограничено 40 байтами. Нам, в конце концов, по сети нужно гонять полезные данные, а не заголовки. В этот объём помещается всего девять записей (4 байт на каждый IPv4 адрес). Оставшиеся (40-4*9)=4 байта уходят на отметку о типе опции, длине и пр. атрибутах. Напомню, максимальный размер всего заголовка IPv4 – 60 байт.
Запускаем с ПК под управлением ОС Windows ping с опцией Record Route (-r) до адреса 192.168.36.2:
Пакeт ICMP Echo Request c выставленной опцией Record Route (Type = 7) в заголовке IP:
ICMP Echo Request доходит до получателя. По пути в него добавляются адреса транзитных устройств. Получатель берёт заполненные поля опции IP заголовка, копирует их в ICMP Echo Reply и отправляет назад. Пока ICMP Echo reply доберётся до инициатора пинга, он обрастёт записями обратного маршрута.
В ответном пакете ICMP Echo Reply, который получит ПК, опция Record Route будет уже заполнена:
Можно заметить, что в нашей сети имеет место ассиметричная маршрутизация.
Когда пакет ICMP с опцией Timestamp проходит через L3-устройство, оно записывает в него метку с указанием текущего времени. Схема работы аналогична опции Record, только вместо адреса ставится время. Как и в предыдущем случае пакет может содержать только девять записей о времени (для ОС Windows – четыре, так как кроме временной метки, добавляется IP-адрес устройства).
Время в пакете указано в формате UNIX time. Анализ данных имеет хоть какой-то смысл, если все устройства синхронизированы по времени (в нашем примере этого нет).
Strict (Strict Source Route)
При использовании данной опции задаётся список IP-адресов L3-устройств, через которые ICMP пакет обязательно должен пройти. Причём именно в той последовательности, которую мы указали. Записей, по традиции, максимум девять.
Работает опция просто: на каждом хопе IP-адрес назначения меняется на тот адрес, который мы указали при запуске утилиты ping.
Все адреса хранятся в заголовке IP нашего ICMP пакета. Поэтому каждое транзитное устройство может их подсмотреть. Такая схема позволяет обходить текущие правила маршрутизации на каждом устройстве, так как фактически имеем пересылку пакета на соседнее устройство.
В нашей схеме R2 имеет маршрут в сеть 192.168.36.0/24 через R3. Но так как у нас жёстко прописаны устройства в опциях ICMP пакета, R2 передаст его напрямую на R4.
Запускаем утилиту ping с опцией -k (Strict Source Route) в ОС Windows и прописываем адреса устройств.
Пакeт ICMP Echo Request c выставленной опцией Strict Source Route (Type = 137) в заголовке IP на нашем ПК выглядит следующим образом:
ПК подставил 192.168.20.1 в качестве адреса получателя. Остальные адреса транзитных устройств благополучно запаковал в поля опции IP (записи Source Route). Адрес конечного устройства добавил в запись Destination.
Этот же пакет, после того, как он минует R1:
IP-адрес отправителя остался без изменений. IP-адрес получателя поменялся на новый – 192.168.31.1. Это значение взято из поля Source Route, когда пакет ICMP только поступил на R1.
Важно отметить, что R1 занёс в поле опций новую запись — Recorded Route. Туда подставлен IP-адрес интерфейса R1. Данное поле понадобится, чтобы ответный пакет (ICMP Echo reply) вернулся по тому же маршруту, что и ICMP Echo request. Точно также будут поступать и остальные устройства. Поэтому, когда пакет ICMP попадёт на R5, в опции Strict Source Route будет содержаться список IP-адресов интересов, через которые должен пройти ответный пакет.
ICMP Echo reply, полученный ПК:
Поле Recorded Route переписывается по мере прохождения пакета ICMP Echo reply, так как там всегда указан адрес исходящего интерфейса для текущего пакета. Поэтому R1, когда получит ICMP Echo reply, заменит 192.168.31.2 на 192.168.20.1.
Если в команде ping мы опустим один из адресов, например, последний (192.168.35.1 – R5), R4 должен будет отправить пакет сразу на устройство с адресом 192.168.36.2. Но так как эта сеть не является для него локальной, R4 отрапортует о том, что заданный узел недостижим. Маршрутизировать пакет по обычным правилам он не будет.
Для обработки опции Record на сетевом оборудовании должен быть включен режим source routing. Например, на оборудовании Cisco он включён по умолчанию.
Loose (Loose Source Route)
Данная опция по сути очень похожа на опцию Strict. Но, в отличии от Strict, в опции Loose задаётся не жёсткий маршрут движения ICMP пакета, а лишь выборочные устройства. Т.е. пакет может маршрутизироваться и другими устройствами. Максимальное количество адресов – девять.
Схема работы аналогична предыдущему случаю. Разница в том, что пакет с опцией Loose может маршрутизироваться транзитными устройствами по обычным правилам.
Запускаем утилиту ping с опцией -j (Loose Source Route) в ОС Windows и прописываем адреса устройств.
Пакeт ICMP Echo Request c выставленной опцией Loose Source Route (Type = 131) в заголовке IP на нашем ПК выглядит так:
ПК подставил адрес R3 (192.168.32.1) в качестве получателя. При этом адрес конечного устройства R5 (192.168.36.2) указал в опции IP (запись Destination). Далее пакет маршрутизируется в сети по обычным правилам, пока не попадёт на R3. R3 подставит в качестве адреса назначения адрес R5 и в опциях пропишет свой адрес, через который должен будет вернуться ответный пакет (запись Recorded Route). После чего отправит его в сеть.
Ответный пакет ICMP Echo reply особого интереса не представляет, так как аналогичен ранее рассмотренным. В опциях будет указан адрес исходящего интерфейса R3 (запись Recorded Route), через который прошел пакет.
Данная опция активируется автоматически при выборе любой из ранее описанных. Предоставляет более детальный вывод информации на экран. На сам пакет ICMP она никак не влияет. В Windows в команде ping такой опции нет.
Чтобы мы могли воспользоваться этими опциями, промежуточное оборудование должно их поддерживать. С этим проблем не будет. К новшествам мира ИТ относить весь этот «rocket science» не приходится. Напрашивается вывод: опции Loose, Strict, Record, Timestamp могут быть полезны, даже с учётом ограничения в «девять». Если бы не следующие нюансы, связанные с безопасностью.
Первое. Опции Record и Timestamp могут благополучно использоваться для проведения разведки в сети. С их помощью можно исследовать топологию сети, получить отпечатки, по которым определить ОС и тип устройства, через которые проходил пакет с данными опциями.
Второе. Опции Loose и Strict позволяют управлять движением пакета, игнорируя стандартные правила маршрутизации. Это предоставляет широкие возможности для попыток проникновения в различные сегменты сети, куда в случае обычной маршрутизации доступа не должно быть. Также возможно проведение разведки для анализа топологии сети. Проведение атак по утилизированию полосы пропускания на определённых сегментах сети. Вариантов много.
Третье. Часть сетевого оборудования обрабатывает пакеты с установленными опциями программным образом на уровне control-plane (без использования различных схем оптимизации маршрутизации трафика), что безусловно нагружает ЦПУ. А значит есть возможность осуществить DoS атаку на такое устройство.
Многие вендоры (есть даже отдельное RFC 7126) рекомендуют пакеты с указанными опциями никак не обрабатывать. Варианты предлагают разные. Вплоть до отбрасывания таких пакетов. Правда у некоторых из производителей бывают диссонансы: с одной стороны рекомендуем отбрасывать такие пакеты, с другой — «Record is a very useful option».
Быстрая попытка проверить соответствие этим рекомендациям у пары интернет-провайдеров показали, что часть опций всё-таки работает. Но source routing отключён везде.
Получается интересный вывод. Опции Loose, Strict, Timestamp, Record могут быть полезны при диагностике проблем в сети. Но вопрос безопасности нивелирует это.
В итоге у меня всё-таки осталось чувство непонимания. Почему озвученный в начале вопрос присутствовал в тесте? Относительно полезна опция Record и то при небольшой глубине сети. Остальные опции под вопросом.
Напоследок небольшой опрос. Всем хорошего дня!
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.