В прошлой статье, мы рассмотрели установку GNS3 на Hyper-V. Сегодня мы предоставим устройствам, запущенным в GNS3, доступ к нашей ЛВС и сети Интернет.
Всё рассмотренное далее, подразумевает, что вы установили и настроили GNS3 согласно предыдущей части.
Если вы попробуете запустить GNS3 после перезагрузки, вы можете обнаружить что клиент GNS3 не может соединиться с сервером. Происходит это потому, что виртуальный коммутатор, к которому мы подключаемся, по умолчанию, каждый раз выдает нам новый ip-адрес, он может выдать и тот же самый, тут все дело случая. Нас это не устраивает, нам нужна предсказуемая адресация.
Для этого мы добавим новый виртуальный коммутатор с жёстко заданным ip-адресом.
Откройте диспетчер Hyper-V, выберите локальный сервер Hyper-V иp справа в разделе «Действия» выберите «Диспетчер виртуальных коммутаторов»

Откроется окно “Диспетчер виртуальных коммутаторов”

Если вы устанавливали Hyper-V впервые, у вас должен быть только один виртуальный коммутатор.
Выберите «Внутренняя» и нажмите на кнопку «Создать виртуальный коммутатор»
В поле Имя введите «Management»

Нажмите «ОК»
Теперь, когда мы создали виртуальный коммутатор у нас, в сетевых подключениях, появился новый сетевой адаптер:

Давайте определимся с подсетями, для сети управления GNS3 мы будем использовать подсеть:
172.16.100.0/24
Я специально выделил /24 подсеть, чтобы она в будущем не пересекалась с другими сетями.
Зададим только что созданному нашему виртуальному адаптеру адрес 172.16.100.254.

Не забудьте отключить IP6, сняв галочку с IP версии 6 (TCP/IP)
Теперь зайдем в настройки виртуальной машины GNS3 и поменяем настройки адаптера, выбрав виртуальный коммутатор Management:

Перезапустим наш GNS3
Перейдем в окно виртуальной машины GNS3, закроем окно с информацией, если оно открыто и в меню выберем Reboot.
После загрузки мы видим вот что:

Так как мы задали ip-адрес вручную и переключились на новый виртуальный коммутатор, на котором у нас нет DHCP-сервера, GNS3 не смог получить ip-адрес. Пропишем его вручную, нажмем ОК, откроется меню сервера:

Выберем пункт Network и нажмем Yes
В открывшемся редакторе приведем настройки к виду:

Нажмем Ctrl+x и затем Y и затем Enter
Обратите внимание — сервер автоматически перезагружается каждый раз, при изменении конфигурации сети виртуального сервера.
После загрузки новые настройки сети изменились:

Откроем клиент GNS3 и изменим ip-адрес сервера, в настройках, на 172.16.100.1. Мы подключимся к GNS3 по постоянному адресу.
Запустим микротик в GNS3 и откроем Winbox
Он нам снова доступен, но на этот раз, только по mac-адресу:

