Средства сетевой диагностики (tcpdump, ip route, tshark, iperf, ifconfig, ip addr, ip rule, arping, arp, ping, telnet, netstat, ethtool). Нет интернета. Пропал Интернет

Версия 1 amamaev
на апр 05, 2011 12:52.

по сравнению с
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (11)

просмотр истории страницы
Для работы с программой tcpdump необходимы права пользователя root.
h3. Для работы с программы необходимы права пользователя root, поэтому нужно включить режим [помощника|Пользователь root. Режим удаленного помощника. Постоянный удаленный помощник]:

Для примеров примем следующие значения:
* локальный интерфейс Leth0 ip 10.0.0.1/24
Для диагностики работы системы рекомендуем использовать следующие программы:

*1. ping* \- доступность адреса в сети

*2. traceroute \-I <интерфейс> <узел>*&nbsp;\- трассировка до узла

*3.&nbsp;ifconfig (утилита является устаревшей, рекомендуем использовать ip addr)* \- сетевые настройки

*4.&nbsp;ip addr* \- сетевые настройки

*5.&nbsp;ip route* \- маршрутизация

*6.&nbsp;ip rule* \- правила таблиц маршрутизации

*7.&nbsp;arp* \- просмотр таблицы arp записей

*8.&nbsp;arping* \- аналог команды пинг на уровне 2

*9. telnet* \- соединение с адресом по произвольному порту

*10.&nbsp;tcpdump* \- перехват и анализ сетевого трафика

*11.&nbsp;tshark* \- перехват и анализ сетевого трафика

*12 iptables* \- настройки firewall

*13. render.sh&nbsp;*\- построение дерева шейперов

*14. iperf* \- проверка ширины канала

*15. ethtool*&nbsp;\- информация по режиму работы сетевого адаптера

h2. Примеры:


h3. Стандартные

ping
{code}ping <ip>{code}

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

Для сети 100мб должно быть не более 1% потерь пакетов
{code}ping -f -l 30 <ip>{code}

Для сети 1000мб должно быть не более 2-3% потерь пакетов
{code}ping -f -l 300 <ip>{code}

p.s. При этом если пингуется аппаратный маршрутизатор, данные могут сильно зависеть от его загруженности и проверять лучше связь до ПК расположенного за маршрутизатором.

Проверка наличия ip-адреса(абонента) в сети (широковещательном сегменте)
{code}
arp -n | grep ip_адрес
{code}

Проверка подмены адреса
{code}arping -D -I <название локального интерфейса> <ip>{code}

Если будет получен ответ - значит в сети произошла подмена адреса сервера. Необходимо искать виновника.

Также подмену можно обнаружить с тестового ПК:
{code}ping <ip>
arp{code}
Будет выведена arp-таблица. Необходимо сравнить mac-адрес в этой таблице с адресом сетевой карты (локальной) сервера Carbon Billing.

Соединение с адресом <ip> и портом <port>
{code}telnet <ip> <port>{code}

6) Проведите диагностику системы;

{code}/usr/local/ics/bin/test_full{code}

h3. traceroute

В случае если при вводе команды traceroute вы получаете что то вроде
{code}
[root@server root]# traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 38 byte packets
traceroute: sendto: Operation not permitted
{code}
Нужно настроить [файервол|asrdocnew:Добавление своих правил iptables. Разрешить все одному адресу. Доступ при отрицательном балансе]

h3. netstat

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

*Пример 1.*

Задача - проверить какая служба/демон "слушает" на порту 1443 и слушают ли вообще

{code}netstat -antp | grep 1443{code}
Данная команда выведет информацию какая служба/демон "слушает" на порту 1443. Если не будет никакого вывода, значит данный порт никто не "слушает"

h3. tcpdump

Для примеров примем следующие значения:\* локальный интерфейс Leth0 ip 10.0.0.1/24
* внешний интерфейс Eeth1 1.1.1.1/30 шлюз 1.1.1.2
* подсеть серых адресов абонентов 10.0.0.0/24 шлюз 10.0.0.1 dns 10.0.0.1
* тестовый абонент 10.0.0.101 и его мак-адрес 01:23:45:67:89:0a

*Пример 1.*

Просмотреть icmp (ping) пакеты на локальный интерфейс ideco:
Задача - просмотреть icmp (ping) пакеты на локальный интерфейс Carbon Billing.

{code}tcpdump -i Leth0 -nn proto ICMP{code}

{code}tcpdump -i Leth0 -nn proto ICMP and host 10.0.0.1{code}
Выдает информацию о ICMP пакетах, приходящих (и исходящих) на локальный IP адрес.

{code}tcpdump -i Leth0 -nn proto ICMP and net 10.0.0.0/24{code}
Выдает информацию о ICMP пакетах, приходящих (и исходящих) из локальной сети.

{code}tcpdump -i Leth0 -nn proto ICMP and not host 10.0.0.1{code}

{code}tcpdump -i Leth0 -nn tcp[13] == 2 and src net 10.0.0.0/24{code}
Выдаст все SYN пакеты, где ip источника будет ip -адрес локальной сети.

*Пример 3.*
Нам необходимо проверить, что от пользователя приходят запросы к DNS серверу.

