Мониторинг сети в Linux (ping, traceroute, mtr)

ip — утилита командной строки в Linux из пакета iproute2. Позволяет выполнять настройку сетевой подсистемы и является заменой таких утилит, как ifconfig, route, arp.

Команды Linux для навигации в терминале

  1. &&. Строго говоря, это не команда. Если вы хотите выполнить сразу несколько команд, поставьте между ними двойной амперсанд вот так: первая_команда && вторая_команда. Терминал выполнит команды по порядку. Вы можете ввести столько команд, сколько захотите.
  2. alias. Присваивает созданные вами названия длинным командам, которые вы не можете запомнить. Введите alias длинная_команда короткая_команда.
  3. cd. Изменяет текущую терминальную папку. Когда вы запускаете терминал, он использует вашу домашнюю папку. Введите cd адрес_папки, и терминал будет работать с файлами, которые там находятся.
  4. clear. Очищает окно терминала от всех сообщений.
  5. history. Отображает все недавно введённые вами команды. Кроме того, вы можете переключаться между недавними командами с помощью клавиш «Вверх» и «Вниз». Если вы не хотите, чтобы введённая вами команда была записана, поставьте перед ней пробел так: ваша_команда.
  6. man. Отображает руководство по программам и командам Linux. Введите man имя_пакетаили man ваша_команда.
  7. whatis. Отображает краткое описание какой-либо программы. Введите команду и название программы whatis имя_пакета.
Команды Linux для навигации в терминале

Установка

Большинство разработчиков операционных систем на базе Linux включают утилиту tcpdump в список предустановленных, но если по какой-то причине она в вашем дистрибутиве отсутствует, ее можно всегда скачать и установить через «Терминал». Если у вас ОС основана на Debian, а это Ubuntu, Linux Mint, Kali Linux и им подобные, нужно выполнить эту команду:

sudo apt install tcpdump

При установке вам нужно ввести пароль. Обратите внимание, что при наборе он не отображается, также для подтверждения установки нужно ввести символ «Д» и нажать Enter.

Если у вас Red Hat, Fedora или CentOS, то команда для установки будет иметь следующий вид:

sudo yam install tcpdump

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

Синтаксис и основные опции

Основное назначение команды route – добавление и удаление сетевых маршрутов для системного ядра, а также просмотр содержимого таблицы маршрутизации. Эта команда, хотя и работает в разных UNIX-подобных системах одинаково, однако имеет резко отличающийся синтаксис в зависимости от используемой системы.

В общем случае прототипом команды route является следующая запись:

route add [-net|-host] <IP/Net> netmask gw <Gateway IP> dev <Int>X

Например:

$ route add -net 127.0.0.0 netmask 255.0.0.0 metric 1024 dev lo

Эта команда добавит шлюз с обратной связью через виртуальное устройство lo, которое используется для этой цели в Linux-системах. Опции -net и -host используются для указания адреса, характеризующего либо сеть, либо узел соответственно как пункты назначения. Для определения подсети служит опция  netmask, для задания приоритета шлюза — опция metric. Сетевой интерфейс обозначается опцией dev. Кроме описанных выше для команды route также существуют и другие используемые ей опции, которые приведены в следующей таблице:

Встроенные таблицы фильтра iptables

По умолчанию используется таблица filter. Опция -t в правиле указывает на используемую таблицу. С ключом -t можно указывать следующие таблицы: nat, mangle, filter.

Таблица nat

Таблица nat используется, главным образом, для преобразования сетевых адресов Network Address Translation. Через эту таблицу проходит только первый пакет из потока. Преобразование адресов автоматически применяется ко всем последующим пакетам. Это один из факторов, исходя из которых, не нужно осуществлять какую-либо фильтрацию в этой таблице.

Читайте также:  Что делать, если сильно греется ноутбук

Цепочка PREROUTING используется для внесения изменений в пакеты на входе в фильтр.

Цепочка OUTPUT используется для преобразования пакетов, созданных приложениями внутри компьютера, на котором установлен фильтр, перед принятием решения о маршрутизации.

Цепочка POSTROUTING используется для преобразования пакетов перед выдачей их в сеть.