Так как нам нужна постоянная адресация - нас это не устраивает.
Для внутренней сети GNS3 мы выделим подсеть
172.16.200.0/24
Для маршрутизаторов выделим подсеть
172.16.200.240/28
Создадим еще один виртуальный коммутатор, а затем подключенный к нему адаптер, назначим адаптеру адрес 172.16.200.254/28
На этот раз, для добавления коммутатора мы будем использовать командную строку PowerShell, запущенную от имени администратора:
Добавим коммутатор
|PS D:\> New-VMSwitch -name GNS3_LAN -SwitchType Internal
Name SwitchType NetAdapterInterfaceDescription
---- ---------- ------------------------------
GNS3_LAN Internal
Настроим ему ip-адрес
Проверим правильность имени адаптера:
PS D:\> Get-NetAdapter -Name "vEthernet (GNS3_LAN)"
Name InterfaceDescription ifIndex Status MacAddress LinkSpeed
---- -------------------- ------- ------ ---------- ---------
vEthernet (GNS3_LAN) Hyper-V Virtual Ethernet Adapter #3 40 Up 00-15-5D-3F-C1-27 10 Gbps
Адаптер с таким именем есть, теперь нам нужен его индекс:
PS D:\> Get-NetIPConfiguration -InterfaceAlias "vEthernet (GNS3_LAN)" -Detailed
ComputerName : XXXX
InterfaceAlias : vEthernet (GNS3_LAN)
InterfaceIndex : 40
InterfaceDescription : Hyper-V Virtual Ethernet Adapter #3
NetCompartment.CompartmentId : 1
NetCompartment.CompartmentDescription : Default Compartment
NetAdapter.LinkLayerAddress : 00-15-5D-3F-C1-27
NetAdapter.Status : Up
IPv6LinkLocalAddress : fe80::7c44:3ee0:2839:d1f9%40
IPv4Address : 169.254.209.249
IPv6DefaultGateway :
IPv4DefaultGateway :
NetIPv6Interface.NlMTU : 1500
NetIPv4Interface.NlMTU : 1500
NetIPv6Interface.DHCP : Enabled
NetIPv4Interface.DHCP : Enabled
DNSServer : fec0:0:0:ffff::1
fec0:0:0:ffff::2
fec0:0:0:ffff::3
Нас интересует строка
InterfaceIndex : 40
Возможно, у вас индекс будет отличаться!
Пропишем для интерфейса адрес:
New-NetIPAddress –IPAddress 172.16.200.254 -PrefixLength 28 -InterfaceIndex 40
PS D:\vm\gns3> New-NetIPAddress -IPAddress 172.16.200.254 -PrefixLength 28 -InterfaceIndex 40
IPAddress : 172.16.200.254
InterfaceIndex : 40
InterfaceAlias : vEthernet (GNS3_LAN)
AddressFamily : IPv4
Type : Unicast
PrefixLength : 28
PrefixOrigin : Manual
SuffixOrigin : Manual
AddressState : Tentative
ValidLifetime : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource : False
PolicyStore : ActiveStore
IPAddress : 172.16.200.254
InterfaceIndex : 40
InterfaceAlias : vEthernet (GNS3_LAN)
AddressFamily : IPv4
Type : Unicast
PrefixLength : 28
PrefixOrigin : Manual
SuffixOrigin : Manual
AddressState : Invalid
ValidLifetime : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource : False
PolicyStore : PersistentStore
И сразу отключим Ip6 на этом интерфейсе:
PS D:\vm\gns3> Disable-NetAdapterBinding -Name "vEthernet (GNS3_LAN)" -ComponentID ms_tcpip6 -PassThru
Name DisplayName ComponentID Enabled
---- ----------- ----------- -------
vEthernet (GNS3_LAN) IP версии 6 (TCP/IPv6) ms_tcpip6 False
Проверим статус еще раз:
PS D:\vm\gns3> Get-NetIPConfiguration -InterfaceAlias "vEthernet (GNS3_LAN)" -Detailed
ComputerName : DESKTOP-TOK0194
InterfaceAlias : vEthernet (GNS3_LAN)
InterfaceIndex : 40
InterfaceDescription : Hyper-V Virtual Ethernet Adapter #3
NetCompartment.CompartmentId : 1
NetCompartment.CompartmentDescription : Default Compartment
NetAdapter.LinkLayerAddress : 00-15-5D-3F-C1-27
NetAdapter.Status : Up
IPv4Address : 172.16.200.254
IPv4DefaultGateway :
NetIPv4Interface.NlMTU : 1500
NetIPv4Interface.DHCP : Disabled
DNSServer :
Все настроено правильно!
Нам нужно добавить еще один адаптер к нашей виртуальной машине GNS3.
Чтобы это сделать, предварительно нужно её выключить, для этого используем командную строку:
Stop-VM -VMName "GNS3 VM"
Добавим адаптер:
Add-VMNetworkAdapter -VMName "GNS3 VM" -SwitchName "GNS3_LAN" -Name "GNS_LAN"
Проверим настройки виртуально машины, у неё должен появиться новый адаптер:

