Аналог tracert для linux

тестирования сети в Линукс

Эта заметка выросла из шпаргалки для самого себя. Мне по работе приходится отлавливать баги в сети. Как проверить скорость в VPN-туннеле? Почему сервер не пингуется? Или пингуется, но не доступен. Кто забил весь канал торрентами? Где пропадают пакеты? Почтовый клиент выдает непонятную ошибку, что произошло на самом деле? Эти и многие другие вопросы периодически возникают у любого пользователя. Под катом описание программ входящих во все современные дистрибутивы, начиная от пинга и до таких экзотических как ngrep. А так же картинками, если картинками можно назвать, копии дампа с консоли.

ping

rt94:~# 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

rt94:~#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 сетей, выделенных одному оператору.

Читайте также:  Virtualbox guest additions iso linux

mtr

image

rt94:~#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

Несмотря на всю мощь иногда возможностей tcpdump не хватает, например посмотреть, что происходит внутри пакетов, особенно это актуально для текстовых протоколов, таких как smtp, imap, SIP и тд. Тут на помощь приходит ngrep.
Например, чтобы отловить пакеты идущие с/или на порт 5060, в которых присутствует слово NOTIFY
rt94:~#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.

Читайте также:  Команда linux просмотр сетевых интерфейсов

Ключ -W byline форматирует вывод по знакам переноса строки внутри пакета. Это очень удобно для почтовых протоколов или SIP, как в примере. Строка фильтра пакетов формируется так же, как и в tcpdump. Если не указывать какую подстроку ищем, то ngrep будет дампить все подходящие по условую пакеты. Если внутри пакета нет текстовой информации, тогда он обозначается решеткой (#)

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

rt94:~# 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

image

Как посмотреть кто или что забивает канал?
Для этого есть утилита iptraf c интерфейсом основанным на ncurses. При запуске без параметров выводит меню.
Для того, чтобы посмотреть суммарную статистику по интерфейсу
iptraf -d eth0

image

Для статистики по соединениям
iptraf -i eth0

Например у вас есть VPN туннель. Как проверить его ширину? Самый простой способ это утилита iperf. На одном хосте запускаем ее с ключем -s это будет сервер, который повиснет по умолчанию на порт 5001. С другой стороны запускаем с единственным параметром — адресом нашего сервера.

image

mii-tool

rt94:~# mii-tool eth0
eth0: negotiated 100baseTx-FD flow-control, link ok

Утилитка из пакета net-tools. Показывает скорость физлинка. При ее помощи можно выловить проблему, когда две сетевые карточки не могут автоматически договориться о скорости и в результате будет что-то типа 10 мбит полудуплекс. Редкая проблема, но до сих пор встречается.

За рамками обзора остались nmap и hping. Жду в камментах ссылки на другие полезные программы. Может имеет смысл перенести в какой-нибудь подходящий блог?

Источник

Проверка доступности сайта из Linux

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

Ping

Это самый простой вариант:

$ ping pctuner.club PING pctuner.club (31.184.252.207) 56(84) bytes of data. 64 bytes from d1mon.com (31.184.252.207): icmp_seq=1 ttl=55 time=36.1 ms 64 bytes from d1mon.com (31.184.252.207): icmp_seq=2 ttl=55 time=37.3 ms 64 bytes from d1mon.com (31.184.252.207): icmp_seq=3 ttl=55 time=36.9 ms 64 bytes from d1mon.com (31.184.252.207): icmp_seq=4 ttl=55 time=36.2 ms ^C --- pctuner.club ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 36.136/36.670/37.333/0.509 ms

Показывает не только доступность сайта, но и собирает статистику, насколько связь с сайтом качественная. Статистика собирается до тех пор, пока вы сами это не остановите, «Ctrl+C».

Читайте также:  Linux command for file version

Traceroute

Если ответы от сайта приходят с заметной задержкой или иногда не приходят вовсе, то бывает полезно посмотреть весь маршрут. Утилита traceroute — аналог tracert в Windows.

$ traceroute pctuner.club traceroute to pctuner.club (31.184.252.207), 30 hops max, 60 byte packets 1 192.168.254.1 (192.168.254.1) 5.119 ms 7.653 ms 8.916 ms 2 192.168.249.1 (192.168.249.1) 7.302 ms 8.334 ms 10.421 ms 3 212.46.230.25 (212.46.230.25) 11.045 ms 12.726 ms 12.731 ms 4 pe26.Moscow.gldn.net (79.104.225.59) 28.446 ms pe26.Moscow.gldn.net (79.104.225.57) 29.417 ms 30.821 ms 5 mx.vicigroup.ru (194.186.124.146) 35.698 ms 35.692 ms 35.666 ms 6 80-64-100-81.rascom.as20764.net (80.64.100.81) 39.825 ms 80-64-100-97.rascom.as20764.net (80.64.100.97) 36.661 ms 80-64-100-82.rascom.as20764.net (80.64.100.82) 32.558 ms 7 81-27-252-147.rascom.as20764.net (81.27.252.147) 35.306 ms 46.628 ms 37.286 ms 8 188.93.17.137 (188.93.17.137) 36.900 ms 34.609 ms 33.725 ms 9 d1mon.com (31.184.252.207) 42.136 ms 34.529 ms 34.517 ms

Установка в Ubuntu/Debian, если утилиты еще нет в системе:

sudo apt install inetutils-traceroute

cURL

Позволяет не только проверить доступность, но и получить код состояния:

$ curl -Is https://pctuner.club | head -n 1 HTTP/2 200
$ curl -Is http://pctuner.club | head -n 1 HTTP/1.1 301 Moved Permanently

Аналогично на сайте можно проверить доступность страницы или файла:

$ curl -Is https://pctuner.club/robots.txt | head -n 1 HTTP/2 200

Источник

Сетевые команды

Примечание: Обратите внимение, что это не официальная документация, а попытка начинающего админа объяснить материал начинающим админам.

При миграции с Windows на Linux первое время непривычно пользоваться системой из-за отличающихся сетевых команд. На данной странице будет список аналогов Win-Lin команд.

Команда Win Команда Lin Назначение Пакет Использование в Linux
ping ping Проверка доступности сети и ее качества iputils ping ya.ru
ping 8.8.8.8
tracert tracepath Определение маршрута сетевых пакетов iputils tracepath ya.ru
tracepath 8.8.8.8
traceroute traceroute traceroute ya.ru
traceroute 8.8.8.8
arp -a arp Просмотр ARP-таблицы net-tools arp
arp -a
ipconfig ifconfig Просмотр IP-адресов сетевых карт net-tools ifconfig
ip iproute2 ip a
nslookup nslookup Просмотр IP-адреса по доменному имени bind-utils nslookup ya.ru
host host ya.ru
echo %COMPUTERNAME% hostname Просмотр сетевого имени компьютера coreutils hostname
netstat netstat Просмотр активных сетевых соединений net-tools netstat -a
whois Получение информации об IP-адресе и домене whois whois ya.ru
route print route Просмотр таблицы маршрутизации net-tools route -n
ip iproute2 ip route show
ip r
ip neighbour

Источник

Оцените статью
Adblock
detector