Краткий обзор того, чего я пытаюсь добиться: у нас есть хостинговая VM-инфраструктура кластера на базе Hyper-V 2012 R2. У нескольких клиентов есть виртуальные серверы (файловые, RDP, Exchange), размещённые в нашей системе, каждый — в своей VLAN, и все устройства настроены с не пересекающимися подсетями. У клиентов на площадке стоит MikroTik.
Нам нужно настроить VPN-туннель между офисом клиента и дата-центром, чтобы они могли напрямую получить доступ к данным со своих виртуальных устройств. Вместо того чтобы ставить физическую коробку с X86 RouterOS, которая может выйти из строя и вызвать проблемы, мы решили попробовать виртуализировать роутер.
Для нескольких клиентов мы настроили отдельные виртуальные машины с RouterOS версии 4.x, с двумя виртуальными сетевыми интерфейсами (WAN и LAN). На виртуальном интерфейсе, подключённом к LAN, мы используем настройку Hyper-V, чтобы пропускать трафик только с определённым VLAN ID. Минус в том, что если клиентов 50, нам надо 50 виртуальных машин.
Мы хотим попытаться слить все роутеры в один VPN-концентратор на базе RouterOS (или CHR).
Как мы это пытаемся сделать:
- Создали виртуальную машину для нового концентратора.
- Добавили два виртуальных сетевых адаптера (eth1=WAN, eth2=LAN):
add-vmnetworkadapter -vmname Concentrator -SwitchName WAN | rename-VMNetworkAdapter -name Eth1
add-vmnetworkadapter -vmname Concentrator -SwitchName ClientPrivate | rename-VMNetworkAdapter -name Eth2
- Через PowerShell включили для LAN-интерфейса режим транка:
set-vmnetworkadaptervlan -vmname Concentrator -VMNetworkAdapter ETH2 -Trunk -AllowedVlanIdList 900-999 -NativeVlanId 0
- Установили RouterOS в виртуальную машину (пробовали как 4.x с legacy NIC, так и последний релиз кандидат CHR с legacy и synthetic NIC).
- Создали новый VLAN-интерфейс на eth2 с VLAN ID из разрешённого диапазона виртуального свича (900-999):
/interface vlan add interface=ether2 name=vlan999 vlan-id=999
- Тестировали с другой виртуальной машиной, привязанной к той же VLAN из шага 5, но она не видит устройство RouterOS, и RouterOS не видит эту VM. По снифферам пакетов видно, что где-то в RouterOS VLAN-теги обрезаются, и трафик просто отбрасывается.
- Устройство RouterOS может общаться по LAN виртуальному интерфейсу на native VLAN, установленном на виртуальном адаптере, но не на каких-либо из разрешённых VLAN.
Альтернативно можно добавить несколько виртуальных сетевых карт к виртуалке (по одной на клиента) и дать Hyper-V управлять VLAN’ами на интерфейсе напрямую, но Hyper-V ограничен 8 виртуальными картами, так что получится максимум 1 WAN и 7 клиентов на роутер. Это уменьшит число роутеров, но всё равно будет неудобно в эксплуатации.
Мы пробовали то же самое с PFSense и ещё одним софтовым роутером — оба нормально навешивали VLANы на виртуальные интерфейсы без проблем.
Это баг в сетевой части RouterOS или я просто чего-то не понимаю и пропускаю настройку?
Нам нужно настроить VPN-туннель между офисом клиента и дата-центром, чтобы они могли напрямую получить доступ к данным со своих виртуальных устройств. Вместо того чтобы ставить физическую коробку с X86 RouterOS, которая может выйти из строя и вызвать проблемы, мы решили попробовать виртуализировать роутер.
Для нескольких клиентов мы настроили отдельные виртуальные машины с RouterOS версии 4.x, с двумя виртуальными сетевыми интерфейсами (WAN и LAN). На виртуальном интерфейсе, подключённом к LAN, мы используем настройку Hyper-V, чтобы пропускать трафик только с определённым VLAN ID. Минус в том, что если клиентов 50, нам надо 50 виртуальных машин.
Мы хотим попытаться слить все роутеры в один VPN-концентратор на базе RouterOS (или CHR).
Как мы это пытаемся сделать:
- Создали виртуальную машину для нового концентратора.
- Добавили два виртуальных сетевых адаптера (eth1=WAN, eth2=LAN):
add-vmnetworkadapter -vmname Concentrator -SwitchName WAN | rename-VMNetworkAdapter -name Eth1
add-vmnetworkadapter -vmname Concentrator -SwitchName ClientPrivate | rename-VMNetworkAdapter -name Eth2
- Через PowerShell включили для LAN-интерфейса режим транка:
set-vmnetworkadaptervlan -vmname Concentrator -VMNetworkAdapter ETH2 -Trunk -AllowedVlanIdList 900-999 -NativeVlanId 0
- Установили RouterOS в виртуальную машину (пробовали как 4.x с legacy NIC, так и последний релиз кандидат CHR с legacy и synthetic NIC).
- Создали новый VLAN-интерфейс на eth2 с VLAN ID из разрешённого диапазона виртуального свича (900-999):
/interface vlan add interface=ether2 name=vlan999 vlan-id=999
- Тестировали с другой виртуальной машиной, привязанной к той же VLAN из шага 5, но она не видит устройство RouterOS, и RouterOS не видит эту VM. По снифферам пакетов видно, что где-то в RouterOS VLAN-теги обрезаются, и трафик просто отбрасывается.
- Устройство RouterOS может общаться по LAN виртуальному интерфейсу на native VLAN, установленном на виртуальном адаптере, но не на каких-либо из разрешённых VLAN.
Альтернативно можно добавить несколько виртуальных сетевых карт к виртуалке (по одной на клиента) и дать Hyper-V управлять VLAN’ами на интерфейсе напрямую, но Hyper-V ограничен 8 виртуальными картами, так что получится максимум 1 WAN и 7 клиентов на роутер. Это уменьшит число роутеров, но всё равно будет неудобно в эксплуатации.
Мы пробовали то же самое с PFSense и ещё одним софтовым роутером — оба нормально навешивали VLANы на виртуальные интерфейсы без проблем.
Это баг в сетевой части RouterOS или я просто чего-то не понимаю и пропускаю настройку?