Включим MAC-спуфинг на всех интерфейсах
Set-VMNetworkAdapter -VMName "GNS3 VM" -MacAddressSpoofing On
Давайте так же отличим автоматические контрольные точки, они нам будут только мешать, для этого зайдите в свойства виртуальной машины:
И уберите галочку, как показано на рисунке.
Запускаем GNS3
Start-VM -VMName "GNS3 VM"
Давайте теперь настроим сеть на Mikrotik
Запустим клиент GNS3 и после запуска самого микротика откроем его консоль:
[admin@MikroTik] >
Добавим ip-адрес интерфейсу ether1
/ip address add address=172.16.200.253/28 interface=ether1
Теперь, чтобы получить доступ к сети, нам нужно изменить настройки Cloud1
Для этого удалим текущий линк между микротиком и облаком, щелкнув правой кнопкой мыши по линии и выбрав Delete
В окне GNS3 откройте свойства Cloud1, выбрав пункт Configure
Удалите eth0 ид списка и добавьте eth1, нажмите ОК
Соедините линком mikrotik и cloud1 через ether1 и eth1
Пропингуем наш виртуальный адаптер с mikrotik:
[admin@MikroTik] /interface ethernet> /tool ping 172.16.200.254
current: 4.4Mbps
average: 4.4Mbps
Как видите — связь есть!
Переименуем Микротик на карте в GW1, в GNS3 это можно сделать в настройках самой ноды (подменю Configure)
Изменим имя на самом устройстве:
[admin@MikroTik] > system identity set name=GW1
[admin@GW1] > system identity print
name: GW1
Cделаем GW1 шлюзом нашей GNS3 подсети 192.16.200.0/28
Для этого установим для ether2 ip-адрес:
/ip address add address=172.16.200.14/28 interface=ether2
В клиенте GNS3 на карту перетащим Ethernet switch и VPCS
Соединим GW1 и Switch1 через Ether2 и Ethernet0
Так же соединим PC1 со Switch1 с любым портом
Вот что у нас получилось:

