GNS3 – графический симулятор сети, позволяющий спроектировать комплексную топологию сети. Система поддерживает эмуляцию ПК, а также маршрутизаторы Cisco (через использование эмулятора IOS – Dynamips и PIX эмулятора Pemu).
GNS3 позволяет эмулировать Cisco IOS на компьютерах с операционной системой Ubuntu 10.10. Эмуляция возможна для огромного количества платформ роутеров. Все это делает GNS3 отличным средством для подготовки к экзамену CCNA и CCNP. Существует несколько программ симуляторов оборудования cisco, но они включают в себя лишь урезанный список всех возможных команд роутеров cisco (Packet Tracer, Boson NetSim). C GNS3 вы запускаете настоящую Cisco IOS, т.е. вы видите именно то, что IOS представляет из себя, и получаете полный доступ ко всем командам и параметрам, которые поддерживает IOS. GNS3 не заменит реальный роутер, но это хорошее средство для изучения и тестирования оборудования cisco.
Исходная система:
keiz@vkeiz:~$ uname -a && cat /etc/issue
Linux vkeiz 2.6.35-22-generic #33-Ubuntu SMP Sun Sep 19 20:32:27 UTC 2010 x86_64 GNU/Linux
Ubuntu 10.10 \n \l
Обновляем список пакетов:
keiz@vkeiz:~$ sudo apt-get update
Сперва нужно установить gns3 dynamips
ekzorchik@ekv:~$ aptitude search gns3
p gns3 – graphical network simulator
ekzorchik@ekv:~$ aptitude search dynamips
p dynamips – Cisco 7200/3600/3725/3745/2600/1700 Router Emulator
Ищем в интернете и скачиваем образ IOS
См. на торентах.
keiz@vkeiz:~$ mkdir cisco
keiz@vkeiz:~$ cd cisco/
keiz@vkeiz:~/cisco$ ls
c7200-jk9s-mz.124-13b.bin
keiz@vkeiz:~/cisco$ file *.bin
c7200-jk9s-mz.124-13b.bin: ELF 32-bit MSB executable, cisco 7200, version 1 (SYSV), statically linked, stripped
Все параметры Dynamips легко узнать, запустив его с ключом ‘–help’.
keiz@vkeiz:~/cisco$ dynamips –help
Cisco Router Simulation Platform (version 0.2.8-RC2-amd64)
Copyright (c) 2005-2007 Christophe Fillot.
Build date: May 9 2009 18:06:28
Usage: dynamips [options] <ios_image>
Available options:
-H [<ip_address>:]<tcp_port> : Run in hypervisor mode
-P <platform> : Platform to emulate (7200, 3600, 2691, 3725, 3745, 2600 or 1700) (default: 7200)
-l <log_file> : Set logging file (default is dynamips_log.txt)
-j : Disable the JIT compiler, very slow
–exec-area <size> : Set the exec area size (default: 64 Mb)
–idle-pc <pc> : Set the idle PC (default: disabled)
–timer-itv <val> : Timer IRQ interval check (default: 1000)
-i <instance> : Set instance ID
-r <ram_size> : Set the virtual RAM size (default: 256 Mb)
-o <rom_size> : Set the virtual ROM size (default: 4 Mb)
-n <nvram_size> : Set the NVRAM size (default: 128 Kb)
-c <conf_reg> : Set the configuration register (default: 0x2102)
-m <mac_addr> : Set the MAC address of the chassis
(default: automatically generated)
-C <cfg_file> : Import an IOS configuration file into NVRAM
-X : Do not use a file to simulate RAM (faster)
-G <ghost_file> : Use a ghost file to simulate RAM
-g <ghost_file> : Generate a ghost RAM file
–sparse-mem : Use sparse memory
-R <rom_file> : Load an alternate ROM (default: embedded)
-k <clock_div> : Set the clock divisor (default: 4)
-T <port> : Console is on TCP <port>
-U <si_desc> : Console in on serial interface <si_desc>
(default is on the terminal)
-A <port> : AUX is on TCP <port>
-B <si_desc> : AUX is on serial interface <si_desc>
(default is no AUX port)
–disk0 <size> : Set PCMCIA ATA disk0: size (default: 64 Mb)
–disk1 <size> : Set PCMCIA ATA disk1: size (default: 0 Mb)
-t <npe_type> : Select NPE type (default: “npe-200”)
-M <midplane> : Select Midplane (“std” or “vxr”)
-p <pa_desc> : Define a Port Adapter
-s <pa_nio> : Bind a Network IO interface to a Port Adapter
-a <cfg_file> : Virtual ATM switch configuration file
-f <cfg_file> : Virtual Frame-Relay switch configuration file
-E <cfg_file> : Virtual Ethernet switch configuration file
-b <cfg_file> : Virtual bridge configuration file
-e : Show network device list of the host machine
<si_desc> format:
“device{:baudrate{:databits{:parity{:stopbits{:hwflow}}}}}}”
<pa_desc> format:
“slot:sub_slot:pa_driver”
<pa_nio> format:
“slot:port:netio_type{:netio_parameters}”
Available C7200 NPE drivers:
* npe-100
* npe-150
* npe-175
* npe-200
* npe-225
* npe-300
* npe-400
* npe-g1 (NOT WORKING)
* npe-g2 (NOT WORKING)
Available C7200 Port Adapter (PA) drivers:
* C7200-IO-FE
* C7200-IO-2FE (NOT WORKING)
* C7200-IO-GE-E (NOT WORKING)
* PA-FE-TX
* PA-2FE-TX (NOT WORKING)
* PA-GE (NOT WORKING)
* PA-4E
* PA-8E
* PA-4T+
* PA-8T
* PA-A1
* PA-POS-OC3
* PA-4B (NOT WORKING)
* PA-MC-8TE1 (NOT WORKING)
Available NETIO types:
* unix : UNIX local sockets
* vde : Virtual Distributed Ethernet / UML switch
* tap : Linux/FreeBSD TAP device
* udp : UDP sockets
* tcp_cli : TCP client
* tcp_ser : TCP server
* linux_eth : Linux Ethernet device
* gen_eth : Generic Ethernet device (PCAP)
* fifo : FIFO (intra-hypervisor)
* null : Null device
Запустим с7200 с параметрами по умолчанию:
keiz@vkeiz:~/cisco$ dynamips c7200.image
Cisco Router Simulation Platform (version 0.2.8-RC2-amd64)
Copyright (c) 2005-2007 Christophe Fillot.
Build date: May 9 2009 18:06:28
IOS image file: c7200.image
CPU0: carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb.
NVRAM is empty, setting config register to 0x2142
C7200 instance ‘default’ (id 0):
VM Status : 0
RAM size : 256 Mb
IOMEM size : 0 Mb
NVRAM size : 128 Kb
NPE model : npe-200
Midplane : vxr
IOS image : c7200.image
Loading ELF file ‘c7200.image’…
ELF entry point: 0x80008000
C7200 ‘default’: starting simulation (CPU0 PC=0xffffffffbfc00000), JIT enabled.
ROMMON emulation microcode.
Launching IOS image at 0x80008000…
Restricted Rights Legend
Use, duplication, or disclosure by the Government is
subject to restrictions as set forth in subparagraph
(c) of the Commercial Computer Software – Restricted
Rights clause at FAR sec. 52.227-19 and subparagraph
(c) (1) (ii) of the Rights in Technical Data and Computer
Software clause at DFARS sec. 252.227-7013.
cisco Systems, Inc.
170 West Tasman Drive
San Jose, California 95134-1706
Cisco IOS Software, 7200 Software (C7200-JK9S-M), Version 12.4(13b), RELEASE SOFTWARE (fc3)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2007 by Cisco Systems, Inc.
Compiled Wed 25-Apr-07 03:18 by prod_rel_team
Image text-base: 0x60008F10, data-base: 0x628D6000
This product contains cryptographic features and is subject to United
States and local country laws governing import, export, transfer and
use. Delivery of Cisco cryptographic products does not imply
third-party authority to import, export, distribute or use encryption.
Importers, exporters, distributors and users are responsible for
compliance with U.S. and local country laws. By using this product you
agree to comply with applicable laws and regulations. If you are unable
to comply with U.S. and local laws, return this product immediately.
A summary of U.S. laws governing Cisco cryptographic products may be found at:
http://www.cisco.com/wwl/export/crypto/tool/stqrg.html
If you require further assistance please contact us by sending email to
export@cisco.com.
Cisco 7206VXR (NPE200) processor (revision B) with 245760K/16384K bytes of memory.
Processor board ID 4294967295
R5000 CPU at 200MHz, Implementation 35, Rev 1.2
6 slot VXR midplane, Version 2.1
Last reset from power-on
————————————————————–
This Version of Cisco IOS Software is not supported on NPE200.
Please select a version of Cisco IOS software compatible with
this processor from http://www.cisco.com.
Number of Fast PAs = 1
Number of Fast+Medium PAs = 1
Total number of PA bandwidth points consumed = 200
Please refer to the following document “Cisco 7200 Series Port Adaptor
Hardware Configuration Guidelines” on Cisco.com <http://www.cisco.com>
for c7200 bandwidth points oversubscription and usage guidelines.
1 FastEthernet interface
125K bytes of NVRAM.
4096K bytes of packet SRAM memory.
65536K bytes of ATA PCMCIA card at slot 0 (Sector size 512 bytes).
8192K bytes of Flash internal SIMM (Sector size 256K).
далее идет диалог настройки, но в плане настроек Dynamips не очень удобен, чтобы воссоздать на его основе сеть из нескольких маршрутизаторов придется не много повозиться.
Для облегчения нам задачи воспользуемся утилитой Dynagen, который является текстовым фронт-эндом к Dynamips. Используя простой файл описания виртуальной среды, легко можно соединить несколько устройств. Самое главное, что все установки собраны в одном месте, имеют простой синтаксис и легко редактируются:
Создадим файл с настройками:
keiz@vkeiz:~/cisco$ nano virt_router.net
В несем в него следующее содержание
# Описание узла, на котором установлен Dynamips
[localhost]
# Тип роутера
[[7200]]
#Путь к ios-файлу
image = /home/keiz/cisco/c7200-jk9s-mz.124-13b.bin
#Общие параметры, в данном случае платформа и RAM, при необходимости внутри роутера можно указать специфические настройки
npe = npe-400
ram = 160
# Первый роутер
[[Router R1]]
# Указываем подключение, в нашем случае интерфейс Serial1/0 на R1 будет подключен к Serial1/0 R2
s1/0 = R2 s1/0
[[Router R2]]
# Оставляем все по умолчанию
Это простейший пример, чтобы понять суть настроек.
Сначала запускаем dynamips в режиме гипервизора (после отладки можно стартануть в фоне, добавив ‘&’):
keiz@vkeiz:~/cisco$ sudo dynamips -H 7200
[sudo] password for keiz:
Cisco Router Simulation Platform (version 0.2.8-RC2-amd64)
Copyright (c) 2005-2007 Christophe Fillot.
Build date: May 9 2009 18:06:28
Hypervisor TCP control server started (port 7200).
Все хорошо, теперь стартуем в фоне:
keiz@vkeiz:~/cisco$ sudo dynamips -H 7200 &
[2] 1893
keiz@vkeiz:~/cisco$ Cisco Router Simulation Platform (version 0.2.8-RC2-amd64)
Copyright (c) 2005-2007 Christophe Fillot.
Build date: May 9 2009 18:06:28
ILT: loaded table “mips64j” from cache.
ILT: loaded table “mips64e” from cache.
ILT: loaded table “ppc32j” from cache.
ILT: loaded table “ppc32e” from cache.
Hypervisor: unable to create TCP sockets.
Shutdown in progress…
Shutdown completed.
Shutdown in progress…
Shutdown completed.
CPU0: carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb.
NVRAM is empty, setting config register to 0x2142
C7200 instance ‘R1’ (id 0):
VM Status : 0
RAM size : 160 Mb
IOMEM size : 0 Mb
NVRAM size : 128 Kb
NPE model : npe-400
Midplane : vxr
IOS image : /home/keiz/cisco/c7200-jk9s-mz.124-13b.bin
Loading ELF file ‘/home/keiz/cisco/c7200-jk9s-mz.124-13b.bin’…
ELF entry point: 0x80008000
C7200 ‘R1’: starting simulation (CPU0 PC=0xffffffffbfc00000), JIT enabled.
CPU0: carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb.
NVRAM is empty, setting config register to 0x2142
C7200 instance ‘R2’ (id 1):
VM Status : 0
RAM size : 160 Mb
IOMEM size : 0 Mb
NVRAM size : 128 Kb
NPE model : npe-400
Midplane : vxr
IOS image : /home/keiz/cisco/c7200-jk9s-mz.124-13b.bin
Loading ELF file ‘/home/keiz/cisco/c7200-jk9s-mz.124-13b.bin’…
ELF entry point: 0x80008000
C7200 ‘R2’: starting simulation (CPU0 PC=0xffffffffbfc00000), JIT enabled.
Теперь Dynagen:
keiz@vkeiz:~/cisco$ sudo aptitude install dynagen
keiz@vkeiz:~/cisco$ dynagen virt_router
Reading configuration file…
*** Warning: Starting R1 with no idle-pc value
*** Warning: Starting R2 with no idle-pc value
Network successfully loaded
Dynagen management console for Dynamips and Pemuwrapper 0.11.0
Copyright (c) 2005-2007 Greg Anuzelli, contributions Pavel Skovajsa
=> <мы_в_консоли_управления_нашим_cisco_устройством>
После загрузки образов (процесс будет выводиться в консоли, где запущен dynamips) и настроек виртуальных роутеров получим приглашение консоли управления. Введя знак вопроса или help, получим справку по командам. Набрав “help команда“, узнаем обо всех параметрах конкретной команды. Поддерживается автодополнение ввода при помощи клавиши <Tab>. Для остановки, запуска, перезапуска, приостановки и продолжения применяем команды start, stop, reload, suspend, resume с указанием имени роутера или ключа /all для всех устройств:
=> reload R1
Все команды регистрозависимы, поэтому нужно быть внимательнее.
Просмотрим список работающих маршрутизаторов:
=> list
Name Type State Server Console
R1 7200 running localhost:7200 2000
R2 7200 running localhost:7200 2001
=>
Подключимся к нашей виртуальной cisco с использованием утилиты telnet:
keiz@ekz:~$ telnet 192.168.1.37 2000
Trying 192.168.1.37...
Connected to 192.168.1.37.
Escape character is '^]'.
Connected to Dynamips VM "R1" (ID 0, type c7200) - Console port
Можем подключиться к порту, указанному в поле Console.
Хотя проще подключиться, указав имя устройства в строке приглашения Dynagen:
=> telnet R1
В отдельном окне откроется окно терминала, в котором уже управляем настройками.
Несколько виртуальных маршрутизаторов могут нехило загрузить систему. Причем вне зависимости от реально выполняющейся работы. Это происходит потому, что Dynamips не знает, когда роутер выполняет полезную работу, а когда находится в режиме ожидания.
Команда idlepc позволяет проанализировать IOS-образы в действии и определить циклы простоя. При первом запуске значение не установлено:
*** Warning: Starting R1 with no idle-pc value
Нужное имя устройства idle-pc можно получить, введя в консоли dynagen команду “idlepc get имя_роутера“:
=> idlepc get R1
Будет выдано несколько значений, наиболее оптимальные отмечены знаком “*”. Далее выполнение команды остановится, и потребуется ввести одну из цифр, соответствующих выбранному idlepc. После этого его значение будет добавлено к выполняющемуся процессу. При запуске Dynamips вручную значение idlepc указывается при помощи параметра ‘--idle-pc=
‘, как вариант, в секции роутера конфига Dynagen дописываем:
idlepc = 0x6076a394
Но лучше просто сохранить значение, чтобы оно считывалось при последующих загрузках:
=> idlepc save R1 db
Повторно просмотреть весь список idlepc просто:
=> idlepc show R1
На этом ознакомительная часть закончено. Все, маршрутизатор можно настраивать.
Здравствуйте! Спасибо за очень информативную статью. Подскажите пожалуйста, каким образом я могу соединить эмулируемый роутер и виртуальную машину Qemu? Хотел бы увидеть пример с использованием udp сокетов на конкретном порту роутера. Спасибо!
Добрый день! Я не могу Вам подсказать, я с таким не работал.