Как вы проверите физический статус линка ethernet карты

Обновлено: 07.07.2024

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

  1. удалённый сервер отключен от сети вообще;
  2. проблемы с кабелями;
  3. сетевой интерфейс на удалённом серве может быть отключен;
  4. на удалённом сервер работает фильтрация firewall-ом; как правило, в таком случае, вы можете увидеть его MAC-адрес, но нормального обмена данными не происходит.

Примеры того, как можно получить данные ARP-таблицы.

Проверка сайтов с помощью curl

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

Проверка сети с помощью netstat

Как и вышеупомянутые утилиты, netstat может помочь в определении источника проблем в сети. С помощью опций -an можно отобразить все открытые порты и активные соединения:

Использование traceroute для проверки сети

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

Некоторые узлы отбрасывают пакеты от traceroute . В таком случае, с помощью опции -I можно использовать протокол ICMP:

Утилита MTR

Просмотр трафика с помощью tcpdump

  • неправильного роутинга пакетов;
  • проблем с интерфейсами, устройствами;
  • удалённый сервер не прослушивает указанынй порт (не запущен соответствующий сервис);
  • сетевое устройство на пути следования пакета блокирует передачу пакетов (файерволы, ACL и т.п.).

Поиск проблем в сети с помощью tshark

Опции и вид выдаваемой tshark информации очень схож с tcpdump , однако tshark имеет больше возможностей.

Например, tshark умеет записывать данные в файл, как и tcpdump , но при этом он умеет создавать новый файл для записи, когда предыдущий достигнет заданного размера. Кроме того, ему можно указать количество создаваемых файлов, после достиджения которого он начнёт перезаписывать первый созданный файл.

Использование утилиты nmap

Я хочу проверить, физически ли указан указанный ethX вверх или вниз. Как это сделать с командной строкой?

Проверьте /sys/class/net/eth0/operstate и другие файлы в этом каталоге.

Насколько я знаю, это относится к Linux 2.6+, но обеспечивает чистый интерфейс для драйвера ядра.

Полную документацию для этой части файловой системы sys можно найти здесь:

Последняя строка показывает, что вы хотите:

- другое. Хорошо старый

также расскажет вам, работает ли интерфейс. ПРИМЕЧАНИЕ. Соблюдайте осторожность при использовании этих методов, поскольку они могут отображать устаревшую информацию о состоянии ссылки.

вы должны увидеть все изменения состояния

Вы также можете использовать mii-tool, чтобы узнать, поднята ли ссылка и проверить скорость согласования.

Вы можете получить полную информацию с помощью команды

И если вы просто хотите увидеть статус ссылки, дайте команду ниже

Если ваша система использует ifplugd (например, на Raspberry Pi с Raspbian), вы можете использовать связанный с ним инструмент состояния ifplugstatus , чтобы получить статус ссылки всех интерфейсов:

или конкретный интерфейс (например, eth0):

netplugd - это служба, которая может запускать программу (ы), когда кабель подключен или кабель вынут. Таким образом, командной строке будет команда grep /var /log /messages или dmesg для вывода netplugd.

Чтобы быстро добавить к ответу @ goo , вы бы интерпретировали ip link или ip link show INTERFACE следующим образом.

Это порт, который находится в административном порядке, но физически опущен:

2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000

Другими словами, UP , который вы видите, указывает, что система настроена на использование сетевой платы для сетевого взаимодействия. NO-CARRIER здесь расскажет вам, что проблема, связанная с работой сети, не работает.

Это порт, административно опущенный (его физический уровень «вверх», технически - это виртуальная машина):

3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

Наконец, этот порт работает нормально:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP mode DEFAULT group default qlen 1000

Административно UP , LOWER_UP указывает, что физический уровень работает (т. е. есть несущая), а второй UP подтверждает (по сути) уровень IP повышается.

9 примеров Linux ethtool для манипулирования картой Ethernet (карта NIC)


Утилита Ethtool используется для просмотра и изменения параметров устройства Ethernet.

1. Перечислите свойства устройства Ethernet

При выполнении команды ethtool с именем устройства отображается следующая информация об устройстве Ethernet.

Этот вышеприведенный вывод ethtool отображает свойства карты Ethernet, такие как скорость, пробуждение, дуплекс и состояние обнаружения канала. Ниже приведены три типа доступных дуплексов.

  • Полный дуплекс: разрешает отправку и получение пакетов одновременно. Этот режим используется, когда устройство Ethernet подключено к коммутатору.
  • Полудуплекс: позволяет отправлять или получать пакеты в один момент времени. Этот режим используется, когда устройство Ethernet подключено к концентратору.
  • Автосогласование: если включено, само устройство Ethernet решает, использовать ли полный дуплекс или полудуплекс на основе сети, к которой подключено устройство Ethernet.