Таблица mangle

Таблица mangle используется для внесения изменений в заголовки пакетов. Примером может служить изменение поля TTL, TOS или MARK.

Важно!В действительности поле MARK не изменяется, но в памяти ядра заводится структура, которая сопровождает данный пакет все время его прохождения через машину так, что другие правила и приложения на данной машине (и только на данной машине) могут использовать это поле в своих целях. Таблица имеет две цепочки PREROUTING и OUTPUT.

Цепочка PREROUTING используется для внесения изменений на входе в фильтр перед принятием решения о маршрутизации.

Цепочка OUTPUT — для внесения изменений в пакеты, поступающие от внутренних приложений.

Таблица mangle не должна использоваться для преобразования сетевых адресов (Network Address Translation) или маскарадинга (masquerading), поскольку для этих целей имеется таблица nat.

Таблица filter

Таблица filter используется, главным образом, для фильтрации пакетов. Для примера, здесь мы можем выполнить DROP, LOG, ACCEPT или REJECT без каких-либо сложностей, как в других таблицах. Имеется три встроенных цепочки FORWARD, INPUT, OUTPUT.

Цепочка FORWARD используется для фильтрации пакетов, идущих транзитом через фильтрующий компьютер.

Цепочка INPUT предназначена для обработки входящих пакетов, направляемых локальным приложениям фильтрующего компьютера.

Цепочка OUTPUT используется для фильтрации исходящих пакетов, сгенерированных локальными приложениями фильтрующего компьютера.

Советы и рекомендации по использованию командной строки Linux

  • Вы можете использовать команду clear, чтобы очистить терминал, если он там скопилось слишком много команд.
  • TAB можно использовать для заполнения в терминале. Например, вам просто нужно набрать «cd Doc», а затем TAB, и терминал заполняет все остальное и делает его «cd Documents».
  • Ctrl + C может использоваться для безопасной остановки любой команды в терминале. Если Crtl+C не сработал, то можно использовать Ctrl + Z чтобы остановить процесс, запущенный в терминале.
  • Вы можете выйти из терминала, используя команду exit.Выключить или перезагрузить компьютер можно с помощью команд sudo halt и sudo reboot.

<хедер class=»read-next-card-хедер»>

Команды для управления пользователями

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

  • useradd — создает новую учетную запись. Например, мы хотим добавить пользователя с именем Timeweb. Для этого вводим: useradd Timeweb. Но свежесозданному аккаунту нужен не только логин, но и пароль. С помощью опций можно задать дополнительные характеристики новому пользователю.
  • passwd — задает пароль для учетной записи, работает вкупе с предыдущей командой. То есть сразу после создания аккаунта, пишем: passwd Timeweb (в вашем случае может быть любой другой пользователь). После этого система попросит придумать и указать пароль для новой учетной записи. По ходу набора пароля в терминале не будут отображаться даже звездочки, но он все равно учитывает каждую нажатую клавишу. Продолжайте набирать пароль вслепую.
  • userdel — удаляет выбранную учетную запись. Синтаксис простейший:

userdel имя учетной записи, которую нужно стереть

Утилита MTR

MTR – это альтернатива программе traceroute. Объединяя функции ping и traceroute, mtr позволяет постоянно опрашивать удаленный сервер и отслеживать изменения задержки и производительности с течением времени.

Синтаксис утилиты также несложный:

$ mtr опции адрес_узла

Например:

$ mtr

Вывод похож на traceroute, но mtr имеет существенное преимущество – ее вывод постоянно обновляется. Это позволяет собирать средние показатели, а также отслеживать тенденции и изменения производительности сети. Как и с утилитой ping, mtr будет работать бесконечно. Чтобы прервать работу команды, нужно нажать специальную клавиатурную комбинацию <Ctrl+C>.

Читайте также:  Как контролировать пропускную способность сети в Linux

Пояснение вывода:

host — имя хоста; Loss% — процент потерь пакетов; Snt — количество отправленных пакетов; Last — время задержки последнего отправленного пакета в миллисекундах; Avg — среднее время задержки; Best — минимальное время задержки; Wrst — максимальное время задержки; StDev — среднеквадратичное отклонение времени задержки;

