Топ 7 сетевых команд Linux для системного администратора

Каждый администратор Linux должен уметь настраивать сеть и диагностировать любые сетевые проблемы. Мы разберем топ 7 сетевых команд linux, которые могут вам в этом помочь.

Список рассматриваемых команд в данной статье:

Команда IP в системах Linux

Эта команда является одной из основных команд, которая понадобится каждому администратору в повседневной работе, от настройки новых систем и назначения IP-адресов до устранения неполадок в существующих системах. Команда ip может отображать информацию об ip адресах, управлять маршрутизацией, а также отображать различные сетевые устройства, интерфейсы и туннели.

Синтаксис команды ip будет следующий:

ip <опции> <объект> <команда>

К части <объект> данной команды чаще всего относятся:

  • adress — сетевые адреса
  • link — конфигурирование сетевых устройств
  • tunnel — туннелирование через протокол IP
  • route — управление маршрутизацией
  • rule — правила маршрутизации
  • vrf — управление виртуальным маршрутизатором
  • xfrm — управление политиками IPSec

Приведем примеры использования данной команды.

Показать IP-адреса, назначенные интерфейсу на вашем сервере

[root@srv ~]# ip address show

Назначить IP-адрес интерфейсу, например, enps03

[root@srv ~]# ip address add 192.168.1.254/24 dev enps03

Чтобы удалить IP-адрес интерфейса введите:

[root@srv ~]# ip address del 192.168.1.254/24 dev enps03

Изменить статус интерфейса и перевести eth0 в режим онлайн

[root@srv ~]# ip link set eth0 up

Изменить статус интерфейса и перевести eth0 в режим офлайн

[root@srv ~]# ip link set eth0 down

Изменить MTU интерфейса eth0

[root@srv ~]# ip link set eth0 mtu 9000

Измените статус интерфейса, включив беспорядочный режим для eth0

[root@srv ~]# ip link set eth0 promisc on

Добавить маршрут по умолчанию (для всех адресов) через локальный шлюз 192.168.1.254, доступный на устройстве eth0

[root@srv ~]# ip route add default via 192.168.1.254 dev eth0

Добавить маршрут к 192.168.1.0/24 через шлюз 192.168.1.254

[root@srv ~]# ip route add 192.168.1.0/24 via 192.168.1.254

Добавить маршрут к 192.168.1.0/24, который может быть достигнут на устройстве eth0

[root@srv ~]# ip route add 192.168.1.0/24 dev eth0

Удалить маршрут для 192.168.1.0/24 через шлюз 192.168.1.254

[root@srv ~]# ip route delete 192.168.1.0/24 via 192.168.1.254

Отобразить маршрут, выбранный для IP 10.10.1.4

[root@srv ~]# ip route get 10.10.1.4

Команда ifconfig в системах Linux

Хотя сейчас команду ifconfig заменила команда ip, она все равно является популярным инструментом для настройки и диагностирования сети в Linux.

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

ifconfig <опции> <интерфейс> <команда> <параметры> адрес

Разберем пару примеров.

Отобразить сведения о текущих сетевых настройках

[root@srv ~]# ifconfig

Отобразим сведения об интерфейсе enp0s3

[root@srv ~]# ifconfig enp0s3

Переведем интерфейс enp0s3 в режим офлайн

[root@srv ~]# ifconfig enp0s3 down

Переведем интерфейс enp0s3 в режим онлайн

[root@srv ~]# ifconfig enp0s3 up

Назначим ip адрес интерфейсу eth0

[root@srv ~]# ifconfig eth0 192.168.0.1

Теперь назначим сетевую маску интерфейсу eth0

[root@srv ~]# ifconfig eth0 netmask 255.255.255.254

Изменим MTU для eth0

[root@srv ~]# ifconfig eth0 mtu 1080

КОМАНДА MTR В СИСТЕМАХ LINUX

