Proxmox. Организация доступа лабы в EVE-NG в локальную сеть и/или Интернет

Нередко необходимо иметь доступ к устройствам внутри лабораторной EVE-NG из домашней сети. К примеру: для использования локального DHCP или DNS сервера, либо для тестирования автоматизации/скриптов с рабочего ПК.

Существует несколько вариантов добиться данной цели, рассмотрю, как по мне, наиболее удобный.

Топология локальной сети

Все виртуальные девайсы в EVE-NG будут в отдельной VLAN’е 69 и подсети 10.69.69.0/24, для удобства.
Идея в том, чтобы “дотянуть” VLAN 69 до виртуалки с EVE.
В качестве VE у меня выступает Proxmox, но в VMware логика такая же.

Рассмотрим топологию моих устройств и остановимся на каждом поподробнее.

a) На роутере (в моем случае это просто мини ПК с Linux) необходимо создать VLAN 69, добавить его tagged на порт, смотрящий в сторону свитча и на VLAN-интерфейс повесить IP 10.69.69.1/24. Необходимо также убедиться, что работает Inter VLAN Routing (включен ip forwarding и в iptables/nftables не запрещено общение между подсетями).
В большинстве роутеров будет работать по умолчанию.

b) На коммутаторе, необходимо просто добавить VLAN 69 tagged на порт в сторону роутера и в сторону Proxmoxa.

c) На Proxmox необходимо включить VLAN aware на bridge интерфейсе и добавить ещё один сетевой интерфейс на виртуальную машину, с VLAN 69, как на скриншотах ниже.

Данный интерфейс, смотрит в сторону VM как untagged, т.е. на устройствах в EVE-NG VLAN 69 уже создавать будет не нужно.

Настройка со стороны EVE-NG

После того, как добавили сетевую карту на VM, необходимо проверить какому “cloud” интерфейсу она соответствует.
Берём MAC-адрес с предыдущего скриншота, подключаемся к VM и смотрим.

root@eve-ng:~# ip add | grep -B 1 -i 02:1F:48:AB:13:A2
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master pnet1 state UP group default qlen 1000
   link/ether 02:1f:48🆎13:a2 brd ff:ff:ff:ff:ff:ff

5: pnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
   link/ether 02:1f:48🆎13:a2 brd ff:ff:ff:ff:ff:ff

pnet1 - это Cloud 1 в интерфейсе EVE-NG.

Теперь нам необходимо добавить Network в лабораторной EVE-NG (правой кнопкой -> Network) и выбрать Type Cloud 1.

Следующим шагом добавляем любой неуправляемый свитч (на изображении ниже это OUTSIDE_SWITCH) и соединяем его с ранее созданным облаком. К этому свитчу будем подключать все устройства, доступ к которым необходим из-за пределов лабораторной.
Также необходим будет маршрут в локальную сеть (10.222.21.0/24) или default route (для доступа ещё и в Интернет) на каждом из устройств в EVE-NG через шлюз 10.69.69.1.

Настройка роутера R2:

Router>enable
Router#conf t
Router(config)#interface ethernet 0/0
Router(config-if)#no shutdown
Router(config-if)#ip address 10.69.69.10
Router(config-if)#ip address 10.69.69.10 255.255.255.0
Router(config-if)#exit
Router(config)#ip route 10.222.21.0 255.255.255.0 10.69.69.1
Router#write memory

Настройка коммутатора (на схеме имя Switch):

Switch(config)#vlan 123
Switch(config-vlan)#exit
Switch(config)#interface vlan 123
Switch(config-if)#ip address 10.69.69.11 255.255.255.0
Switch(config-if)#no shutdown
Switch(config-if)#exit
Switch(config)#int gigabitEthernet 0/0
Switch(config-if)#no shutdown
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 123
Switch(config-if)#exit
Switch(config)#ip route 10.222.21.0 255.255.255.0 10.69.69.1
Switch(config)#end
Switch(config)#write memory

Проверим доступность с рабочего ПК. Ping, к примеру, до коммутатора в EVE-NG:

ping -c 2 10.69.69.11 -I 10.222.21.138
PING 10.69.69.11 (10.69.69.11) from 10.222.21.138 : 56(84) bytes of data.
64 bytes from 10.69.69.11: icmp_seq=1 ttl=254 time=2.15 ms
64 bytes from 10.69.69.11: icmp_seq=2 ttl=254 time=2.47 ms

--- 10.69.69.11 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 2.153/2.312/2.472/0.159 ms

Итого: для доступа к любому устройству из лабы, необходимо его подключить в коммутатор управления (на схеме OUTSIDE_SWITCH), назначить ему адрес из сети 10.69.69.0/24 и прописать маршрут в локальную сеть (в моем случае 10.222.21.0/24) через шлюз 10.69.69.1.

Способ с подключением только одного устройства к Cloud

Можно не подключать каждое из устройств к коммутатору управления, как в примере выше, а подключить, к примеру, роутер R2 напрямую к Cloud 1 и на остальных устройствах использовать уже сети, которые захочется.
В таком случае необходим будет маршрут на домашнем роутере в сети устройств из лабораторной.
Создадим на R2 loopback интерфейс с адресом 10.2.2.2/24.

Router>enable
Router#conf t
Router(config)#int lo0
Router(config-if)#ip add 10.2.2.2 255.255.255.0
Router(config-if)#end
Router#wr mem

Проверим доступность данного адреса с ПК (на котором ip 10.222.21.138).

ping -c 2 10.2.2.2 -I 10.222.21.138
PING 10.2.2.2 (10.2.2.2) from 10.222.21.138 : 56(84) bytes of data.

--- 10.2.2.2 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1006ms

Как и предполагалось, пинг не прошёл, т.к. роутер ничего не знает о сети 10.2.2.0/24.
Подключимся к нему и добавим маршрут.

─❯ ssh 10.222.21.1
root@router-box:~# ip route add 10.2.2.0/24 via 10.69.69.1

Теперь с ПК проверим доступность:

ping -c 2 10.2.2.2 -I 10.222.21.138
PING 10.2.2.2 (10.2.2.2) from 10.222.21.138 : 56(84) bytes of data.
64 bytes from 10.2.2.2: icmp_seq=1 ttl=254 time=1.38 ms
64 bytes from 10.2.2.2: icmp_seq=2 ttl=254 time=1.31 ms

--- 10.2.2.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.314/1.346/1.379/0.032 ms

Как видно все работает.

0%