Работа с VLAN в GNS3 с использованием Open vSwitch
При работе с виртуальными сетями в GNS3 встроенного коммутатора может оказаться недостаточно. Например, чтобы получить возможность управлять VLAN нам потребуется нечто посложнее встроенного коммутатора.
Сегодня мы рассмотрим работу с VLAN в GNS3 с использованием виртуального коммутатора Open vSwitch. Его Eltex использует их в своих устройствах ESR.
Если вы включите режим отладки на ESR вы сможете увидеть части логов Open vSwitch:
2020-01-14T05:33:33+11:00 ovs|00001|vsctl|DBG|Called as ovs-vsctl set Port gi1_2 trunks=2,
2020-01-14T05:33:33+11:00 ovs|00001|vsctl|DBG|Called as ovs-vsctl set Port gi1_2 trunks=2,
Создадим новый проект в GNS3 и добавим новый шаблон – Open vSwitch. Шаблон добавляется так же, как и для Mikrotik. Для добавления Open vSwitch даже не придется ничего скачивать вручную, GNS3 сам скачает и настроит образ для Docker:
Pulling 'gns3/openvswitch:latest' from docker hub
Pulling image gns3/openvswitch:latest:207e252fc310: [> ] 25.16kB/2.402MB
Pulling image gns3/openvswitch:latest:9d73033ac1a1: [========================> ] 425B/856B
Pulling image gns3/openvswitch:latest:9d73033ac1a1: [==================================================>] 856B/856B
Pulling image gns3/openvswitch:latest:207e252fc310: [=> ] 49.71kB/2.402MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [> ] 42.66kB/4.148MB
Pulling image gns3/openvswitch:latest:207e252fc310: [==> ] 102.3kB/2.402MB
Pulling image gns3/openvswitch:latest:207e252fc310: [====> ] 200.6kB/2.402MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [==> ] 175.5kB/4.148MB
Pulling image gns3/openvswitch:latest:207e252fc310: [======> ] 326.9kB/2.402MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [====> ] 375.8kB/4.148MB
Pulling image gns3/openvswitch:latest:207e252fc310: [==========> ] 490.7kB/2.402MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [========> ] 727.5kB/4.148MB
Pulling image gns3/openvswitch:latest:207e252fc310: [================> ] 785.6kB/2.402MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [==========> ] 874.9kB/4.148MB
Pulling image gns3/openvswitch:latest:207e252fc310: [=========================> ] 1.212MB/2.402MB
Pulling image gns3/openvswitch:latest:207e252fc310: [=======================================> ] 1.899MB/2.402MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [===============> ] 1.272MB/4.148MB
Pulling image gns3/openvswitch:latest:207e252fc310: [========================================> ] 1.964MB/2.402MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [===============> ] 1.321MB/4.148MB
Pulling image gns3/openvswitch:latest:207e252fc310: [> ] 32.77kB/2.402MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [==================================> ] 2.861MB/4.148MB
Pulling image gns3/openvswitch:latest:207e252fc310: [==> ] 98.3kB/2.402MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [=====================================> ] 3.115MB/4.148MB
Pulling image gns3/openvswitch:latest:207e252fc310: [============================> ] 1.376MB/2.402MB
Pulling image gns3/openvswitch:latest:207e252fc310: [==================================================>] 2.402MB/2.402MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [======================================> ] 3.165MB/4.148MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [> ] 65.54kB/4.148MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [========================> ] 2.032MB/4.148MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [============================================> ] 3.67MB/4.148MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [==============================================> ] 3.867MB/4.148MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [===============================================> ] 3.932MB/4.148MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [================================================> ] 3.998MB/4.148MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [================================================> ] 4.063MB/4.148MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [=================================================> ] 4.129MB/4.148MB
Pulling image gns3/openvswitch:latest:25b93f8a41b7: [==================================================>] 4.148MB/4.148MB
Pulling image gns3/openvswitch:latest:9d73033ac1a1: [==================================================>] 856B/856B
Pulling image gns3/openvswitch:latest:9d73033ac1a1: [==================================================>] 856B/856B
Success pulling image gns3/openvswitch:latest
Так что, единственным требованием, является наличие на самом сервере доступа к сети Интернет.
Добавим 4 VPCS и соединим, как показано на рисунке:
Настроим ip – адреса на PC1-4
PC1:
ip 172.16.200.1/28
save
PC2:
ip 172.16.200.2/28
save
PC3:
ip 172.16.200.3/28
save
PC4:
ip 172.16.200.4/28
save
Переименуем openvswitch-1 в SW1 и запустим его
Откроем консоль коммутатора sw1
Посмотрим список сетевых мостов (bridge - далее бридж):
# ovs-vsctl list-br
br0
br1
br2
br3
Удалим все бриджи:
ovs-vsctl del-br br0
ovs-vsctl del-br br1
ovs-vsctl del-br br2
ovs-vsctl del-br br3
Создадим новый мост
ovs-vsctl add-br br0
Добавим все порты в этот мост:
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 eth1
ovs-vsctl add-port br0 eth2
ovs-vsctl add-port br0 eth3
Пропингуем PC1 с PC2-4 – связь есть!
Наш коммутатор работает корректно и есть связь между узлами.
Снова удалим бридж, это быстрее чем удалять порты по одному:
ovs-vsctl del-br br0
И теперь создадим бридж заново и добавим каждый порт в свой VLAN, для PC1-2 это будет VLAN 100, для PC3-4 VLAN 200:
ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0 tag=100
ovs-vsctl add-port br0 eth1 tag=100
ovs-vsctl add-port br0 eth2 tag=200
ovs-vsctl add-port br0 eth3 tag=200
Проверяем пинг между узлами:
PC1 и PC2 видят друг друга, но не видят PC3 и PC4 и наоборот!
Вот мы и изолировали устройства с помощью VLAN
Добавим еще один Open vSwitch, назовем его SW2 и настроим транк между SW1 и SW2.
Добавляем в проект Open vSwitch и 2 VPCS и соединяем, как показано на рисунке:
Добавим транк порт на SW1
ovs-vsctl add-port br0 eth15 trunks=100,200
Настроим SW2
ovs-vsctl del-br br0
ovs-vsctl del-br br1
ovs-vsctl del-br br2
ovs-vsctl del-br br3
ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0 tag=100
ovs-vsctl add-port br0 eth1 tag=200
ovs-vsctl add-port br0 eth15 trunks=100,200
Настроим ip-адреса на PC5 и PC6
PC5:
ip 172.16.200.5/28
save
PC6:
ip 172.16.200.6/28
save
Пингуем 172.16.200.1 с PC5
PC5> ping 172.16.200.1
84 bytes from 172.16.200.1 icmp_seq=1 ttl=64 time=0.347 ms
84 bytes from 172.16.200.1 icmp_seq=2 ttl=64 time=0.367 ms
84 bytes from 172.16.200.1 icmp_seq=3 ttl=64 time=0.366 ms
Пингуем 172.16.200.4 с PC5
PC5> ping 172.16.200.4
host (172.16.200.4) not reachable
И наоборот с PC6 доступны только PC3 и PC4
Вот и всё! Мы настроили VLAN в GN3!
Заключение
Сегодня мы рассмотрели использование Open vSwitch для работы с VLAN в GNS3.
Добавили OvS в наш проект GNS3, настроили на нем бридж и добавили в него порты с указанием какие VLAN использовать на каждом из портов.
Подключили к OvS виртуальные ПК и проверили доступность каждого из ПК в VLAN.
Добавили еще один OvS и соединили оба коммутатора транками.
Настроили порты на втором OvS и проверили связь между узлами VLAN.
Добавить комментарий