Диагностика сетей штатными средствами ОС UNIX на примере FreeBSD

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

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

Первой особенностью правильной диагностики компьютерных сетей в UNIX-подобных ОС, является использование учетной записи root. Большинство команд, возможно, отработают и под простым пользователем, однако, я лично рекомендую обзавестись паролем суперпользователя и добиться знака “#” в начале командной строки.

Консоль для диагностики сети под root

Диагностируем работу сетевых адаптеров и настроек протокола TCP/IP

Для диагностики сетевых адаптеров в UNIX-среде служит команда ifconfig. С ее помощью, к слову, можно и настраивать интерфейсы, поскольку имеет она большое количество параметром. Мы же остановимся лишь на некоторых их них, необходимых для выявления неисправностей в работе компьютерной сети.

Как правило, команда доступна из любого каталога, но в некоторых дистрибутивах Linux, команда ifconfig выдаст сообщение “command not found”, в этом случае необходимо узнать и использовать при наборе ее полный путь. Для этого воспользуемся командой which ifconfig.

Команда ifconfig для настройки сетевых интерфейсов в UNIX

Вывод команды ifconfig без параметров зависит от обнаруженных в системе сетевых карт и покажет для каждой настройки и состояние. Вывод различен в разных дистрибутивах, но выводится примерно одина и та же информация.

Вывод команды ifconfig без параметров

В листинге видно, что система обнаружила 3 сетевых интерфейса, один из которых (lo0, имеющий адрес 127.0.0.1) – виртуальный. Из интересующего нас:

  • ether – физический адрес сетевой карты (иногда необходим провайдеру)
  • inet – IP-адрес
  • netmask – маска сети в 16-ричном формате
  • status – статус соединения: active свидетельствует о подключенном кабеле, no carier – об отсутсвии физического соединения.

В случае отсутствия настроек IP-адреса, маски, можно попытаться получить настройки автоматически. Для разных дистрибутивов Linux за это отвечают разные команды, во FreeBSD и Linux Debian пользуемся командой dhclient с указанием сетевого интерфейса, например

# dhclient em0

Если адрес не получен при статусе “active”, а в сети присутствует DHCP-сервер, необходимо проверить сервер или роутер, назначающий адреса.

Если сервера DHCP нет, назначаем командой ifconfig вручную, например так:

# ifconfig em0 192.168.0.102 netmask 255.255.255.0

При этом старые значения заменятся текущими.

После получения правильного адреса изучаем маршруты, больше всего интересует основной шлюз – default gateway. Для этого выполним команду

# netstat –r

Основной шлюз определяем командой netstat

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

# route delete default

И пропишем правильный, например 192.168.0.1:

# route add default 192.168.0.1

Настройки DNS находятся в отдельном файле /etc/resolv.conf. Посмотреть файл можно либо командой

# cat /etc/resolv.conf

Список DNS-серверов в файле resolv.conf

Либо, открыть в любом текстовом редакторе, тут же можно его и отредактировать. Синтаксис файла подробно описан в документации. Для понимания скажу лишь, что:

  • все сервера, начинаются с ключевого слова “nameserver”;
  • сверху указываются наиболее предпочтительные сервера;
  • последняя запись заканчивается символом перевода строки.

Команды диагностики узлов сети

Аналогично Windows, для выявления неисправности в работе сети в ОС UNIX существует команда ping. Последовательность проверки наличия отклика от узлов сети та же, что и описанная в первой части:

  • свой IP-адрес;
  • основной шлюз;
  • IP-адрес, выданный провайдером;
  • Основной шлюз провайдера;
  • DNS-сервер;
  • url узла в сети Интернет (например, yandex.ru).

Команду ping лучше ограничить (параметр -c N, где N-кол-во пакетов), поскольку без параметров обмен пакетами будет проходить до нажатия комбинации клавиш Ctrl+C. Выполним последовательно все команды по обмену пакетами.

Ошибки при передачи данных можно посмотреть по конечной статистике - проценты потерь (% loss).

Провальный тест команды ping

Успешный тест - при совпадении переданных и полученных пакетов.

Диагностика доступности узлов сети с помощью команды ping

Проверка узлов сети трассировкой

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

Для выполнения трассировки используем команду traceroute.

Проверка маршрутов от компьютера до узла сети трассировкой traceroute

Проверка работы портов отдельных узлов сети

Для того, чтобы проверить правильность прохождения сетевого пакета по конкретному порту, можно воспользоваться telnet-клиентом. С его помощью можно послать GET запрос сайту или проверить работу почтового сервера. Например, попробуем получить главную страницу сайта http://ya.ru без использования браузера. Тем самым проверим, происходит ли обмен сетевым трафиком между текущим компьютером и веб-сайтом по 80-му порту.

Для этого, используя telnet-клиент:

  • соединяемся с веб-сервером по 80 порту
    # telnet ya.ru 80
  • отправим серверу запрос методом GET по протоколу http 1.1
    GET / HTTP/1.1
  • укажем имя хоста
    host: ya.ru
  • нажмем Enter для завершения команды

В ответ, при корректной работе протокола, сервер вернет html-код содержимого запрошенной страницы.

Используем telnet-клиент для проверки портов

Подводя итоги

Применяя на практике знания и обладая инструментами одной лишь операционной системы, даже такой “пользовательской”, как Windows, Вы сможете без труда выявить, понять причины неисправности и устранить их, не прибегая к сторонним программам. Надеюсь, эта статья поможет Вам в этом.