Полезные опции:

-c <число> — Количество циклов проверки (количество отправленных пакетов по сути); -r — Режим отчета. Программа выполнит указанное при помощи параметра -c количество циклов, выведет отчет и завершит свою работу; -w — Режим расширенного отчета. Результат такой же, как и при использовании опции -r, но длинные имена хостов обрезаться не будут; -s <количество-байт> — Установить размер пакетов для отправки; -n — Не использовать DNS для разрешения имен хостов и отображать вместо них IP-адреса; -o «список-полей» — Отображать только указанные поля и в таком порядке, в котором они были указаны; -p — Выводить информацию построчно, без перерисовки экрана, с разделением полей пробелом. Этот формат удобен, если вы используете какую-то дополнительную программу-парсер или скрипт для анализа, которому передаются данные. -a <IP-адрес> — Указать адрес интерфейса, с которого будут отправляться пакеты; -i <число-секунд> — Интервал между отправляемыми запросами; -u Использовать протокол UDP для отправки пакетов; -4 Использовать только IPv4; -6 Использовать только IPv6.

  1. find

    Осуществляет поиск в файловой системе, файлах и папках. Для результатов поиска можно выполнять дополнительные команды.

  2. pwd

    Отображает на экране текущий каталог.

  3. clear

    Команда полной очистки окна терминала удаляет все ранее выведенные сообщения.

  4. history

    Показывает ранее введённые пользователем команды. Перемещаться по списку введённых команд можно, нажимая на клавиатуре «Вверх» и «Вниз».

  5. locate

    Быстрый поиск файлов по базе данных updatedb для шаблонов имён файлов. Эта БД работает со снимком файловой системы, что многократно ускоряет процесс поиска. Но тут есть и существенный минус. Точность поиска зависит от того, насколько актуальны данные о файловой системе в текущей версии снимка.

  6. zcat / zless / zmore

    Утилиты для просмотра сжатых файлов. С помощью zcat можно найти увидеть список сжатых файлов, zless выводит их списком постранично с возможностью листать вперёд и назад, а zmore — только вперёд.

  7. ;

    Точка с запятой — ещё один оператор для последовательного запуска нескольких команд в одной строке. Если нужно, чтобы команды выполнялись параллельно, используйте оператор так:

    (команда_№1 &); (команда_№2 &); (команда_№3 &)

Управление маршрутизацией с помощью iproute2

Из статьи Основные понятия сетей мы знаем, что если текущему узлу необходимо куда-либо отправить IP пакет, то сетевая подсистема ядра использует таблицу маршрутизации. Если пакет отправляется в ту же подсеть, которой принадлежит хост, то с помощью ARP определяется физический адрес хоста назначения и пакет отправляется напрямую хосту назначения. Если адрес назначения принадлежит не «локальной сети», то пакет отправляется на шлюз (читай — направляется по маршруту), который указан в таблице маршрутизации для сети, которой принадлежит хост назначения. При этом, выбирается та сеть, в которой адрес сети наиболее заполнен (читай — меньше хостов в подсети). Если для хоста назначения не найден маршрут, то пакет отправляется на «шлюз по умолчанию». Все шлюзы должны находиться в той же подсети, что и исходный хост.

Допустим, в локальной сети есть некоторый хост с адресом , а так же есть хост , который является шлюзом в глобальную сеть, а так же есть хост с адресом , который является связующим маршрутизатором с сетью (то есть имеет еще один интерфейс  в сеть и на нем включен форвардинг). Для того, чтобы хост с адресом имел доступ в сеть Интернет и к локальной сети , необходимо внести в таблицу маршрутизации соответствующие записи, например с помощью команды ip route add:

# ip route add default via # ip route add via # ip route show dev eth1 proto kernel scope link src via dev eth1 default via dev eth

Первая команда добавляет маршрут по умолчанию (default) через узел (параметр via ). Вторая команда устанавливает маршрут на сеть через узел

