Visualizing network topologies with Golang

This day is inspired by the article “Визуализация сетевых топологий, или зачем еще сетевому инженеру Python #2”. I wrote Golang program that analyzes the output of the cisco sh int, sh mac-address-table (for switches) or sh ip arp (for routers) commands and vizualizes network topology from mac address tables. I only used mac address information, not LLDP (CDP). NeXt Ui (Github) is used for visualization. For example, I received an output with self-made telnet client on Golang from a network of this topology: ...

<span title='2020-08-23 00:00:00 +0000 UTC'>August 23, 2020</span>

Начальное конфигурирование роутера Cisco

Если осталась старая конфигурация, удалить и перезапустить Cisco>enable Cisco#erase startup-config Cisco#reload Cisco>enable Новая конфигурация Cisco#configure terminal Назвать роутер Cisco(config)#hostname R1 Хранить пароли в файле конфигурации в зашифрованном виде R1(config)#service password-encryption Отключить управление по http, https, CDP R1(config)#no ip http server R1(config)#no ip http secure-server R1(config)#no cdp run Отключить интерпретацию неправильно введенных команд как DNS-запрос R1(config)#no ip domain lookup Пароль на подключение по консольному порту R1(config)#line console 0 R1(config-line)#password cisco R1(config-line)#login local R1(config-line)#exit ...

<span title='2020-04-09 00:00:00 +0000 UTC'>April 9, 2020</span>

Логгирование команд на Cisco с помощью Event Manager

Настроить Event Manager для логгирования всех выполненных на роутере команд: event manager applet CLIaccounting event cli pattern ".*" sync no skip no action 1.0 syslog priority informational msg "$_cli_msg" set 2.0 _exit_status 1 Включить логгирование: archive log config logging enable logging size 1000 notify syslog hidekeys По умолчанию logging size 100 если этого достаточно, команду можно не вводить. Посмотреть лог: show archive log config all Все выполненные команды будут дублироваться на консоль. Если это не надо, отключить вывод: no logging console Включить: logging console ...

<span title='2020-04-05 00:00:00 +0000 UTC'>April 5, 2020</span>

Подключение к устаревшим Cisco по SSH

Если при попытке подключиться выдает что-то похожее на “no matching key exchange method found”: На Cisco (ip 192.168.2.2): длина ключа RSA должна быть больше 1024 создаем учетную запись пользователя (здесь - cisco) В linux: создаем ~/.ssh/config Host 192.168.2.2 KexAlgorithms +diffie-hellman-group1-sha1 Ciphers aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc Алгоритмы могут быть другие, подходящие будут указаны в сообщении об ошибке. проверяем ssh 192.168.2.2 -l cisco При ошибке ‘connection refused’ помогает создание нового ключа: crypto key generate rsa general-keys modulus 1024 В linux удаляю запись о старом ключе ssh-keygen -f ~/.ssh/known_hosts -R "192.168.2.2" и пробую поключиться ...

<span title='2020-04-04 00:00:00 +0000 UTC'>April 4, 2020</span>

Управление роутером в GNS3 с Ansible в Windows

В Windows запущен GNS3 с роутером, доступным по telnet (ip 192.168.2.2), установлена Ubuntu в WSL. Как управлять роутером через Ansible? Ставим Ansible sudo apt install ansible Создаем файлы в домашнем каталоге myhosts [cisco-routers] 192.168.2.2 ansible.cfg [defaults] inventory = ./myhosts gathering = explicit telnet_command_show_ver.yml (логин без ввода имени пользователя) --- - name: Run show command on routers hosts: cisco-routers tasks: - name: run show commands telnet: login_prompt: "Password: " password: cisco prompts: - "[>#]" command: - terminal length 0 - show version Выполняем ansible-playbook telnet_command_show_ver.yml ...

<span title='2020-04-03 00:00:00 +0000 UTC'>April 3, 2020</span>