2. Измените параметр NIC с помощью опции ethtool -s autoneg

Приведенный выше выход ethtool eth0 показывает, что параметр «Автосогласование» находится во включенном состоянии. Вы можете отключить это, используя опцию autoneg в ethtool, как показано ниже.

После вышеуказанного изменения вы можете увидеть, что значение «обнаружение канала» изменилось на «выключено», и автосогласование отключено.

3. Измените скорость устройства Ethernet

Используя ethtool, вы можете изменить скорость устройства Ethernet для работы с определенными сетевыми устройствами, а новое назначенное значение скорости должно быть в пределах ограниченной емкости.

Когда вы меняете скорость, когда адаптер подключен к сети, он автоматически отключается, и вам необходимо снова подключить его с помощью команды ifup.

Как показано в приведенном выше выводе, скорость изменилась с 1000 Мбит / с до 100 Мбит / с, и параметр автосогласования не установлен.

Чтобы изменить максимальную единицу передачи (MTU), обратитесь к нашей статье примеров ifconfig .

4. Отображение настроек драйвера Ethernet

Параметр ethtool -i отображает версию драйвера, версию прошивки и информацию о шине, как показано ниже.

5. Дисплей автосогласования, RX и TX из eth0

Просмотрите сведения об автосогласовании для конкретного устройства Ethernet, как показано ниже.

6. Показать статистику сети конкретного устройства Ethernet

Используйте опцию ethtool -S для отображения переданных, полученных, ошибок и т. д. Байтов, как показано ниже.

7. Устраните проблемы с подключением Ethernet

Если есть проблема с сетевым подключением, вы можете проверить (или изменить) параметры устройства Ethernet, описанные в приведенных выше примерах, когда вы видите следующие проблемы в выходных данных команды ethtool.

  • Значение скорости и дуплекса отображается как неизвестно
  • Значение обнаружения ссылки отображается как Нет

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

После вышеупомянутых изменений, если обнаружение канала все еще говорит «Нет», проверьте, есть ли какие-либо проблемы в кабелях, идущих от коммутатора и системы, возможно, вы захотите углубиться в этот аспект.

Для захвата и анализа пакетов из определенного сетевого интерфейса используйте утилиту tcpdump .

8. Определите определенное устройство от нескольких устройств (мигает светодиодный порт карты NIC)

Предположим, что у вас есть машина с четырьмя адаптерами Ethernet, и вы хотите определить физический порт конкретной карты Ethernet. (Например, eth0).

Используйте параметр ethtool -p, который заставит мигать соответствующий светодиод физического порта.

9. Делать изменения постоянными после перезагрузки

Если вы изменили какие-либо параметры устройства Ethernet с помощью ethtool, все они исчезнут после следующей перезагрузки, если вы не выполните следующее.

В Ubuntu вы должны изменить файл /etc/network/interfaces и добавить все ваши изменения, как показано ниже.

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

В SUSE измените файл /etc/sysconfig/network/ifcfg-eth-id и включите новый скрипт, используя переменную POST_UP_SCRIPT, как показано ниже. Включите следующую строку в качестве последней строки в соответствующем файле конфигурации eth1 adpater.

Затем создайте новый файл scripts/eth1, как показано ниже в каталоге /etc/sysconfig/network. Убедитесь, что у сценария есть разрешение на выполнение, и убедитесь, что утилита ethtool находится в каталоге /sbin.

Интересует вопрос о том как правильно проверить доступность и состояние одного или нескольких интерфейсов.

А самое интересное это как программно узнавать об изменении состояния сетевого интерфейса.

Объясни что ты понимаешь под доступностью и состоянием сетевых интерфейсов.




man ifconfig, man bash, man cron


Иногда сетевой интерфейс в ifconfig может быть не виден (если имеет неактивное состояние). В этом случае надо воспользоваться командой ip.


Я имел ввиду если в выводе команды ip a будут видны сетевые интерфейсы со STATE DOWN. ,



Иногда сетевой интерфейс в ifconfig может быть не виден

Хотя лучше таки ip, потому как ifconfig не покажет безымянные алисы, мать его.

а в каком пакете этот ваш ip?


$ dpkg -S /sbin/ip
iproute: /sbin/ip


Да, совсем забыл про опцию :)


>а в каком пакете этот ваш ip?

grep $interface /proc/net/dev


>Хотя лучше таки ip, потому как ifconfig не покажет безымянные алисы, мать его.



ethtool или miitool в зависимости от ситуации. Или смотреть на RUNNING, CARRIER и UP флаги в ifconfig.

Если хочется получать событие об изменении состояния то dbus и NetworkManager =)

Читайте также: