Время от времени пользователи Linux и Unix сталкивались с различными сетевыми проблемами. Многие из этих проблем представлены здесь и на некоторых других форумах по поиску и устранению неисправностей, но они очень конкретны и содержат много дополнительной технической информации, а иногда довольно сложно понять суть и реальную причину некорректного поведения системы.
Задавая этот вопрос, я намерен открыть вики- страницу сообщества, которая позволит обобщить наш опыт устранения неполадок в сети и отладки. Я надеюсь, что пользователи Linux и Unix смогут легче распознавать и решать («разделяй и властвуй») свои проблемы с сетью, используя эту страницу.
Родитель этой страницы должен быть Лучшей практикой для диагностики проблем . Но здесь мы должны сосредоточиться на устранении проблем сети из пространства пользователя и ядра.
Я полагаю, если вы:
- Поделитесь информацией об использовании какого-нибудь замечательного инструмента диагностики сети с конкретными примерами использования и примерами сетевых ошибок, которые они помогают отследить.
- Поделитесь ссылкой на отличный сетевой учебник, связанный с этой темой
- Расскажите об общем методе или рецепте, который позволяет решать некоторые проблемы сети.
- Поделитесь информацией о вашем наборе инструментов для отладки и устранения неполадок в сети
это идеально подходит для этой темы.
Я начну с того, что поделюсь ссылкой на инструменты диагностики varios и 12-летним простым руководством . Кроме того, учебник по archlinux, похоже, содержит актуальную информацию о нашей теме. А для того, чтобы погрузиться в работу с сетями Linux, нам обязательно нужно посетить Linux Networking-HOWTO .
Ответы:
Я думаю, что общие принципы устранения неполадок в сети:
Что касается меня, я обычно получаю всю необходимую информацию, используя все необходимые инструменты, и стараюсь сопоставить эту информацию с моим опытом. Решение, какой уровень сетевого стека содержит ошибку, помогает обрезать маловероятные варианты. Использование опыта других людей помогает быстро решать проблемы, но часто это приводит к ситуации, когда я могу решить какую-то проблему без ее понимания, и если эта проблема возникнет снова, я не смогу решить ее снова без Интернета.
И вообще, я не знаю, как решить проблемы с сетью. Кажется, что в моем мозгу есть какая-то магическая функция
SolveNetworkProblem(information_about_system_state, my_experience, people_experience)
, которая иногда может вернуть точно правильный ответ, а также может иногда давать сбой (как здесь TCP умирает на ноутбуке с Linux ).Я обычно использую утилиты из этого набора для отладки сети:
ifconfig
(илиip link
,ip addr
) - для получения информации о сетевых интерфейсахping
- для проверки, доступен ли целевой компьютер с моей машины.ping
также может использоваться для базовой диагностики DNS - мы можем пинговать хост по IP-адресу или по имени хоста, а затем решать, работает ли DNS вообще. А потомtraceroute
илиtracepath
илиmtr
посмотреть, что там происходит на пути туда.dig
- диагностировать все DNSdmesg | less
илиdmesg | tail
илиdmesg | grep -i error
- для понимания того, что ядро Linux думает о каких-то проблемах.netstat -antp
+| grep smth
- мое самое популярное использование команды netstat, которая показывает информацию о TCP-соединениях. Часто я выполняю некоторую фильтрацию, используя grep. Смотрите также новуюss
команду (изiproute2
нового стандартного набора сетевых инструментов Linux) иlsof
как вlsof -ai tcp -c some-cmd
.telnet <host> <port>
- очень полезен для связи с различными TCP-сервисами (например, по протоколам SMTP, HTTP), также мы можем проверить общую возможность подключения к какому-либо TCP-порту.iptables-save
(на Linux) - сбросить полные таблицы iptablesethtool
- получить все параметры сетевой карты (состояние канала, скорость, параметры разгрузки ...)socat
- инструмент швейцарской армии для тестирования всех сетевых протоколов (UDP, multicast, SCTP ...). Особенно полезно (больше, чем telnet) с несколькими-d
опциями.iperf
- проверить доступность полосы пропусканияopenssl
(s_client
,ocsp
,x509
...) для отладки всех вопросов SSL / TLS / PKI.wireshark
- мощный инструмент для захвата и анализа сетевого трафика, который позволяет анализировать и выявлять многие сетевые ошибки.iftop
- показать крупных пользователей в сети / роутере.iptstate
(в Linux) - текущий вид отслеживания соединения брандмауэра.arp
(или новый (Linux)ip neigh
) - показать статус ARP-таблицы.route
или новее (в Linux)ip route
- показывать статус таблицы маршрутизации.strace
(илиtruss
,dtrace
или вtusc
зависимости от системы) - это полезный инструмент, который показывает, какие системные вызовы выполняет проблемный процесс, а также коды ошибок (errno) при сбое системных вызовов. Этой информации часто достаточно для понимания поведения системы и решения проблемы. В качестве альтернативы, использование точек останова в некоторых сетевых функцияхgdb
позволяет узнать, когда они сделаны и с какими аргументами.iptables -nvL
показывает, сколько пакетов соответствует каждому правилу (iptables -Z
чтобы обнулить счетчики).LOG
Мишень вставлена в цепочках брандмауэра полезно узнать , какие пакеты достигают их и как они уже были преобразованы , когда они получают там. Для продолженияNFLOG
(связанного сulogd
) войдет полный пакет.источник
nmap
. Профиль открытых портов на машине может быстро дать вам подсказки относительно того, смотрите ли вы, например, на сервер Linux или Windows.tcpdump
. В качестве стандартного анализатора пакетов для TCP.Удивительное количество «сетевых проблем» сводится к тем или иным проблемам DNS. Первоначальное устранение неполадок следует использовать
ping -n w.x.y.z
для того, чтобы пропустить DNS-разрешение имени хоста и просто проверить IP-соединение. После этого используйтеroute -n
для проверки IP-маршрут по умолчанию без разрешения DNS.После проверки IP-соединения и маршрутизации
nslookup
,host
иdig
можно получить информацию. Помните, что «блокировка» может указывать на то, что тайм-ауты DNS происходят.Не забудьте проверить наличие и содержание
/etc/resolv.conf
. DHCP-клиенты изменяют этот файл при каждой аренде, и иногда они ошибаются, или, если на диске недостаточно места, обновление может не произойти.источник
Проблемы с кабелями могут существовать. Если у вас есть доступ к оборудованию, убедитесь, что все кабели подключены и механически подключены. Если вы видите маршрутизаторы или интерфейсы Ethernet, убедитесь, что индикаторы связи включены.
Удаленно, вы должны зависеть от
ethtool
иmii-tool
.«Обнаружено соединение: да» - это хорошо, но 10 Мбит / с и полудуплекс - не хорошо, поскольку сетевая карта на этом компьютере может работать лучше. Мне нужно выяснить, нет ли сетевого адаптера или кабеля. Другой компьютер, подключенный к тому же маршрутизатору, сообщает 100 Мбит / с, Full duplex.
источник