Поиск и устранение неисправностей сети Linux и отладка

Это печатает случайное число между 1 и 67. Это, возможно, также было записано без echo:

awk 'BEGIN{srand(); print int(rand()*67+1)}'

Посмотрите гну пользовательское руководство Awk:

srand ([x])
Установите начальную точку или семя, для генерации случайных чисел к значению x.

81
10.08.2018, 20:50
3 ответа

Я думаю, общие принципы сетевого поиска и устранения неисправностей:

  1. Узнайте в том, какой уровень стека TCP/IP (или некоторого другого стека) происходит проблема.
  2. Поймите то, что является корректным поведением системы, и что является отклонением от состояния нормальной системы
  3. Попытайтесь выразить проблему в одном предложении или в нескольких словах
  4. Используя полученную информацию от ошибочной системы, Вашего собственного опыта и опыта других людей (Google, различный форум, и т.д.), попытка решить проблему до успеха (или отказ)
  5. Если Вы приводите к сбою, спрашиваете других людей о справке или некотором совете

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

И в целом, я не знаю, как я решаю сетевые проблемы. Кажется, что существует некоторая волшебная функция в моем названном мозгу SolveNetworkProblem(information_about_system_state, my_experience, people_experience), то, которое могло иногда давать точно правильный ответ и также могло иногда перестать работать (как здесь TCP умирает на ноутбуке Linux).

Я обычно использую utils от этого набора для сетевой отладки:

  • ifconfig (или ip link, ip addr) - для получения информации о сетевых интерфейсах
  • ping - для проверки, если целевой узел доступен от моей машины. ping также мог использоваться для базовой диагностики DNS - мы могли проверить с помощью ping-запросов хост IP-адресом или его именем хоста и затем решить, работает ли DNS вообще. И затем traceroute или tracepath или mtr смотреть, что продолжается на пути там.
  • dig - диагностируйте все DNS
  • dmesg | 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) - для дампа полных iptables таблиц
  • ethtool - получите все параметры сетевой карты (состояние ссылки, скорости, разгрузите параметры...),
  • socat - швейцарский армейский инструмент для тестирования всех сетевых протоколов (UDP многоадресно передайте, 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 может позволить Вам узнать, когда они сделаны и с который аргументы.
  • исследовать проблемы брандмауэра о Linux: iptables -nvL шоу, сколько пакетов подобрано каждым правилом (iptables -Z обнулять счетчики). LOG цель, вставленная в цепочки брандмауэра, полезна для наблюдения, какие пакеты достигают их и как они были уже преобразованы, когда они добираются там. Добираться далее NFLOG (связанный с ulogd) зарегистрирует полный пакет.
119
27.01.2020, 19:30
  • 1
    Geez, говорите о полном! –  mVChr 01.04.2017, 04:02
  • 2
    я добавил бы nmap. Профиль открытых портов на машине может быстро дать, Вы подсказываете относительно того, смотрите ли Вы на Linux или Windows Server, например. –  Adam Monsen 21.04.2017, 21:54

Удивительное количество "сетевых проблем" сводится к проблемам DNS одного вида или другого. Начальный поиск и устранение неисправностей должен использовать ping -n w.x.y.z чтобы не учесть разрешение DNS имени хоста и просто проверить возможность соединения IP. После этого использовать route -n для проверки IP по умолчанию направляют без разрешения DNS.

После проверки возможности соединения IP и маршрутизации, nslookup, host и dig может привести к информации. Помните, что "запирание" может указать, что тайм-ауты DNS происходят.

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

14
27.01.2020, 19:30

Кабельные соединения проблем могут существовать. Если Вы имеете доступ к аппаратным средствам, удостоверяетесь, что кабели все включаются и механически заняты. Если Вы видите маршрутизаторы или интерфейсы Ethernet, удостоверяетесь, что световые сигналы ссылки идут.

Удаленно, необходимо зависеть от ethtool и mii-tool.

[root@flask ~]# ethtool eth0
Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Speed: 10Mb/s
        Duplex: Half
        Port: MII
        PHYAD: 24
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: g
        Wake-on: d
        Current message level: 0x00000001 (1)
                               drv
        Link detected: yes

"Ссылка обнаружила: да" хорошо, но 10Mb/s и Полудуплекс не хороши, поскольку NIC на том компьютере может добиться большего успеха. Я должен выяснить, провален ли NIC, или кабель. Другой компьютер включил тот же маршрутизатор, говорит 100Mb/s, Полный дуплекс.

8
27.01.2020, 19:30

Теги

Похожие вопросы