Как сделать DMZ для VM через VLAN?

Есть домашняя сеть, в которой есть сервер. На сервере крутится proxmox и виртуалки. Одна из виртуалок — хостинг всякого, доступного из интернета. Гарантий безопасности софта на ней никто не даст, поэтому хочется засунуть ее в DMZ, чтобы в случае компрометации все ограничилось просто ей.
У proxmox есть встроенный фаервол, но в данном случае с ним что-то не получается: любая комбинация правил блокирует весь трафик. Виртуалка это xpenology, нормально там поиграться с сетью не получается. Поэтому хочется использовать фаервол роутера. Но не весь трафик идет через роутер, часть трафика это VM<->VM, поэтому просто сделать правило с блокировкой трафика от адреса dmz-сервера не прокатит.

Как я понимаю, решение — это тегировать трафик этой VM, этот VLAN тащить до бриджа в микротике и там после снятия тега фильтровать фаерволом. Будут некоторые накладные расходы на таскание трафика исключительно через роутер, но и фиг с ним.
Т.е. хочется сделать как-то так:
64e01d2528980667752971.png

Но почему-то не работает. На Proxmox в сетевом интерфейсе VM устанавливаю тег 100, в бридже ставлю галочку vlan aware. Связь с машиной теряется, пока все ок.
На микротике:
/interface vlan add interface=ether5 name=vlan100 vlan-id=100
/interface bridge port add bridge=main_bridge interface=vlan100


Это, судя по найденными в интернете руководствам, отфильтрует трафик на ether5 с тегом 100 первой командой и второй забросит этот трафик обратно в бридж. Т.е. сделает машину с тегированным трафиком просто доступной, без фаервола. Но уже на этом этапе что-то идет не так, и добавление vlan100 в main_bridge ломает связь с хостом proxmox. Отключение порта ether5 из main_bridge дает доступ к тегированной машине, но без доступа к хосту. Когда в бридже и vlan100 и ether5 связи ни с тем, ни с тем нормально нет, пинги идут через раз.

Попробовал сделать по-другому:
/interface ethernet switch port set 4 default-vlan-id=200 vlan-header=add-if-missing (добавляем на ether5 нетегированному трафику тег 200)
/interface bridge port add bridge=main_bridge disabled=yes interface=ether5 (убираем из бриджа оригинальный интерфейс: наверное, не обязательно, ведь теперь там нет нетегированного трафика?)
/interface vlan add interface=ether5 name=vlan100 vlan-id=100 (выделяем из ether5 100 тег)
/interface vlan add interface=ether5 name=vlan200 vlan-id=200 (выделяем из ether5 200 тег)
/interface bridge port add bridge=main_bridge interface=vlan100 (засовываем в бридж трафик пришедший с 100 тегом)
/interface bridge port add bridge=main_bridge interface=vlan200 (засовываем в бридж трафик пришедший с 200 тегом)

Так доступа нет опять ни до того, ни до другого. Входящего трафика на интерфейсе vlan200 нет вообще, на vlan100 появляется, если убрать vlan-header=add-if-missing. Хост недоступен, пока не отключишь из бриджа vlan100, и не уберешь default-vlan-id=200.

Где-то то у меня крупное недопонимание, как это работает.

Ситуация, которую я хочу получить в итоге: обе виртуалки получают адреса из одного диапазона, находятся в одной сети, но та, которая в dmz и на которую проброшен порт извне, не имеет доступа к остальной части локальной сети (ну за исключением dhcp и dns). Собственно, VLAN тут только затем, чтобы притащить весь трафик от нее на роутер. Его можно заменить отдельным бриджом на отдельный порт в сервере, который втыкается в отдельный порт роутера и фильтровать трафик с этого порта, но не хочется тратить порт на роутере только на одну виртуалку.
  • Вопрос задан
  • 464 просмотра
Пригласить эксперта
Ответы на вопрос 2
@nApoBo3
Первое что хотелось бы заметить, идея так себе. У вас все машины в одной подсети. Т.е. вы нарушаете соответствие l2 и l3. Фаервол у вас в такой конфигурации должен работать на l2. Это не совсем тривиально и мало кто до конца понимает как оно там в таком случае работает и в каких случаях трафик будет подпадать под фильтрацию, а в каких нет.

При "классической" настройке линк enp6s0 - eth5 это транковый порт, в нем конечно можно гонять и не тэгированный трафик, но это уже требует некоторого понимания работы таких конфигураций. По этому лучше весь трафик в этом линке сделать тэгированным. Т.е. трафик одной машины в vlan100, трафик остальных в vlan200. Vlan в микротике сейчас настраивают на бридже. Ниже мануал как это делать.
https://help.mikrotik.com/docs/display/ROS/Bridge+...
Ответ написан
486dx
@486dx
часть трафика это VM<->VM

это как так? виртуалки трафик гонят между собой без сетевого интерефейса?

вот вариант изоляции:
зайти в терминал proxmox:
ifconfig смотриш интерфейс к котомому подключена виртуалка твоя (по номеру машины в гуе проксмокс)
iptables -A PREROUTING(вроде или post..) -o eth104 -d 10.31.41.0/24 -j drop (это примерно, думаю суть понятна)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы