Pinging linux from windows

Команда ping в Linux

Всем знакомы ситуации, когда интернет на компьютере неожиданно разрывается, такое поведение можно наблюдать при использовании ADSL модемов, Wifi на большом расстоянии, GSM и других подобных ненадежных технологий. Быстро выяснить есть ли на компьютере интернет можно с помощью утилиты ping.

Но область ее применения намного шире, ее используют сетевые администраторы для проверки доступности удаленного узла в сети, она применяется в различных скриптах и многих других местах. В этой статье будет рассмотрена команда ping в Linux, мы поговорим о том, как пользоваться утилитой, как она работает, рассмотрим ее опции и возможности.

Как работает ping?

Утилита ping — это очень простой инструмент для диагностики сети. Она позволяет проверить доступен удаленный хост или нет и все. Для этого утилита проверяет, может ли хост отвечать на сетевые запросы с помощью протокола ICMP.

Надеюсь, не нужно говорить, что все данные по сети передаются в виде небольших пакетов. Программа передает небольшой пакет с данными ICMP и ожидает получить обратно пакет ответа, если получает, то считается что удаленный узел доступен. ICMP или Internet Control Message Protocol — это надстройка над протоколом IP, которая используется для передачи служебных сообщений и сообщений и ошибках.

Протокол ICMP может передавать только два типа пакетов — это сообщения с отчетами про ошибки и сообщения запросов. В свою очередь, сообщения запросов делятся на:

  • Сообщение эхо-запрос;
  • Сообщение эхо-ответ.

Попытаемся разобраться что делает команда ping. Итак, когда вы отправляете запрос ping удаленному узлу, утилита устанавливает для каждого пакета уникальный идентификатор, а также TTL и время отправки пакета. Если хост доступен, он отправляет ответ, на основе времени отправки утилита может вычислить время прохождения пакета туда и обратно. Затем отправляется следующий пакет. В конце рассчитывается общее количество отправленных и принятых пакетов, процент потерь и другие данные.

Команда Ping

Теперь нам осталось немного попрактиковаться. Но перед тем, как мы перейдем к практике давайте рассмотрим синтаксис команды и ее опции. Синтаксис довольно прост:

$ ping опции адрес_узла

Формат команды ping очень прост. В качестве адреса узла можно передавать как ip адрес, так и доменное имя. Опции настраивают поведение утилиты. Рассмотрим основные из них:

  • -4 — использовать только ipv4 (по умолчанию);
  • -6 — использовать только ipv6;
  • -A — адаптивный режим, время между отправками пакета адаптируется к времени передачи и приема пакета, но не меньше чем 200мс;
  • -b — разрешить ping широковещательного адреса;
  • — количество пакетов, которые нужно отправить;
  • -D — выводить время в виде UNIX timestamp;
  • -f — режим флуда, в этом режиме пакеты передаются без задержек, может использоваться для совершения DoS атак на отдельные узлы. Количество точек, которые выводит утилита обозначает количество потерянных пакетов;
  • -i — интервал в секундах между отправкой пакетов;
  • -I — использовать этот сетевой интерфейс для отправки пакетов;
  • -l — режим перегрузки, отправляется очень много пакетов и система не следит за ответными пакетами;
  • -n — не получать домены для ip адресов;
  • -r — игнорировать таблицы маршрутизации и отправить пакет на указанный интерфейс;
  • -s — размер одного пакета;
  • -t — установить TTL вручную;
  • -v — более подробный вывод.
Читайте также:  Кнопка для windows tab

Теперь, когда мы рассмотрели основные параметры команды ping и ее синтаксис, пришло время практики, дальше поговорим о том, как сделать ping определенного узла в Linux.

Как пользоваться Ping?

Для проверки работоспособности сети часто используется программа ping любого сайта, который всегда доступен, например, google.com или еще проще и короче ya.ru. Вам будет достаточно передать утилите в параметрах этот адрес, она сама найдет ip и сделает все нужное:

Как я и писал выше, для каждого пакета выводится уникальный идентификатор icmp_seq, количество узлов до целевого узла ttl и время, потраченное на доставку пакета time. Чтобы остановить ping нажмите сочетание клавиш Ctrl+C. В конце утилита вывела общую статистику:

  • packets transmitted — отправлено пакетов;
  • received — получено пакетов;
  • packet loss — процент потерянных пакетов;
  • time — обще время работы;
    rtt min/avg/max/mdev — минимальное время/среднее время/максимальное время/квадратичное отклонение.

Если выполнение команды ping не остановить, то пакеты могут отправляться очень долгое время, это создает дополнительную нагрузку на сервер и поэтому не желательно. Вы можете сразу в вызове команды ограничить количество отправляемых пакетов с помощью опции -c:

Точно так же как мы выполняем ping для домена, можно указать ip адрес напрямую. Это позволяет проверить есть ли сеть когда неверно настроены серверы DNS. Например:

Следующий вид отправки ping сообщений, это ping флуд. С помощью таких пакетов можно выполнить нагрузочное тестирование канала или даже заглушить интернет соединение на одной из машин. Но эти функции можно использовать только с правами суперпользователя. Для организации ping флуда укажите опцию -f:

По умолчанию, в обычном режиме, каждый следующий пакет отправляется, когда получен ответ на предыдущий. Но вы можете сами установить интервал между отправкой пакетов -i:

ping -i 0.2 losst.ru

Здесь программа ping выполняет так званный, настраиваемый флуд, вы указываете с какой интенсивностью нужно отправлять пакеты. С помощью опции -D вы можете увидеть Unix Timestamp для каждого сообщения:

Выводы

В этой статье мы рассмотрели что такое команда ping в linux, как ее использовать основные параметры и методы применения. Этот очень простой инструмент можно применять для тестирования неполадок сети и их исправления. В этом плане утилита может стать незаменимой.

Сеть между Windows и Linux: нет пинга

Есть следующая сеть:
Компьютер, настроенный под рутер. Назовём его рутером. На нём установлен debian linux.
Компьютер, который хочется подключить к нему и устроить LAN из 2х компов.

Когда на LAN компьютере запускаю linux (Fedora), то рутер пингуется и всё впорядке. Когда запускаю Win XP, то пинг пропадает (его нет даже при таймауте в 40 сек и размере пакета 1байт).
router IP — 192.168.0.1
router netmask — 255.255.255.0

WinXP IP — 192.168.0.2
netmask — 255.255.255.0
gateway — 192.168.0.1

Брендмауер в винде выключен.

В чём может быть проблема?

Добавлено через 1 час 37 минут
Заметил ещё такую особенность:
Если зайти в «Сетевые подключения», и в свойствах этого подключения нажать «Исправить», то появляется пинг на 2 пакета и потом снова пропадает. Причём на каждое исправить пинг на 2 пакета стабильно появляется.
Причём исправление ломается на очистке DNS кэша (это кажется не играет никакой роли), и проходит 3 стадии:
Очистка ARP-кэша, очистка NetBT, обновление NetBT.
Может быть ARP-кэш засоряется какой-нибудь гадость? Или дело в NetBT?

Как настроить сеть между компьютерами на Windows XP и Windows 2000 Prof?
Ne mogu naladiti seti . Pomogite! Konfiguratsia takai: Notebook s XP s USB kartoi i desktop.

Читайте также:  Ssh tiny core linux

Сильно тормозит сеть между Windows XP и Windows 7. Как обнаружить причину?
Есть сетка wi-fi. В сети три компа. Два из них на Win7 и один на WinXP. Сеть по обычной схеме -.

Нет общего доступа между Windows XP и Windows 2008R2\Windows 7
Прощу помощи разобраться в проблеме: ПК с установленной windows XP не может открыть папку общего.

Настройка Open VPN — нет пинга, подключение есть
Помогите разобраться в чем тут может быть дело. Подключение есть,а вот пинга с клиента на сервер.

Просто ping -t -w 100 192.168.0.1
Сейчас попробую arping

Выяснил:
если удалить arp кэш у винды, то пинг появляется на 2 пакета.

Добавлено через 13 минут
Если делать arping 192.168.0.2 -I eth1 на рутере, то пинг идёт нормально без сбоев. В этот момент пинг с виндовской машины становиться лучше (50% сбоев).
Неправильно настроены routing tables на рутере? (Но с линуксом на клиентской машине проблем ведь нет)

Добавлено через 11 минут
Если пинговать arping’ом с виндовской машины — то тоже всё впорядке, пинг arping идёт 100%. Пока идёт arping с виндовской машины простой пинг тоже проходит на 100%

Добавлено через 18 часов 13 минут
Перепроверил тублицы роутинга у рутера и сервисы у винды.
Не обнаружил нечего необычного. Непонимаю в чём может быть дело

Добавлено через 1 час 51 минуту
Посмотрел что происходит в сети через сниффер. Вот 2 пакета в качестве примера (в оффтоп убрано лишнее, жирным выделенно подозрительное).
Пакет от рутера:
ARP request

HW type: Ethernet (0x0001)
Protocol type: IP (0x0800)
HW size: 6
Protocol size: 4
Opcode: request (0x0001)
[Is gratuitous: False]

Sender MAC address: 00:00:00_00:00:12 (00:00:00:00:00:12)
Sender IP address: 127.0.0.1 (127.0.0.1)
Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00)
Target IP address: 192.168.0.2 (192.168.0.2)