MTR (Matt’s traceroute) — это программа с интерфейсом командной строки, которая служит средством диагностики сети и устранения неполадок. Данная  команда сочетает в себе функциональность ping и traceroute. Как и traceroute, команда mtr покажет маршрут от компьютера до указанного хоста в сети. mtr предоставляет множество статистических данных о каждом прыжке, например время отклика и процент. С помощью команды mtr вы получите больше информации о маршруте и сможете увидеть проблемные устройства по пути. Если вы видите внезапное увеличение времени ответа или потерю пакетов, то очевидно, что где-то плохой канал.

Синтаксис команды MTR следующий:

mtr <опции> hostname/IP

Команда mtr без опций показывает статистику, включая каждый прыжок (имена хостов) со временем и % потерь

[root@srv ~]# mtr google.com

команда mtr в linux
Вывод команды mtr

Используем опцию -g и получим IP-адреса вместо имен хостов:

[root@srv ~]# mtr -g google.com

Показать числовые IP-адреса и имена хостов:

[root@srv ~]# mtr -b google.com

Установить количество пингов, которые вы хотите отправить:

[root@srv ~]# mtr -c 10 google.com

Получите отчет о mtrрезультате выполнения команды:

[root@srv ~]# mtr -r -c 10 google.com > mtr-output.log

или же с флагом -w (обеспечивает более подробный вывод):

[root@srv ~]# mtr -rw -c 10 google.com > mtr-output-advanced.log

Принудительно использовать TCP вместо ICMP:

[root@srv ~]# mtr –tcp google.com

Принудительно использовать UDP вместо ICMP:

[root@srv ~]# mtr –udp google.com

Чтобы указать максимальное количество переходов (по умолчанию — 30) между локальной системой и удаленной машиной:

[root@srv ~]# mtr -m 35 google.com

Определить размер пакета:

[root@srv ~]# mtr -r -s 50 google.com

КОМАНДА tcpdump В СИСТЕМАХ LINUX

Команда tcpdump предназначена для захвата и отображения информации о пакетах.

Перед началом захвата пакетов утилитой tcpdump сначала нужно посмотреть список доступных интерфейсов от root:

[root@localhost ~]# tcpdump -D
1.eth0
2.nflog (Linux netfilter log (NFLOG) interface)
3.nfqueue (Linux netfilter queue (NFQUEUE) interface)
4.usbmon1 (USB bus number 1)
5.any (Pseudo-device that captures on all interfaces)
6.lo [Loopback]

Если нужно захватить трафик на eth0, то следует использовать опцию -i eth0

[root@srv ~]# tcpdump -i eth0

[root@srv ~]# tcpdump -i eth0 -c 10

Захват трафика определённого хоста

Вы можете отфильтровать трафик, исходящий от определенного хоста. Например, чтобы найти трафик, идущий от и до хоста 8.8.8.8, используйте команду:

[root@srv ~]# tcpdump -i eth0 -c 10 host 8.8.8.8

Для приходящего трафика от 8.8.8.8 используйте:

[root@srv ~]# tcpdump -i eth0 src host 8.8.8.8

Для исходящего трафика на 8.8.8.8 используйте:

[root@srv ~]# tcpdump -i eth0 dst host 8.8.8.8

Захват трафика подсети

Вы также можете захватывать трафик в определенную сеть и из нее, используя следующую команду:

[root@srv ~]# tcpdump -i eth0 net 192.168.1.0 mask 255.255.255.0

или же:

[root@srv ~]# tcpdump -i eth0 net 192.168.1.0/24

Можно отфильтровать по источнику или месту назначения.

Поступающий трафик:

[root@srv ~]# tcpdump -i eth0 src net 10.1.0.0/24

Исходящий трафик:

[root@srv ~]# tcpdump -i eth0 dst net 10.1.0.0/24

Захват трафика по портам

Захватить только трафик DNS-порта 53:

[root@srv ~]# tcpdump -i eth0 port 53

Для конкретного хоста:

[root@srv ~]# tcpdump -i eth0 host 8.8.8.8 and port 53

Чтобы захватить только HTTPS-трафик:

[root@srv ~]# tcpdump -i eth0 -c 10 host www.google.com and port 443

Чтобы захватить все порты, кроме 80 и 25:

[root@srv ~]# tcpdump -i eth0 port not 53 and not 25

КОМАНДА NETSTAT В СИСТЕМАХ LINUX

