- тестирования сети в Линукс
- traceroute
- tcpdump
- ngrep
- mii-tool
- Linux: Команды для настройки и диагностики сети
- Общая
- 1. PING
- 2. TRACEROUTE
- 3. IFCONFIG
- 3.1. Использование команды ifconfig
- 3.2 Указание IP-адреса и маски подсети
- 3.3. Включение и выключение
- 3.4 Указание MTU
- 4. NETSTAT
- 4.1 Показать список прослушиваемых портов, всех или по протоколу
- 4.2 Показать список активных соединений, всех или по протоколу
- 4.3 Показать статистику по протоколам
- 4.4 Показать PID и имя службы
- 4.5 Показать список программ прослушивающих определённый порт
- 5. DIG
- 6. ROUTE
- 6.1 Создать маршрут по умолчанию route add default gw 192.168.0.1
- 6.2. Создать или удалить маршрут
- 7. ARP
- linux-notes.org
- Топ-10 Основных сетевых команд в Linux
- Сетевые команды в примерах в Linux
- Примеры использования сетевых команд в Linux
- hostname — Имя хоста
- ping — пинг
- Ifconfig
- traceroute
- netstat
- nslookup
- finger
- telnet
- One thought on “ Топ-10 Основных сетевых команд в Linux ”
- Добавить комментарий Отменить ответ
тестирования сети в Линукс
Эта заметка выросла из шпаргалки для самого себя. Мне по работе приходится отлавливать баги в сети. Как проверить скорость в VPN-туннеле? Почему сервер не пингуется? Или пингуется, но не доступен. Кто забил весь канал торрентами? Где пропадают пакеты? Почтовый клиент выдает непонятную ошибку, что произошло на самом деле? Эти и многие другие вопросы периодически возникают у любого пользователя. Под катом описание программ входящих во все современные дистрибутивы, начиная от пинга и до таких экзотических как ngrep. А так же картинками, если картинками можно назвать, копии дампа с консоли.
# ping -n -i 0.2 -s 512 -I eth0 ya.ru
PING ya.ru (93.158.134.8) from 10.0.94.2 eth0: 512(540) bytes of data.
520 bytes from 93.158.134.8: icmp_seq=1 ttl=59 time=17.5 ms
520 bytes from 93.158.134.8: icmp_seq=2 ttl=59 time=15.0 ms
520 bytes from 93.158.134.8: icmp_seq=3 ttl=59 time=14.7 ms
3/3 packets, 0% loss, min/avg/ewma/max = 14.757/15.777/16.899/17.512 ms
520 bytes from 93.158.134.8: icmp_seq=4 ttl=59 time=14.7 ms
^C
Ключ -n означает, что надо выводить IP адреса вместо доменных имен, это полезно если пингуете по IP, тогда не будет тратится время на разрешение доменого имя, а еще, если DNS сервер не доступен это приведет к паузе в несколько секунд. Ключ -i задает интервал между отправкой пакетов, а -s размер пакета. Размер не может быть больше, чем MTU интерфейса. При помощи комбинации ключей -i и -s можно загрузить канал на любую ширину. -I задает имя интерфейса, через который будет отправлен пакет, полезно, если надо обойти таблицу маршрутизации. Чтобы вывести статистику, как я сделал я после третьего пакета, надо послать пингу сигнал SIGQUIT, с клавиатуры это делается Cntr+\
traceroute
#traceroute -N 16 -q 1 -A ya.ru
traceroute to ya.ru (77.88.21.8), 30 hops max, 60 byte packets
1 10.94.171.1 (10.94.171.1) [AS65534] 1.402 ms
2 1.32.108.213.hl.ru (213.108.32.1) [AS47333] 1.618 ms
3 94.122.dsl.westcall.net (195.177.122.94) [AS20485/AS25408] 2.859 ms
4 b0-152.mrouter.r.westcall.net (84.52.109.161) [AS25408] 3.021 ms
5 GW-Yandex.retn.net (87.245.250.102) [AS9002] 3.266 ms
6 aluminium-vlan901.yandex.net (77.88.56.111) [AS13238] 14.037 ms
7 gallium-vlan901.yandex.net (77.88.56.126) [AS13238] 16.517 ms
8 hummer-vlan2.yandex.net (87.250.228.136) [AS13238] 16.443 ms
9 ya.ru (77.88.21.8) [AS13238] 15.809 ms
traceroute показывает маршрут до удаленного хоста. По умолчанию он работает довольно медленно, так как опрашивает каждый роутер на пути пакета, по очереди и по три раза. Вы видите три времени ответа рядом с каждым хостом или три звездочки, если он не отвечает. Но traceroute можно ускорить. Ключ -N показывает сколько шагов пути пакета, они называются хопами, найти за 1 цикл, а -q количество запросов, которые будут отправлены к хосту. Ключ -A показывает номер автономной системы. Автономная система — блок IP сетей, выделенных одному оператору.
#mtr ya.ru
Приведет к такому экрану.
mtr это помесь пинга с трейсроутом. Наглядно видно, где проседает канал. В дебиан-образных дистрибутивах консольная версия ставится из пакета mtr-tiny
tcpdump
Иногда полезно глубже заглянуть, что же происходит в сети. Какие пакеты приходят и уходят. Например, чтобы удостовериться, что пакеты все таки уходят, а не блокируются фаерволом.
Вот что происходит при команде
В соседнем терминале запущен tcpdump
%sudo tcpdump -ni eth1 udp and port 53 and host 10.0.1.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
13:09:39.038766 IP 10.94.171.10.41440 > 10.0.1.1.53: 24708+ A? ya.ru. (23)
13:09:39.040403 IP 10.0.1.1.53 > 10.94.171.10.41440: 24708 3/2/0 A 77.88.21.8,[|domain]
Расшифровываю вывод. С хоста 10.94.171.10 порт 41440 на 10.0.1.1 порт 53 пошел запрос А записи для адреса ya.ru. 53 порт это протокол DNS следующая строчка это ответ DNS сервера, по адресу 10.0.1.1
Не смотря на название, tcpdump знает множество сетевых протоколов. Ключ -i показывает какой интерфейс будем слушать, -n не запрашивать имена в DNS для IP адресов. Дальше в командной строке идет описание какие именно пакеты мы будем отлавливать. Здесь я не буду описывать команды фильтрации — их множество, остановлюсь только на возможностях. И так можно выбирать с какого и на какой хост идет пакет, с какого и на какой порт и даже диапазон портов. Можно группировать фильтры при помощи скобок и логических слов and, or, not. Выбирать протоколы icmp, arp, tcp, udp подробности в мане.
ngrep
#ngrep -W byline -d eth0 NOTIFY port 5060
interface: eth0 (213.108.32.94/255.255.255.255)
filter: (ip or ip6) and ( port 5060 )
match: NOTIFY
#
U 213.108.33.128:5060 -> 85.114.2.44:5060
NOTIFY sip:85.114.2.44 SIP/2.0.
Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bK-2c32804.
From: 8126221842 ;tag=4751f3b994a4aca8o0.
To: .
Call-ID: a85b76bd-dc9f6574@192.168.1.2.
CSeq: 22858 NOTIFY.
Max-Forwards: 70.
Event: keep-alive.
User-Agent: Linksys/PAP2T-5.1.6(LS).
Content-Length: 0.
Ключ -W byline форматирует вывод по знакам переноса строки внутри пакета. Это очень удобно для почтовых протоколов или SIP, как в примере. Строка фильтра пакетов формируется так же, как и в tcpdump. Если не указывать какую подстроку ищем, то ngrep будет дампить все подходящие по условую пакеты. Если внутри пакета нет текстовой информации, тогда он обозначается решеткой (#)
И несколько простых утилиток, про которые нужно знать, что они существуют.
Как узнать, через какую запись в таблице маршрутизации пойдет трафик на IP адрес.
# ip route get 10.94.171.10
10.94.171.10 dev eth1.173 src 10.94.171.1
cache mtu 1500 advmss 1460 hoplimit 64
Как посмотреть кто или что забивает канал?
Для этого есть утилита iptraf c интерфейсом основанным на ncurses. При запуске без параметров выводит меню.
Для того, чтобы посмотреть суммарную статистику по интерфейсу
iptraf -d eth0
Для статистики по соединениям
iptraf -i eth0
Например у вас есть VPN туннель. Как проверить его ширину? Самый простой способ это утилита iperf. На одном хосте запускаем ее с ключем -s это будет сервер, который повиснет по умолчанию на порт 5001. С другой стороны запускаем с единственным параметром — адресом нашего сервера.
mii-tool
# mii-tool eth0
eth0: negotiated 100baseTx-FD flow-control, link ok
Утилитка из пакета net-tools. Показывает скорость физлинка. При ее помощи можно выловить проблему, когда две сетевые карточки не могут автоматически договориться о скорости и в результате будет что-то типа 10 мбит полудуплекс. Редкая проблема, но до сих пор встречается.
За рамками обзора остались nmap и hping. Жду в камментах ссылки на другие полезные программы. Может имеет смысл перенести в какой-нибудь подходящий блог?
Источник
Linux: Команды для настройки и диагностики сети
Оценка: 87.58 % — 30 Голосов
Общая
Пример простых команд в Linux, которые помогут настроить и продиагностировать сетевое соединение.
1. PING
Команда Ping — самый простой способ проверить качество и стабильность соединения между двумя сетевыми устройствами, расположенными в локальной или глобальной сети. Команда использует ICMP протокол для связи с сетевым устройством.
ping ip-адерсе или dns-имя узла
2. TRACEROUTE
Данная команда предназначена для выявления проблем в сети, позволяет увидеть маршрут следования пакета до указанного узла.
Использование команды:
traceroute ip-адрес или dns-имя узла
3. IFCONFIG
Команда ifconfig используется для определения сетевых интерфейсов, их включение и выключение, указание IP-адреса, маски подсети и MTU.
3.1. Использование команды ifconfig
Команда ifconfig выводит настройки всех сетевых интерфейсов.
3.2 Указание IP-адреса и маски подсети
ifconfig eth0 10.100.4.1 netmask 255.255.255.0
3.3. Включение и выключение
Включение интерфейса eth0:
Выключение интерфейса eth0:
3.4 Указание MTU
Указание MTU на интерфейсе eth0
ifconfig eth0 mtu XXXX
4. NETSTAT
Команда позволяет вывести информацию о соединения, таблицу маршрутизации, показать статистику по протоколам.
4.1 Показать список прослушиваемых портов, всех или по протоколу
Все | TCP | UDP |
netstat -a | netstat -at | netstat -au |
4.2 Показать список активных соединений, всех или по протоколу
Все | TCP | UDP |
netstat -l | netstat -lt | netstat -lu |
4.3 Показать статистику по протоколам
Все | TCP | UDP |
netstat -s | netstat -st | netstat -su |
4.4 Показать PID и имя службы
4.5 Показать список программ прослушивающих определённый порт
netstat -ap | grep http
5. DIG
Схожие по функционалу и принципу использования являются так же команды host и nslookup
Команда позволяет проверить записи на указанном DNS-сервере
A-запись | MX-запись | SOA-запись | TTL-запись | Все записи |
dig имя_домена | dig имя_домена mx | dig имя_домена soa | dig имя_домена ttl | dig имя_домена any |
Укоротить вывод команды поможет параметр +shortРеверс-запись можно посмотреть командой
dig -x IP-адрес +short
6. ROUTE
Команда позволяющая установить маршруты до разных сетей, позволяет редактировать таблицу маршрутизации.
6.1 Создать маршрут по умолчанию
route add default gw 192.168.0.1
6.2. Создать или удалить маршрут
Создать
route add -net 10.10.10.0/24 gw 192.168.0.1
Удалить
route del -net 10.10.10.0/24 gw 192.168.0.1
7. ARP
Позволяет просматривать, добавлять и удалять записи в ARP-таблицы
Источник
linux-notes.org
Топ-10 Основных сетевых команд в Linux
Сеть является неотъемлемой частью Linux и предлагает множество инструментов и команд для диагностики любой сетевой проблемы.
Сетевые команды в примерах в Linux
• Найти хост / доменное имя и IP-адрес — hostname
• Сделать тест сетевого соединения — ping-
• Получение конфигурации сети — Ifconfig
• Сетевые соединения, таблицы маршрутизации, статистики интерфейсов — NETSTAT
• Поиск имени DNS запрос — Nslookup
• Подключение к другим хостам — Telnet
• Получить сетевой хост — информация для пользователя трассировку
• Сделать трассировку — traceroute
• Просмотр информации пользователя – finger
• Проверка статуса хоста назначения — Telnet
Примеры использования сетевых команд в Linux
Давайте посмотрим некоторые примеры различных сетевых команд в Linux. Некоторые из них довольно элементарные например пинг и телнет, а некоторые являются более мощными, например Nslookup и NetStat. Когда вы использовали эти команды в комбинации вы можете получить все, что вы ищете , например, имя хоста , конечные соединения точек , состояние соединения и т.д.
hostname — Имя хоста
Имя хоста (hostname) без вариантов отображает хозяина машины. По этому чтобы проверить кто владелец выполните команду:
Эта команда отображает доменное имя машины. Чтобы увидеть IP -адрес для текущей машины выполните эту же команду с ключом «i»:
ping — пинг
Он посылает пакеты информации в определенный пользователем источник. Если будут получены пакеты , устройство назначает и посылает пакеты обратно . Ping можно использовать для двух целей
1 . Чтобы гарантировать, что сетевое соединение может быть установлено.
2 . Timing соединения. Если у вас пинг www.linux-notes.org он покажет IP -адрес сайта и время. Используйте Ctrl + C , чтобы остановить тест. Выполнить команду можно так:
Можно задать время перед отправкой пакета, например подождать 3 секунды перед отправкой следующего пакета.
Чтобы проверить локальный интерфейс существует несколько способов:
Можно так же посылать N количество пакетов и после чего завершить работу, для этого:
Так же можно узнать версию самого пинга, для этого выполните команду:
Вы запустили утилиту пинг, а ответа от вашего хоста вовсе нет, вы начинаете выяснять в чем же дело, и как решите эту проблему то удаленный хост выдаст звуковое предупреждение.
С опцией «-q» Вы сможете пропустить ответы от вашего удаленного хоста и показать полученную статистику:
Можно изменить размер передаваемого пакета (допустим с 56 на 120), а сделать это можно так:
Мы так же можем изменять длительность выполнение команды пинг, например нам нужно пинговать сервис 15 секунд, то для этого выполните:
Не прервав команду пинг, вы сможете увидеть статистику выполнения, нужно нажать CTRL + |
Ifconfig
Посмотреть конфигурацию сети , он отображает текущую конфигурацию сетевого адаптера . Это удобно, чтобы определить, если вы transmit (ТХ ) или receive (RX) ошибки.
traceroute
Удобная программа для просмотра количества количество прыжков и время отклика , чтобы добраться до удаленной системы или веб-сайта. Но вам нужно подключение к интернету , чтобы использовать этот инструмент. Но ее возможно будет Вам установить, чтобы воспользоватся.
Можно вывести информацию о всех сетевых картах что подключены, для этого выполните:
netstat
Самая полезная и очень универсальная для нахождения подключений к и от хозяина. Вы можете узнать все о многоадресной группы (multicast groups) сети выполнив:
Чтобы увидеть кто «сидит» на порту (допустим на 21) выполните команду:
Чтобы увидеть все соединения в том числе TCP и UDP выполните команду:
Параметр что выполнена программа будет отображать только соединение TCP:
Параметр что выполнена программа будет отображать только соединение UDP:
nslookup
Если вы знаете IP-адрес он будет отображать как имя хоста. Чтобы найти все IP-адреса для данного доменного имени, команда Nslookup используется. Вы должны быть подключение к Интернету для этой утилиты. Пример использования:
Вы также можете использовать Nslookup преобразовать имя хоста в IP-адрес и с IP-адреса из имени хоста.
finger
Посмотреть информацию о пользователях, отображает имя пользователя логин, настоящее имя, имя терминала и статус записи. это довольно старая команда для Linux и редко используемые в настоящее время.
telnet
Подключается хозяина назначения по протоколу Telnet, если телнет соединение установить на любом порту означает соединения между двумя хостами работает нормально.
Обычно он используется для того чтобы узнать жив ли хост или сетевое соединение в порядке.
Тема «Топ-10 Основных сетевых команд в Linux» завершена, но если я не упомянул о более хороших команд на Ваш взгляд, то пишите в комментарии и я дополню эту статью. Если есть вопросы и предложения, пишите все в комментарии. Спасибо.
One thought on “ Топ-10 Основных сетевых команд в Linux ”
Ну что прикольная статься. Норм короче. Автор красавчик.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Источник