Запустим PC1, откроем его консоль и пропишем IP и шлюз по-умолчанию.
PC1> ip 172.16.200.1 255.255.255.240 172.16.200.14
Checking for duplicate address...
PC1 : 172.16.200.1 255.255.255.240 gateway 172.16.200.14
Проверим доступность шлюза:
PC1> ping 172.16.200.14
84 bytes from 172.16.200.14 icmp_seq=1 ttl=64 time=0.239 ms
84 bytes from 172.16.200.14 icmp_seq=2 ttl=64 time=0.412 ms
84 bytes from 172.16.200.14 icmp_seq=3 ttl=64 time=0.414 ms
84 bytes from 172.16.200.14 icmp_seq=4 ttl=64 time=0.376 ms
84 bytes from 172.16.200.14 icmp_seq=5 ttl=64 time=0.380 ms
Проверим доступность нашего ПК:
PC1> ping 172.16.200.254
172.16.200.254 icmp_seq=1 timeout
172.16.200.254 icmp_seq=2 timeout
172.16.200.254 icmp_seq=3 timeout
172.16.200.254 icmp_seq=4 timeout
Связи нет, а дело тут в том, что наш ПК не знает, где находится хост 172.16.200.1
На нашем ПК открываем консоль с правами администратора и прописываем
route -p add 172.16.200.0 mask 255.255.255.240 172.16.200.253
OK
Снова пингуем с PC1
PC1> ping 172.16.200.254
84 bytes from 172.16.200.254 icmp_seq=1 ttl=127 time=0.554 ms
84 bytes from 172.16.200.254 icmp_seq=2 ttl=127 time=0.728 ms
84 bytes from 172.16.200.254 icmp_seq=3 ttl=127 time=0.853 ms
84 bytes from 172.16.200.254 icmp_seq=4 ttl=127 time=0.618 ms
Нужно обязательно сохранить настройки
PC1> save
Saving startup configuration to startup.vpc
. done
Но если мы попробуем получить доступ к сети интернет — у нас ничего не выйдет:
PC1> ping 8.8.8.8
*172.16.200.14 icmp_seq=1 ttl=64 time=0.259 ms (ICMP type:3, code:0, Destination network unreachable)
*172.16.200.14 icmp_seq=2 ttl=64 time=0.279 ms (ICMP type:3, code:0, Destination network unreachable)
*172.16.200.14 icmp_seq=3 ttl=64 time=0.391 ms (ICMP type:3, code:0, Destination network unreachable)
*172.16.200.14 icmp_seq=4 ttl=64 time=0.286 ms (ICMP type:3, code:0, Destination network unreachable)
Это всё от того, что у GW1 нет шлюза по-умолчанию, давайте его пропишем:
/ip route add dst-address=0.0.0.0/0 gateway=172.16.200.254
Снова неудача
PC1> ping 8.8.8.8
8.8.8.8 icmp_seq=1 timeout
8.8.8.8 icmp_seq=2 timeout
8.8.8.8 icmp_seq=3 timeout
А дело тут в чем - мы находимся в рамках внутренней сети из которой нельзя попасть во внешнюю сеть, так что нам придется добавить еще один виртуальный адаптер, который и обеспечит нас доступом к ЛВС и интернету.
Для этого добавим еще один виртуальный коммутатор и назовем его WAN
PS D:\> New-VMSwitch -name WAN -NetAdapterName Ethernet -AllowManagementOS $true
Name SwitchType NetAdapterInterfaceDescription
---- ---------- ------------------------------
WAN External Realtek PCIe GbE Family Controller
Установим виртуальную машину GSN3
Stop-VM -VMName "GNS3 VM"
Добавим новый адаптер:
Add-VMNetworkAdapter -VMName "GNS3 VM" -SwitchName "WAN" -Name "WAN"
Set-VMNetworkAdapter -VMName "GNS3 VM" -MacAddressSpoofing On
Запустим GNS3
Start-VM -VMName "GNS3 VM"
Откроем клиент GNS3
Удалим все линки к GW1, а затем в свойствах GW1 и увеличим число адаптеров до 3
Восстановим линки GW1
Добавим еще одно облако и в его настройках удалим eth0 и eth1
Переименуем его как Internet (вкладка Misc.)
Cloud1 переименуем в LAN
Соединим Ether2 c Internet
Запустим всё устройства.
У меня интернет раздается с домашнего роутера, так что давайте настроим DHCP-клиента на нашем микротике
/ip dhcp-client add interface=ether3 disabled=no
[admin@GW1] > /ip address print
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS NETWORK INTERFACE
0 172.16.200.253/28 172.16.200.240 ether1
1 172.16.200.14/28 172.16.200.0 ether2
2 D 192.168.1.46/24 192.168.1.0 ether3
Как видите микротик получил ip-адрес
Теперь давайте проверим таблицу маршрутизации:
[admin@GW1] > /ip route print
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
# DST-ADDRESS PREF-SRC GATEWAY DISTANCE
0 A S 0.0.0.0/0 172.16.200.254 1
1 DS 0.0.0.0/0 192.168.1.1 1
2 ADC 172.16.200.0/28 172.16.200.14 ether2 0
3 ADC 172.16.200.240/28 172.16.200.253 ether1 0
4 ADC 192.168.1.0/24 192.168.1.46 ether3 0
У нас два маршрута по умолчанию, давайте удалим старый
/ip route remove 0
Проверим таблицу маршрутизации
[admin@GW1] > /ip route print
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
# DST-ADDRESS PREF-SRC GATEWAY DISTANCE
0 ADS 0.0.0.0/0 192.168.1.1 1
1 ADC 172.16.200.0/28 172.16.200.14 ether2 0
2 ADC 172.16.200.240/28 172.16.200.253 ether1 0
3 ADC 192.168.1.0/24 192.168.1.46 ether3 0
Проверим доступ к интернету с PC1
PC1> ping 8.8.8.8
8.8.8.8 icmp_seq=1 timeout
8.8.8.8 icmp_seq=2 timeout
8.8.8.8 icmp_seq=3 timeout
Пинга нет, так как мы не настроили NAT (маскарад) на микротике, давайте пропишем его:
/ip firewall nat add chain=srcnat action=masquerade out-interface=ether3
Пинг появился
PC1> ping 8.8.8.8
84 bytes from 8.8.8.8 icmp_seq=1 ttl=106 time=137.656 ms
84 bytes from 8.8.8.8 icmp_seq=2 ttl=106 time=136.948 ms
84 bytes from 8.8.8.8 icmp_seq=3 ttl=106 time=136.659 ms
84 bytes from 8.8.8.8 icmp_seq=4 ttl=106 time=136.682 ms
84 bytes from 8.8.8.8 icmp_seq=5 ttl=106 time=136.842 ms
Теперь наша сеть ЛВС GNS3 имеет доступ к интернету.
Давайте попробуем присоединиться к микротику по внешнему адресу:
putty 192.168.1.46
MMMM MMMM KKK TTTTTTTTTTT KKK
MMM MMMM MMM III KKK KKK RRRRRR OOOOOO TTT III KKK KKK
MMM MM MMM III KKKKK RRR RRR OOO OOO TTT III KKKKK
MMM MMM III KKK KKK RRRRRR OOO OOO TTT III KKK KKK
MMM MMM III KKK KKK RRR RRR OOOOOO TTT III KKK KKK
MikroTik RouterOS 6.47 (c) 1999-2020 http://www.mikrotik.com/
[?] Gives the list of available commands
command [?] Gives help on the command and list of arguments
[Tab] Completes the command/word. If the input is ambiguous,
a second [Tab] gives possible options
/ Move up to base level
.. Move up one level
/command Use command at the base level
[admin@GW1] >
Вот, что у нас получилось:

Работает!
Конечно, теперь вам необходимо озаботиться настройкой межсетевого экрана на GW1, но это выходит за рамки нашей сегодняшней темы.
Заключение
Сегодня мы рассмотрели с вами настройку GNS3 для доступа к ЛВС и сети Интернет.
Добавили виртуальные коммутатор в Hyper-V для сети управления GNS3.
Перенастроили виртуальную машину для доступа по статическому ip и настроили сервер GNS3 для работы с этим ip-адресом.
Выделили подсети для маршрутизаторов и ЛВС GNS3.
Добавили виртуальный коммутатор для ЛВС GNS3 и виртуальный интерфейс к серверу GNS3 для ЛВС GNS3.
Настроили ip-адреса на виртуальном коммутаторе и на виртуальном маршрутизаторе mikrotik – GW1
Настроили маршрутизацию между физической и виртуальной сетями.
Добавили виртуальный ПК и соединили его через виртуальный коммутатор с GW1, настроили его для доступа к GW1 и нашей ЛВС.
Для доступа к сети Интернет, добавили виртуальный коммутатор и виртуальный интерфейс к серверу GNS3.
Настроили DHCP-клиент на GW1, для получения ip-адреса от домашнего роутера.
Настроили NAT на GW1 для обеспечения доступа к сети Интернет устройств из ЛВС GNS3.
В следующей статье мы рассмотрим подключение маршрутизатора к виртуальной сети GNS3.