Не удается выполнить ping IP-адреса устройства, подключенного по Ethernet, на Ubuntu 20.04

Вопрос или проблема

Проблема

Из приведенных ниже скриншотов я полагаю, что я успешно настроил свой Ethernet-адаптер.

Используя lshw для демонстрации установленных интерфейсов

Используя ifconfig для отображения конфигурации сетевых интерфейсов

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

Результат ping 4 пакетов по IP-адресу устройства

Изначально возникли некоторые странности, касающиеся того, может ли интерфейс обнаружить соединение.

Показано, что я установил свои настройки Ethernet IPv4 на ручные вместо автоматических DHCP

Когда это было установлено на автоматическое (DHCP), беспроводная часть настроек не смогла подключиться к Ethernet. В результате я вручную настроил свой адрес, маску сети и шлюз, как вы можете увидеть на предыдущем скриншоте. После этого меню настроек начало показывать, что я подключен к какому-то устройству через Ethernet, как показано здесь:

Показано, что интерфейс пользователя говорит, что Ethernet подключен

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

Что я уже пробовал

  • Я выполнил перезагрузку как устройства, так и рабочего стола, и проверил наличиеLoose connections.

  • Я изучил возможность наличия ACL, ограничителей скорости и других таких межсетевых экранов, блокирующих получение пакетов. Я совсем новичок в сетевой безопасности, поэтому могу что-то пропустить, но не думаю, что это проблема, так как ничего действительно не обнаружилось.

  • Я пытался напрямую добавить IP, который пытаюсь пинговать, и его имя хоста в свой маршрут.

  • Поэтому я выполнил traceroute -I 192.168.137.11 и только IP моего ПК появился.

Возможно полезный фон

Рабочий стол был недавно собран с материнской платой, которая работает только для версий ядра с 5.15 и выше. Рабочий стол работает на Ubuntu 20.04, потому что мне нужно использовать функцию, которая эксклюзивна для версии MoveIt для ROS Noetic, среди прочих вещей. Таким образом, я в данный момент использую версию ядра 5.15.31. Мой Ethernet-интерфейс – это Realtek RTL8125. Установка драйверов для него доставила много проблем, так как большинство всего, что я пробовал через сайт Realtek:

https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software

и с помощью sudo apt-get install r8168-dkms потерпели неудачу, в основном из-за проблем, связанных с заголовками Linux. После удаления нескольких других версий ядра, удаления и переустановки других пакетов, то, что в конечном итоге позволило мне взаимодействовать с Ethernet-интерфейсом (я думаю), это было выполнено с помощью:

sudo apt install realtek-r8125-dkms

Я считаю, что успешная установка этого пакета, а также предыдущие скриншоты указывают на то, что драйвер был установлен, но я не совсем уверен, так ли это, и у меня нет понятия, мешает ли версия ядра, которую я использую, сетевому взаимодействию.

Я полагаю, что имя вашего Ethernet-устройства – enp7s0.

Пожалуйста, попробуйте провести несколько тестов:

Тест 1: Проверка физического и канального уровня

Отключите интерфейс Wi-Fi. Подключите устройство к Ethernet-порту и подождите, когда светодиоды на разъёмах загорятся. Затем используйте команду ethtool.

Первая строка нужна только в том случае, если ethtool не установлен:

sudo apt-get install ethtool
sudo ethtool enp7s0

Ищите эти строки (скорость, дуплекс, тип Negotiation и ссылка) в выводе команды:

    Скорость: 1000Mb/s
    Дуплекс: Полный
    Автоопределение: включено
...
    Обнаружение связи: да

Все значения должны выглядеть как в моем примере. Все эти параметры не зависят от настройки уровня OSI 3. Не имеет значения, установлены ли параметры IP на динамические/ручные/без IP-адреса и т. д.

Проблемные значения (любое из перечисленных):
скорость = 10 Мбит/с, дуплекс = половинный, обнаружение связи: нет