Для вывода на экран содержимого таблицы маршрутизации используется команда ip route show. В данном случае в таблице маршрутизации три записи: первая о том, что сеть доступна непосредственно на интерфейсе eth1 (запись добавляется автоматически), и две записи, добавленные пользователем: альтернативный маршрут и маршрут по умолчанию.

Добавление постоянного статического маршрута при инициализации сети

О настройке сети через конфигурационные файлы я рассказывал в статье  Настройка сети в Linux, диагностика и мониторинг, в сегодняшней статье я немного дополню эту информацию. С помощью файла /etc/network/interfaces есть возможность задать постоянные маршрута при поднятии интерфейса и удаление маршрута при выключении интерфейса. Это делается с помощью параметра up и down соответственно. Нижеприведенная конфигурация позволяет задать маршрут до сети  через шлюз :

iface eth1 inet static address netmask up ip route add via down ip route del gateway

Выводы

На этом, данную заметку заканчиваю. Подведу краткие итоги. Для управления физическими интерфейсами применяется команда ip link из пакета iproute. Для настройки свойств физического подключения (скорость, технология, тип дуплекса используется команда ethtool. Для того, чтобы хост мог взаимодействовать с другими узлами подсети в рамках локального сегмента (широковещательного домена) на нем должен быть установлен IP-адрес и определена маска подсети. Для управления IP-адресами в Linux можно использовать команду ip addr. В локальной сети данный узел для определения физических адресов(MAC) по IP — адресам других узлов использует протокол ARP и локальный ARP -кэш (таблица). Управление ARP -таблицей осуществляется командой ip neigh. Для взаимодействия с удаленными подсетями на данном узле необходимо определить шлюз по умолчанию или/и альтернативные шлюзы. Все шлюзы должны находиться в той же подсети, что и исходный узел. Управление таблицей маршрутизации на узле может осуществляться командой ip route. У параметров команд пакета iproute2 есть сокращенный синтаксис, например, ip link show eth0 можно записать как ip l sh eth0.

Что почитать

man ip man interfaces Linux Advanced Routing & Traffic Control HOWTO

С Уважением, !

Другие материалы в категории Сети

  • Принцип работы Routing Policy DataBase
  • Настройка и управление сетевой подсистемой Linux (пакет iproute2)
  • Network File System (NFS) на Linux
  • Samba, как член домена Active Directory
  • Отключение/включение IPv6 в Debian
  • Teaming (bonding) на Debian Linux
  • HOWTO DNS сервер BIND (практика)
  • Настройка сети в Linux, диагностика и мониторинг
  • Локальные компьютерные сети

Теги: Debian, ip, iproute, Linux, network, основы

Поиск неполадок

▍Примеры

Поиск неполадок
  • ss — утилита для вывода статистической информации о сокетах.
  • nmap <ip-address> — имя этой команды является сокращением от Network Mapper. Она сканирует сетевые порты, обнаруживает хосты, выясняет MAC-адреса и выполняет множество других задач.
  • ip addr/ifconfig -a — эта команда предоставляет сведения об IP-адресах и другие данные по всем интерфейсам системы.
  • ssh -vvv [email protected]<ip/domain> — такая команда позволяет подключиться по SSH к другому компьютеру, используя заданный IP-адрес или доменное имя компьютера и имя пользователя. Флаг -vvv позволяет получать подробные сведения о происходящем.
  • ethtool -S <interface> — данная команда позволяет вывести статистические сведения по заданному интерфейсу.
  • ifup <interface> — эта команда включает указанный интерфейс.
  • ifdown <interface> — эта команда отключает указанный интерфейс.
  • systemctl restart network — с помощью этой команды можно перезагрузить системную сетевую подсистему.
  • /etc/sysconfig/network-scripts/<interface-name> — это — файл настройки интерфейсов, используемый для указания IP-адреса, сети, шлюза и других параметров для заданного интерфейса. Здесь можно задать использование интерфейсом DHCP-режима.
  • /etc/hosts — данный файл содержит сведения о соответствии хостов или доменов IP-адресам, настроенные администратором.
  • /etc/ — в этом файле хранятся настройки DNS.
  • /etc/ — этот файл хранит настройки NTP.