netstat (network statistics) — это утилита командной строки, выводящая на дисплей состояние TCP-соединений (как входящих, так и исходящих), таблицы маршрутизации, число сетевых интерфейсов и сетевую статистику по протоколам. netstat является частью пакетов ifconfig и iproute2.

Если netstat отсутствует в вашей системе linux, то установите его следующей командой:

[root@srv ~]# dnf install net-tools

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

netstat <options>

Команду можно использовать без каких либо параметров

[root@server ~]# netstat

Чтобы перечислить все порты и соединения независимо от их состояния или протокола, используйте:

[root@srv ~]# netstat -a

Вывести список всех TCP-портов

[root@srv ~]# netstat -at

Перечислите все порты UDP

[root@srv ~]# netstat -au

Перечислить все прослушиваемые порты

[root@srv ~]# netstat -l

Перечислить все прослушиваемые порты TCP

[root@srv ~]# netstat -lt

Перечислить все прослушиваемые порты UDP

[root@srv ~]# netstat -lu

Перечислить прослушиваемые UNIX сокеты

[root@srv ~]# netstat -lx

Отображение статистики для всех портов независимо от протокола

[root@srv ~]# netstat -s

Показать статистику только TCP портов

[root@srv ~]# netstat -st

Чтобы просмотреть TCP-соединения с указанным именем PID / программы, используйте:

[root@srv ~]# netstat -tp

Чтобы найти процесс, использующий определенный номер порта, запустите:

[root@srv ~]# netstat -an | grep ':<port number>'

КОМАНДА NSLOOKUP В СИСТЕМАХ LINUX

nslookup — это утилита, предоставляющая пользователю интерфейс командной строки для обращения к системе DNS (проще говоря, DNS-клиент). Позволяет задавать различные типы запросов к записям DNS и опрашивать произвольно указываемые сервера.

Рассмотрим следующие распространенные примеры.

Найти A-запись домена

[root@srv ~]# nslookup example.com

Проверить записи NS домена

[root@srv ~]# nslookup -type=ns example.com

Найти записи MX, отвечающие за обмен электронной почтой

[root@srv ~]# nslookup -query=mx example.com

Найти все доступные записи DNS домена

[root@srv ~]# nslookup -type=any example.com

Чтобы проверить использование определенного DNS-сервера

[root@srv ~]# nslookup example.com ns1.nsexample.com

Проверить А запись домена по IP адресу

[root@srv ~]# nslookup 8.8.8.8

КОМАНДА PING В СИСТЕМАХ LINUX

Ping — это инструмент, который проверяет подключение к узлу сети на уровне IP протокола TCP / IP. Отправляя сообщения эхо-запроса ICMP, отображается получение соответствующих сообщений эхо-ответа, а также время приема-передачи. Ping — это основная команда TCP / IP, используемая для устранения неполадок подключения, доступности и разрешения имен.

Самое простое и очевидное использование команды на доступность хоста

[root@srv ~]# ping google.com

Мы можем остановить команду Ping в консоли используя сочетание клавиш CTRL + C или ограничить количество отправляемых запросов за ранее опцией

[root@srv ~]# ping -c 10 google.com

В системе с несколькими сетевыми интерфейсами можно выбрать нужный для отправки

[root@srv ~]# ping -I eth0 google.com

Или зададим интерфейс в виде IP адреса

[root@srv ~]# ping -I 192.168.1.10 google.com

Так же можно указать версию IP для использования v4 или v6

[root@srv ~]# ping -4 google.com
[root@srv ~]# ping -6 google.com

Хороший результат диагностики будет, если мы теряем 0% пакетов. Также чем меньше в выводе команды будет задержка, тем лучше качество связи.

Во время проверки связи с хостом мы можем увидеть различные ответы:

Destination Host Unreachable

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

Request timed out

У этого ответа может быть много причин, довольно распестрённая — это блокировка брандмауэром на удаленной машине.

Name or service not known

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

На этом обзор сетевых утилит закончен. Если вы нашли эту статью полезной, обязательно напишите об этом в комментариях!

В статье использованы материалы сайта redhat

Оставьте комментарий