- Вопрос или проблема
- Тест 1: Проверка физического и канального уровня
- Тест 2: Записи ARP и сетевые соседи
- Тест 3: Сбор и перечисление сетевых данных
- Ответ или решение
- Шаг 1: Проверка физического соединения
- Шаг 2: Проверка настройки интерфейса
- Шаг 3: Проверка состояния соединения с помощью ethtool
- Шаг 4: Проверка ARP-таблицы
- Шаг 5: Сетевой анализ
- Шаг 6: Проверка фаервола и ACL
- Шаг 7: Логи системы и драйвера
- Заключение
Вопрос или проблема
Проблема
Из приведенных ниже скриншотов я полагаю, что я успешно настроил свой 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:
и с помощью 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/sDuplex
должен быть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. Если есть ошибочные записи, может потребоваться переустановка драйвера или настройка с использованием другого пакета.
Заключение
Следуя этим шагам, вы должны выявить источник проблемы с отправкой пингов на подключенное устройство. Если после всех проверок проблема остается, возможно, имеет смысл обратиться за поддержкой к более опытным администратором сетей или изучить документацию на ваше оборудование.