Читать книгу Cуперкомпьютеры: администрирование - Сергей Анатольевич Жуматий - Страница 32

Глава 4. UNIX и Linux – основы
Сетевые команды

Оглавление

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

Команда ping – команда для проверки соединения между двумя компьютерами в сетях, построенных на базе стека протоколов TCP/IP. Команда отправляет на другой компьютер запросы Echo-Request по протоколу ICMP и принимает поступающие ответы. Засекая время между отправкой запроса и получением ответа, программа определяет задержку в передаче пакетов по маршруту и частоту потерь пакетов, позволяя оценить качество сетевого соединения между двумя узлами.

Синтаксис команды:


Пример:


Результат работы команды:


При запуске без специальной опции команда ping в UNIX-подобных системах работает неограниченно долго, посылая запросы указанному узлу. Каждый отправленный запрос имеет свой номер, по которому программа определяет, дошёл он до целевого компьютера или нет. В выводе команды номер запроса показывает поле icmp_seq, поле ttl – Time To Live – определяет время жизни ответного пакета, заданное в числе узлов. Ровно столько узлов пакет может пройти, передаваясь по маршруту до узла назначения.

Каждый узел, через который проходит пакет, уменьшает величину ttl на единицу; если значение счётчика станет равным нулю, то пакет будет уничтожен как «заблудившийся» и не будет отправлен дальше по маршруту. Последнее поле показывает время обмена сообщениями между двумя узлами. Оборвать работу команды ping можно с терминала, нажав комбинацию клавиш Ctrl-C, после чего команда ping выведет статистику работы: сколько пакетов было отправлено, сколько получено, процент потерянных пакетов, общее время работы в миллисекундах. Кроме того, выводится минимальное, среднее и максимальное время прохождения пакетов.

Основные опции команды ping:

-c count ограничивает число посылаемых пакетов значением count;

-n отменяет преобразование IP-адреса отвечающего узла в его DNS-имя. Такой режим может ускорить работу программы и исключить проблемы с настройками DNS при диагностике сети;

-i interval задаёт время ожидания перед посылкой следующего пакета;

-l size задаёт размер пакета.

Эта команда может служить в том числе для тестирования сети InfiniBand, если на интерфейсах InfiniBand поднят протокол IPoIB (IP over InfiniBand). Если вы поняли, что удалённый узел или сеть недоступны, можно выяснить, где происходит обрыв связи. Для этого используется команда traceroute или её более современный аналог tracepath. В качестве аргумента команда принимает адрес узла.

Она посылает пакеты ping на этот узел со значением ttl, равным 1, затем 2 и т. д. В выдаче программы видно, какие узлы по пути следования пакета обработали факт обнуления ttl и сообщили об этом. Таким образом, мы можем отследить путь пакета.

Пример работы команды traceroute:


Видно, что 10-й по счёту узел не ответил; это значит, что он просто игнорирует пакет, не уведомляя об этом отсылающего.

Полезные опции команды traceroute:

-n не преобразовывать DNS-имена узлов,

-f N начать с TTL с указанным номером,

-m N ограничить TTL указанным числом (по умолчанию 30),

-w N время ожидания отклика (по умолчанию 5 сек.).

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


Значения столбцов:

Destination  – адрес назначения пакета;

Gateway  – адрес хоста(роутера), куда будет направлен пакет;

Genmask  – маска адреса(destination);

Flags, Metric, Ref, Use  – служебная информация;

Iface  – имя интерфейса, куда будет передан пакет.

Если необходимо передать пакет по сети на адрес x.y.z.q, ядро последовательно проверит этот адрес по таблице: на адрес и на поле destination будет наложена маска (genmask), и если результаты совпадут, то пакет будет пересылаться на роутер (gateway) через сетевой интерфейс (interface). Наложение маски производится битовой операцией AND, т. е. все биты, установленные в маске в 0, будут в результате сброшены в 0, а биты, установленные в маске в 1, будут в результате такими же, как и у исходного адреса.

Отсюда, в частности, следует, что маска 0.0.0.0 задаёт маршрут, который сработает всегда, так как результат её применения всегда будет 0.0.0.0. Такой маршрут часто называют default (по умолчанию). В нашем примере сеть 9.10.11.* доступна через eth1, сеть 10.*.*.* – через интерфейс eth0 (это внутренняя сеть), а все остальные пакеты направляются на роутер 9.10.11.1, который доступен через интерфейс eth1.

Командой route можно также добавлять и удалять маршруты. Для добавления маршрута к сети используйте:


Здесь мы добавляем маршрут для сети 1.2.3.* на интерфейсе eth0:


Эта команда – сокращённый вариант команды


Интерфейс определяется автоматически, если роутер (gw) доступен через другие правила. Если заменить в предыдущих командах 'add' на 'del', получим команду удаления маршрута. Обратите внимание, что при удалении надо также указать все параметры: netmask, gw, dev и т. п., даже если они очевидны, иначе команда может не отработать.

Команда ifconfig управляет работой сетевого интерфейса. Без аргументов она показывает состояние активных интерфейсов:


Тут мы видим MAC-адреса карт (HWaddr), IP-адреса интерфейсов (inet addr), широковещательный адрес сети и маску сети (Bcast, Mask), а также статистику:

RX/TX packets – передано/принято пакетов;

RX/TX bytes – передано/принято байт;

UP BROADCAST RUNNING MULTICAST – состояние карты;

MTU – размер фрейма Ethernet;

txqueuelen – лимит очереди пакетов;

errors – число ошибок;

dropped – число сброшенных пакетов;

overruns – число переполнений буфера;

frame – число ошибок при принятии фрейма;

carrier – число потери связи;

collisions – число коллизий при передаче.

Чтобы посмотреть данные о всех, а не только о работающих интерфейсах, запустите ifconfig с ключом -a. С правами root командой ifconfig можно управлять параметрами интерфейсов. Быстро отключить интерфейс eth0 можно командой ifconfig eth0 down, включить обратно – ifconfig eth0 up. Пример быстрой настройки интерфейса и его адреса:


Эта команда задаст для интерфейса eth0 адрес 192.168.0.1 и маску 255.255.255.0. После этого надо включить (поднять) интерфейс командой ifconfig eth0 up. В большинстве реализаций команда ifconfig автоматически создаёт правило маршрутизации.

В современном ядре Linux команды route и ifconfig считаются устаревшими, и на смену им пришла команда ip из пакета iproute2. Настоятельно рекомендуем использовать новые команды, если вы всё ещё не применяете их.

Формат команды ip прост:


«Объектом» может быть одна из более чем десяти подсистем, здесь мы кратко рассмотрим только некоторые. «Команда» – действие, которое мы хотим выполнить. С помощью необязательных опций можно, например, ограничить действие команды только сетями ipv4 или запросить более подробный вывод.

Cуперкомпьютеры: администрирование

Подняться наверх