Снифер выдаёт следующее инфо об этом пакете: «Who has 192.168.0.2? Tell 127.0.0.1»

Пакет от винды:
ARP reply:

HW type: Ethernet (0x0001)
Protocol type: IP (0x0800)
HW size: 6
Protocol size: 4
Opcode: reply (0x0002)
[Is gratuitous: False]

Sender MAC address: AsustekC_79:86:ca (00:1b:fc:79:86:ca)
Sender IP address: 192.168.0.2 (192.168.0.2)
Target MAC address: 00:00:00_00:00:10 (00:00:00:00:00:10)
Target IP address: 127.0.0.1 (127.0.0.1)

Снифер выдаёт инфо на этот пакет: «192.168.0.2 is at 00:1b:fc:79:86:ca (duplicate use of 127.0.0.1 detected)»

Странно что 127.0.0.1 учавствует в arp. Странно что у него постоянно меняется mac адресс.

Если очестить arp кэш, то последовательность пакетов в сети такая:

1. «Who has 192.168.0.1? Tell 127.0.0.1» — это запрос к рутеру
2. «192.168.0.1 is at 00:1b:fc:79:86:ca» -ответ от рутера
3. Echo (ping) request
4. Echo (ping) reply
5. Echo (ping) request
6. Echo (ping) reply
7 «Who has 192.168.0.2? Tell 127.0.0.1 (duplicate use of 127.0.0.1 detected)»
8.»192.168.0.2 is at 00:1b:fc:79:86:ca (duplicate use of 127.0.0.1 detected)»
9. DNS запрос антивируса
10. DNS ответ антивирусу
Всё.

Примечательно что в п.1, п7 и п.8 используется 3 разных мак адреса (причём все они какие-то странные типа 00:00:00:00:00:53)
+/- 3 к последнему числу.

Can’t ping from Windows to Linux server

Basically, I can ping from my Linux server to Windows (when I disable the firewall), but I can’t ping from Windows to Linux, whether I disable the ufw-firewall or not. It just doesn’t reach it. My Ubuntu uses a Network Bridged Adapter, as well.

Читайте также:  Msi 1070 драйвер windows 10

Linux server’s IP:

Windows IP (Wi-Fi):

Because of this, I think, I cannot connect to the linux server using SSH as well. Firewall can’t be the issue, because I disabled both of them.

I’ve said this in the comment section below, but might as well repeat it here. No, SSH does not work. It gives the famous error: «Network error: Connection timed out», and I still haven’t been able to fix that problem.

Yes, my Ubuntu host is on a Virtual Machine (VirtualBox). I’m just trying to connect my Ubuntu server (which is on a VM), to my Windows host, through SSH. But that doesn’t work. Since that didn’t work, I tried to ping the two, and one of two was successful, which is strange. If it’s the Network Bridge Adapter which is causing a problem, what do you suggest I take? And also, I HAVE done SSH before, and it worked. Only now, after a couple of months, I’m trying to do SSH again, and now it’s failing, for some weird reason. Should I try and change the IP of my Ubuntu?

It’s an Ubuntu Server. Here are the two relevant config-files of my server:

1 Answer 1

We need a little more information on your network setup to answer your question fully, but I believe I know at least what is causing the issue.

1) Both the Windows and Linux computers are supposed to be on the same local network.

2) The Linux server is not a virtual machine.

3) You are using bridged connections on your Windows machine to share its wireless connection to the Linux server through ethernet. (You bridged Wireless and Ethernet in Windows to get a connection to Linux.)

Then the problem is likely your network bridge. Your router assigned the local IP 192.168.0.110 to the Windows machine, and this is a common subnet for local networks.

The issue is that your Linux server has the IP of 10.88.77.111, which is an entirely different subnet. This means it likely did not receive an address from your router properly, and because of this Windows cannot ping the Linux server.

I would remove the network bridge, check all of your settings, and try to create it again. Did you change any settings from default when creating the bridge, such as setting static addresses under the «Internet Protocol Version 4 (TCP/IPv4)» properties, for example?

Edit:

Since your Linux server is a virtual machine, the above information does not apply to your setup.

When you originally setup the virtual machine, did you change any of the network settings?

Edit #2:

Wait a second, that address you have your server set to looks very similar to the address VirtualBox assigns when the network settings are in NAT mode. Are you sure it is in bridged mode, like this for example:

If it is in bridged mode, and not NAT, then set the /etc/network/interfaces file to automatically retrieve an IP address. It will likely look more like the Windows one. If the automatic address it gives you works, then configure the static IP address to be what it gave you automatically.

Оцените статью