При диагностике проблем бывает необходимо записать дамп пакетов на одном или нескольких интерфейсах маршрутизатора для последующего анализа в wireshark.
Средствами CLI маршрутизатора ESR этого сделать невозможно. Но можно сделать в linux-shell. Для этого необходимо:
1. Задать учетную запись в режиме techsupport
configure username <name> mode techsupport privilege 15 password <Пароль пользователя> exit commit confirm |
2. Подключиться к маршрутизатору esr по ssh с использованием логина techsupport и ранее заданного пароля.
3. При помощи команды "ip a" определить системное наименование интерфейсов, на которых необходимо захватывать пакеты
techsupport@esr:~$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether b6:c0:48:6f:0e:6d brd ff:ff:ff:ff:ff:ff 3: eth0: <BROADCAST,MULTICAST> mtu 1518 qdisc noop state DOWN group default qlen 1000 link/ether a8:f9:4b:ab:62:68 brd ff:ff:ff:ff:ff:ff 4: eth1: <BROADCAST,MULTICAST> mtu 1514 qdisc noop state DOWN group default qlen 1000 link/ether a8:f9:4b:ab:62:68 brd ff:ff:ff:ff:ff:ff 5: eth2: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1514 qdisc pfifo_fast state UP group default q0 link/ether a8:f9:4b:ab:62:68 brd ff:ff:ff:ff:ff:ff 6: eth3: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1514 qdisc pfifo_fast state UP group default q0 link/ether a8:f9:4b:ab:62:68 brd ff:ff:ff:ff:ff:ff 7: gi1_1@eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue switchid 00000000 state LOW0 link/ether a8:f9:4b:ab:62:69 brd ff:ff:ff:ff:ff:ff inet 192.168.115.8/20 brd 192.168.127.255 scope global gi1_1 valid_lft forever preferred_lft forever 8: gi1_2@eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue switchid 00000000 state LOW0 link/ether a8:f9:4b:ab:62:6a brd ff:ff:ff:ff:ff:ff 9: gi1_3@eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue switchid 00000000 state LOW0 link/ether a8:f9:4b:ab:62:6b brd ff:ff:ff:ff:ff:ff 10: gi1_4@eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue switchid 00000000 state LO0 link/ether a8:f9:4b:ab:62:6c brd ff:ff:ff:ff:ff:ff 11: gi1_5@eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue switchid 00000000 state LO0 link/ether a8:f9:4b:ab:62:6d brd ff:ff:ff:ff:ff:ff 12: gi1_6@eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue switchid 00000000 state LO0 link/ether a8:f9:4b:ab:62:6e brd ff:ff:ff:ff:ff:ff 13: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1 link/ipip 0.0.0.0 brd 0.0.0.0 14: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN group default qlen 1 link/gre 0.0.0.0 brd 0.0.0.0 15: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN group default qlen 1000 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff 16: ip_vti0@NONE: <NOARP> mtu 1364 qdisc noop state DOWN group default qlen 1 link/ipip 0.0.0.0 brd 0.0.0.0 17: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1 link/sit 0.0.0.0 brd 0.0.0.0 18: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1 link/tunnel6 :: brd :: 19: ip6gre0@NONE: <NOARP> mtu 1448 qdisc noop state DOWN group default qlen 1 link/gre6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:000 20: gi1_2.64@gi1_2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN g0 link/ether a8:f9:4b:ab:62:6a brd ff:ff:ff:ff:ff:ff inet 172.16.16.1/30 brd 172.16.16.3 scope global gi1_2.64 valid_lft forever preferred_lft forever 21: vlan: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 100 link/ether 5e:2c:79:05:e5:a4 brd ff:ff:ff:ff:ff:ff 22: dvlan: <BROADCAST,NOARP> mtu 1500 qdisc noop master vlan state DOWN group default qlen 1000 link/ether 5e:2c:79:05:e5:a4 brd ff:ff:ff:ff:ff:ff 23: vlan.1@vlan: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN grou0 link/ether 5e:2c:79:05:e5:a4 brd ff:ff:ff:ff:ff:ff techsupport@esr:~$ |
Для физических интерфейсов, системное имя интерфейса выглядит как gi1_<номер интерфейса>
4. Запустить захват пакетов на необходимых интерфейсах в файл:
techsupport@esr:~$ sudo tcpdump -i <системное имя интерфейса1> <ключи для фильтрации пакетов1> -w /tmp/<имя файла для дампа1> -C 1M & techsupport@esr:~$ sudo tcpdump -i <системное имя интерфейса2> <ключи для фильтрации пакетов2> -w /tmp/<имя файла для дампа2> -C 1M & |
Если/когда система потребует ввода пароля - необходимо ввести пароль пользователя techsupport
Дамп можно записывать как на одном так и на нескольких интерфейсах. Всё зависит от текущей проблемы и необходимости.
Нельзя пренебрегать ключами для фильтрации пакетов т.к. размер файла может оказаться слишком большим и он займет всю память маршрутизатора.
Ключ -C 1M ограничивает размер файла дампа в 1 Мегабайт. Можно использовать другое ограничение или не использовать его вовсе, но следить, чтобы файлы не заняли много места в памяти маршрутизатора
5. Сгенерировать необходимые пакеты или дождаться проявления той или иной проблемы
Это может быть попытка регистрации телефона на SBC или SoftSwitch, совершение телефонного звонка, или пакеты любого другого протокола маршрутизируемые или обрабатываемые маршрутизатором ESR.
6. Остановить захват пакетов в techsupport-ssh-сессии
techsupport@esr:~$ sudo pkill tcpdump |
7. Скопировать с маршрутизатора собранные дампы.
7. ver1. по протоколу scp
Для ли linux можно использовать команды:
scp techsupport@<ip-маршрутизатора>:/tmp/<имя файла> /home/<путь для копирования> |
Для windows - можно использовать scp-клиент отдельный или интегрированный в другие приложения.
7. ver2. по протоколу tftp
При наличии в сети tftp-сервера, можно с маршрутизатора загрузить на него полученные дампы при помощи команды:
techsupport@esr:~$ tftp <ip-адрес tftp-сервера> -pl /tmp/<имя файла> -r <имя файла> |
8. Удалить файлы дампов с маршрутизатора
techsupport@esr:~$ sudo rm /tmp/<имя файла для дампа1> techsupport@esr:~$ sudo rm /tmp/<имя файла для дампа2> |
Скопировав в п. 7 файлы можно более удобно обрабатывать на ПК при помощи утилиты wireshark.
Для просмотра интерфейсов с помощью команды "ip a", а также для снятия дампа трафика с интерфейса, который находится в другом vrf/GRT необходимо использовать конструкцию "ip netns exec <имя vrf/1>"
1) При использовании команды "ip a" будут отображены только те ip-интерфейсы, которые находятся в том же vrf что и интерфейс, через которой произведено подключение по ssh/telnet.
2) Для просмотра ip-интерфейсов, которые находятся в другом vrf, необходимо использовать команду:
test@esr:~$ sudo ip netns exec <имя требуемого vrf> ip a |
Снятие дампа трафика с ip-интерфейса, который находится в другом vrf, производится командой:
test@esr:~$ sudo ip netns exec <имя требуемого vrf> tcpdump -i <системное имя интерфейса> <ключи для фильтрации пакетов> -w /tmp/<имя файла для дампа> -C 1M |
3) Для просмотра ip-интерфейсов, которые находятся в GRT, необходимо использовать команду:
test@esr:~$ sudo ip netns exec 1 ip a |
Снятие дампа трафика с ip-интерфейса, который находится в GRT, производится командой:
test@esr:~$ sudo ip netns exec 1 tcpdump -i <системное имя интерфейса> <ключи для фильтрации пакетов> -w /tmp/<имя файла для дампа> -C 1M |
Остановка захвата трафика производится аналогичной командой (в случае необходимости), приведенной в пункте 6. Использование конструкции "ip netns exec <имя vrf/1>" не требуется.