Тест 2: Записи ARP и сетевые соседи

Оставьте подключенное устройство. Установите IP-адрес Ubuntu из той же IP-сети, что и у подключенного устройства (например, 192.198.1.0/24), но с другим последним байтом. Выключите и включите интерфейс Ethernet в Ubuntu. Затем получите сетевых соседей и их MAC-адреса в Ubuntu.

ip neigh
arp -an

Вы должны увидеть хотя бы одну строку, содержащую MAC-адрес подключенного устройства. Обе команды генерируют схожий вывод.

Тест 3: Сбор и перечисление сетевых данных

Используйте tcpdump или tshark или wireshark для захвата сетевых кадров/пакетов и посмотрите, есть ли коммуникация ARP или DHCP и есть ли какие-либо ответы от других устройств.

sudo tcpdump -i enp7s0 arp or udp port 67 or udp port 68

В конечном итоге проверьте, была ли захвачена какая-либо коммуникация вообще.

sudo tcpdump -i enp7s0

Ответ или решение

К сожалению, вы сталкиваетесь с проблемой, которая может иметь множество причин. Давайте шаг за шагом проверим возможные источники проблемы, которые могут мешать успешной отправке пингов на устройство, подключенное по Ethernet в Ubuntu 20.04.

Шаг 1: Проверка физического соединения

Перед тем как углубляться в настройки системы, убедитесь в корректности физического подключения:

  • Проверьте, что Ethernet-кабель надежно подключён как к компьютеру, так и к целевому устройству.
  • Обратите внимание на индикаторы активности на Ethernet-портах: они должны гореть или мигать.

Шаг 2: Проверка настройки интерфейса

С помощью команды ifconfig или ip a проверьте, что ваш сетевой интерфейс (например, enp7s0) правильно сконфигурирован:

  • Убедитесь, что IP-адрес интерфейса и IP-адрес устройства находятся в одной подсети. Например, если ваше устройство имеет IP 192.168.137.11, то IP-адрес вашего интерфейса может выглядеть как 192.168.137.x, где x — любое число от 1 до 254.

Шаг 3: Проверка состояния соединения с помощью ethtool

Убедитесь, что соединение на уровне канала (Ethernet) активно, выполнив следующую команду:

sudo apt-get install ethtool
sudo ethtool enp7s0

В выводе ищите строки, начинающиеся с Speed, Duplex, и Link detected:

  • Speed должен быть, по крайней мере, 100Mb/s
  • Duplex должен быть Full
  • Link detected должно иметь значение yes

Если эти параметры не соответствуют требованиям, возможно, проблема заключается в физическом соединении или в самом интерфейсе.

Шаг 4: Проверка ARP-таблицы

Откройте терминал и выполните команды для проверки ARP-таблицы:

ip neigh
arp -an

Вы должны увидеть строку с MAC-адресом подключенного устройства. Если вы видите INCOMPLETE, возможно, устройство не отвечает на ARP-запросы.

Шаг 5: Сетевой анализ

С помощью tcpdump, проверьте, проходят ли пакеты на ваш интерфейс:

sudo tcpdump -i enp7s0

Просматривайте вывод на наличие ARP-запросов и ответов. Если ARP-запросы исходят, а ответы не приходят, возможно, проблема на стороне устройства.

Шаг 6: Проверка фаервола и ACL

Убедитесь, что фаервол на вашем компьютере не блокирует ICMP-трафик. Проверьте настройки ufw следующим образом:

sudo ufw status

Если фаервол включен, попробуйте временно отключить его:

sudo ufw disable

После проверки, не забудьте включить его обратно.

Шаг 7: Логи системы и драйвера

Проверьте системные журналы на наличие ошибок:

dmesg | grep -i r8125

Это даст представление о том, правильно ли работают драйвера Realtek. Если есть ошибочные записи, может потребоваться переустановка драйвера или настройка с использованием другого пакета.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...