{code}tcpdump -i Leth0 -nn port 53 and host 10.0.0.101{code}
Команда выдает все dns запросы и ответы для заданного адреса.

*Пример 4.*
Анализ ARP пакетов в локальной сети.

{code}tcpdump arp -i Leth0 -nn{code}
Команда выдает все ARP пакеты на интерфейсе.

{code}tcpdump arp -i Leth0 -nn -e | grep 01:23:45:67:89:0a{code}
Команда выдает все arp запросы тестового абонента с заданным MAC-адресом.

*Пример 5.*


Проверить работу dhcp relay

{code}
tcpdump -nv -i Leth1 'udp and port 67 and port 68'
{code}
*Пример 6.*

Проверить работу PPPoE, нет ли посторонних PPPoE-серверов в сети


{code}
tcpdump -e -i Leth1 -nv 'ether proto 0x8863 or ether proto 0x8864'
{code}
*Пример 7.*
Посмотреть входящие/исходящие пакеты на порту 1443

{code}
tcpdump -nvi any port 1443
{code}
Зная определенный хост, например отправителя 1.1.1.1

{code}
tcpdump -nvi any port 1443 and host 1.1.1.1
{code}


----
Для более детального анализа различных сетевых протоколов есть очень удобная утилита Wireshark. Программа бесплатна и может быть установлена как на ОС Windows, так и на ОС Linux. Чтобы провести анализ сетевого трафика с помощью этой программы, нужно сделать на сервере дамп трафика за интересующий интервал времени и с нужными фильтрами:
{code}tcpdump arp -i Leth0 -nn -s 0 -w /mnt/rw_disc/Leth0_dump{code}
Пакеты, проходящие через локальный интерфейс, целиком запишутся в файл mnt/rw_disc/Leth0_dump. После этого нужно скачать этот файл на локальную машину и с помощью программы Wireshark провести детальный анализ.

*Пример 8.* Получить от днс сервера запись
{code}
Linux:


dig vk.com @8.8.8.8

или

host yandex.ru 8.8.8.8

windows:

nslookup mail.ru 8.8.8.8
{code}


*Пример 9.* Найти кто-шлет broadcast в сети:

Команда выведет пакеты с указанием мак-адресов посылающих широковещательные запросы.
{code}
tcpdump -nveei <interface> host 255.255.255.255
{code}

h3. Ethtool

*Пример 1.* Общая информация по сетевому контроллеру

{code}
[root@www-example-com root]# ethtool Leth1
Settings for Leth1:
Supported ports: [ TP ]
Supported link modes:   10baseT/Half 10baseT/Full 
                       100baseT/Half 100baseT/Full 
                       1000baseT/Full 
Supports auto-negotiation: Yes
Advertised link modes:  10baseT/Half 10baseT/Full 
                       100baseT/Half 100baseT/Full 
                       1000baseT/Full 
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: umbg
Wake-on: g
Current message level: 0x00000007 (7)
Link detected: yes

{code}

*Пример 2.&nbsp;*{color:#494949}Для отладки различных ситуаций с проблемами rx/tx нужна подробная статистика, она выводится с помощью следующей команды:{color}
{code}
[root@www-example-com root]$ ethtool -S Leth1
NIC statistics:
rx_packets: 9244765078
tx_packets: 12132738524
rx_bytes: 2844075321346
tx_bytes: 12330719323485
rx_broadcast: 3982759
tx_broadcast: 487538
rx_multicast: 2972
tx_multicast: 0
rx_errors: 18
tx_errors: 0
tx_dropped: 0
multicast: 2972
collisions: 0
rx_length_errors: 0
rx_over_errors: 0
rx_crc_errors: 9
rx_frame_errors: 0
rx_no_buffer_count: 3
rx_missed_errors: 2475
tx_aborted_errors: 0
tx_carrier_errors: 0
tx_fifo_errors: 0
tx_heartbeat_errors: 0
tx_window_errors: 0
tx_abort_late_coll: 0
tx_deferred_ok: 0
tx_single_coll_ok: 0
tx_multi_coll_ok: 0
tx_timeout_count: 0
tx_restart_queue: 409
rx_long_length_errors: 0
rx_short_length_errors: 0
rx_align_errors: 0
tx_tcp_seg_good: 0
tx_tcp_seg_failed: 0
rx_flow_control_xon: 0
rx_flow_control_xoff: 0
tx_flow_control_xon: 0
tx_flow_control_xoff: 0
rx_long_byte_count: 2844075321346
rx_csum_offload_good: 8824741871
rx_csum_offload_errors: 17871
alloc_rx_buff_failed: 0
tx_smbus: 0
rx_smbus: 0
dropped_smbus: 0
{code}

h3. iperf

*Пример 1.*
Чтобы проверить ширину канала утилитой, с одной стороны запускаем ее в режиме сервера:
{code}
iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
{code}

На второй машине в режиме клиента с указанием адреса ПК, на котором включен режим сервера.

{code}
iperf -c 192.168.1.1
------------------------------------------------------------
Client connecting to 192.168.1.1, TCP port 5001
TCP window size: 49.7 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.2 port 54593 connected with 192.168.1.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 95.31 GBytes 96.28 Gbits/sec
{code}
Аналогичный вывод будет на стороне сервера.