Для начинающих сетевых инженеров возможность смоделировать роутер Cisco и опробывать его на поле творчества являеся одним из движущих факторов практичного обучения.
Наткнувшись на статью, о существовании пакета IOS on UNIX, ожидал когда же автор опишет построение топологии сети. Но терпение не бесконечно, и я заглянул на сайт оригинальных публикаций — evilrouters.net.
Как запустить эмулятор (i86bi_linux-adventerprisek9-ms) описано в вышеупомянутых источниках.
Мы же рассмотрим построение топологии.
Для построения топологии сети используется файл NETMAP располагающийся в директории с запускаемым файлом эмулятора (i86bi_linux-adventerprisek9-ms). Рассмотрим общий случай моделирования трех маршрутизаторов, соединенных в некоторую логическую сеть:
![image](https://habrastorage.org/r/w1560/storage/habraeffect/3e/dd/3eddded9bd5565def645709d15f49b53.png)
таким образом структура файла NETMAP будет иметь следующий вид:
— где 10 (11, 12) это ID маршрутизатора в логической топологии и к имени хоста неимеет никагого отношения.
Теперь рассмотрим самое интересное, подключение одного маршрутизатора к физическим интерфейсам.
Для запуска эмулятора (i86bi_linux-adventerprisek9-ms) использовался компьютер с двумя сетевыми адаптерами и установленной OC Unbuntu, а для подключения к физическим адаптерам использовался perl-скрипт из следующей статьи.
В папке с эмулятором создаем файл:
и копируем в него содержимое статьи после слова Scritp
меняем права на запуск
скрипт требует следующих пакетов
если модули перла не установлены то устанавливаем используя CPAN
для запуска скрипта на Ubuntu потребовалось добавить ссылку
После всех приготовлений запускаем скрипт следующей командой:
— после ключа i указывается сетевой адаптер на который будет подцеплен порт маршрутизатора, ID которого в свою очередь должен быть указан в файле NETMAP;
— после ключа p указывается псевдо-ID маршрутизатора (фактически это виртуальный ID сетевой карты).
Чтобы подвязать к нескольким сетевым адаптерам, необходимо несколько раз запустить скрипт, пример:
$ cat NETMAP
10:1/0@hostname 20:0/0@hostname
10:1/1@hostname 21:0/0@hostname
[...]
$ sudo ./iou2net.pl -i eth0 -p 20 &
[...]
$ sudo ./iou2net.pl -i eth1 -p 21 &
[...]
— маршрутизатор с ID 10 с портом 1/0 подключен к псевдо-маршрутизатору с ID 20, который фактически через скрипт, является сетевым адаптером eth0, второй порт 1/1 подключен к псевдо ID 21 — к сетевой карте eth1.
— hostname — имя хоста на котором запускается эмулятор.
Для тестов на виртуальном роутере был настроен статический NAT, а на машине за натом был запущен торрент клиен со скоростью скачивания 6Мбит/с и одновременно было инициализированно скачивание большого объема мелких файлов находящихся за натом по протоколу SMB. Нагрузка на процессор виртуального роутера составляла не более 60%, а физический процессор был нагружен всего на 30%.
Наткнувшись на статью, о существовании пакета IOS on UNIX, ожидал когда же автор опишет построение топологии сети. Но терпение не бесконечно, и я заглянул на сайт оригинальных публикаций — evilrouters.net.
Как запустить эмулятор (i86bi_linux-adventerprisek9-ms) описано в вышеупомянутых источниках.
Мы же рассмотрим построение топологии.
Для построения топологии сети используется файл NETMAP располагающийся в директории с запускаемым файлом эмулятора (i86bi_linux-adventerprisek9-ms). Рассмотрим общий случай моделирования трех маршрутизаторов, соединенных в некоторую логическую сеть:
![image](https://habrastorage.org/storage/habraeffect/3e/dd/3eddded9bd5565def645709d15f49b53.png)
таким образом структура файла NETMAP будет иметь следующий вид:
10:1/1 11:1/0
10:1/2 12:1/0
— где 10 (11, 12) это ID маршрутизатора в логической топологии и к имени хоста неимеет никагого отношения.
Теперь рассмотрим самое интересное, подключение одного маршрутизатора к физическим интерфейсам.
Для запуска эмулятора (i86bi_linux-adventerprisek9-ms) использовался компьютер с двумя сетевыми адаптерами и установленной OC Unbuntu, а для подключения к физическим адаптерам использовался perl-скрипт из следующей статьи.
В папке с эмулятором создаем файл:
touch iou2net.pl
и копируем в него содержимое статьи после слова Scritp
меняем права на запуск
chmod +x ./iou2net.pl
скрипт требует следующих пакетов
sudo apt-get install libnet-pcap-perl libpcap0.8
если модули перла не установлены то устанавливаем используя CPAN
perl -MCPAN -e 'install Net::Pcap'
для запуска скрипта на Ubuntu потребовалось добавить ссылку
sudo ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.4
После всех приготовлений запускаем скрипт следующей командой:
sudo ./iou2net.pl -i eth0 -p 20 &
— после ключа i указывается сетевой адаптер на который будет подцеплен порт маршрутизатора, ID которого в свою очередь должен быть указан в файле NETMAP;
— после ключа p указывается псевдо-ID маршрутизатора (фактически это виртуальный ID сетевой карты).
Чтобы подвязать к нескольким сетевым адаптерам, необходимо несколько раз запустить скрипт, пример:
$ cat NETMAP
10:1/0@hostname 20:0/0@hostname
10:1/1@hostname 21:0/0@hostname
[...]
$ sudo ./iou2net.pl -i eth0 -p 20 &
[...]
$ sudo ./iou2net.pl -i eth1 -p 21 &
[...]
— маршрутизатор с ID 10 с портом 1/0 подключен к псевдо-маршрутизатору с ID 20, который фактически через скрипт, является сетевым адаптером eth0, второй порт 1/1 подключен к псевдо ID 21 — к сетевой карте eth1.
— hostname — имя хоста на котором запускается эмулятор.
Для тестов на виртуальном роутере был настроен статический NAT, а на машине за натом был запущен торрент клиен со скоростью скачивания 6Мбит/с и одновременно было инициализированно скачивание большого объема мелких файлов находящихся за натом по протоколу SMB. Нагрузка на процессор виртуального роутера составляла не более 60%, а физический процессор был нагружен всего на 30%.