Настраиваем мост (bridge) между GNS3 и виртуальным сервером
Если вы когда-нибудь запускали виртуальные машины в GNS3 через QEMU и пытались загрузить на эту виртуальную машину файл или скачать обновления для операционной системы, вы могли столкнуться с проблемой низкой скорости доступа к интернету и ЛВС из виртуальной машины.
Многое зависит от производительности ПК, на котором запускается виртуализация, но в целом скорость доступа может быть очень низкой.
Всё дело в том, что сам GNS3 не предназначен для передачи такого объема информации. Он прекрасно справляется с задачей эмуляции сети, передачей пакетов и так далее. Но как только объем передаваемой информации резко возрастает он может не справляться большим объемом передаваемой информации, так как в том числе, эмулирует и сетевые адаптеры виртуальных машин.
Сегодня мы рассмотрим способ решить эту проблему — настроим сетевой мост (bridge) в виртуальной машине GNS3.
Создадим простой проект в GNS3.
Добавим шаблон для Tiny Core Linux 6.4 и перетащим его в окно проекта. Так же добавьте Cloud.
Соедините Cloud1 и TinyCoreLinux
У меня GNS3 настроен таким образом, что на eth2 по DHCP выдается IP-адрес с доступом к интернету.
Запустим узел и перейдем в консоль.
Проверим настройки сети
Попробуем что-то скачать
В консоли введем
tce-load -wi mc
Скорость скачивания очень маленькая.
Нажмем ctrl+c чтобы прервать загрузку.
Один из способов, добиться нормальной скорости — настроить бридж между tap интерфейсом и сетевым адаптером виртуальной машины.
Обратите внимание для использования с бриджем, нужно добавить еще один интерфейс к виртуальной машине GNS3!
Настройка бриджа
Откроем консоль GNS3
И введем:
sudo apt install uml-utilities bridge-utils
modprobe tun
sudo tunctl -u gns3
sudo ifconfig tap0 0.0.0.0 promisc up
sudo ifconfig eth2 0.0.0.0 promisc up
sudo brctl addbr br0
sudo brctl addif br0 tap0
sudo brctl addif br0 eth2
sudo ifconfig br0 up
sudo dhclient br0
sudo brctl show br0
bridge name bridge id STP enabled interfaces
br0 8000.00155d3fc129 no eth2
tap0
Проверим статус интерфейсов
ip a
...
9: tap0: <NO-CARRIER,BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc fq_codel master br0 state DOWN group default qlen 1000
link/ether 9a:8e:e0:93:bd:6e brd ff:ff:ff:ff:ff:ff
10: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:15:5d:3f:c1:29 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.45/24 brd 192.168.1.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fe3f:c129/64 scope link
valid_lft forever preferred_lft forever
Бридж получил ip-адрес.
Перезагрузим виртуальную машину GNS3 и проверим, статус бриджа.
Бриджа нет! А всё потому, что мы настраивали его из консоли вручную, а при загрузке GNS3 не знает, что нужно его создать!
Настройка автоматического создания бриджа при запуске GNS3
Откроем консоль GNS3
Создадим скрипт для конфигурации нашего бриджа:
touch /usr/local/share/br0.sh
Вставим в этот файл наш скрипт:
modprobe tun
tunctl -u gns3
ifconfig tap0 0.0.0.0 promisc up
ifconfig eth2 0.0.0.0 promisc up
brctl addbr br0
brctl addif br0 tap0
brctl addif br0 eth2
ifconfig br0 up
dhclient br0
сделаем исполняемым:
sudo chmod +x /usr/local/share/br0.sh
Вставим в файл /etc/rc.local строку
sudo /usr/local/share/br0.sh
перед
exit 0
Перезагрузим виртуальную машину
Проверяем:
ip a
...
4: eth2: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
link/ether 00:15:5d:3f:c1:29 brd ff:ff:ff:ff:ff:ff
inet6 fe80::215:5dff:fe3f:c129/64 scope link
valid_lft forever preferred_lft forever
...
6: tap0: <NO-CARRIER,BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc fq_codel master br0 state DOWN group default qlen 1000
link/ether 2e:76:21:38:da:c7 brd ff:ff:ff:ff:ff:ff
7: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:15:5d:3f:c1:29 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.45/24 brd 192.168.1.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fe3f:c129/64 scope link
valid_lft forever preferred_lft forever
Интерфейс появился.
Удалим и добавим облако.
Соединим облако и узел через новый интерфейс br0
Попробуем снова запустить загрузку, на этот раз установим openssl
tce-load -wi openssl
Теперь, после установки openssl, вы можете проверить скорость скачав любой «тяжелый» файл с интернета!
Чтобы не вводить много букв, вы можете воспользоваться любым сервисом Shorten URL
wget https://github.com/GNS3/gns3-gui/releases/download/v2.2.14/GNS3.VM.KVM.2.2.14.zip
Файл размером 560Мб скачивается за 6-7 минут. Учитывая какая скорость была до этого и то, что сам дистрибутив Tiny Core Linux довольно старый и мы не используем virtio это неплохой результат!
Как видите, скорость загрузки значительно повысились!
На этом настройка закончена. Вы теперь можете постоянно использовать этот адаптер, чтобы получать доступ к сети Интернет из виртуальные машин QEMU в GNS3.
Заключение
Сегодня мы рассмотрели настройку сетевого моста (bridge) для соединения виртуальных машин, запущенных в GNS3 к внешним сетям.
Мы добавили Tiny Core Linux и проверили скорость доступа к сети Интернет.
Настроили сетевой мост на виртуальном сервере GNS3 и убедились, что его положительно влияет на скорость передачи данных.
Настроили автоматическое создание сетевого моста при включении виртуального сервера GNS3.
Добавить комментарий