Всем привет. Я уже как то задавал вопрос по работе одновременно SSTP сервера и Web сервера на одном микротике
вот тут. В прямую это сделать нельзя, тут все понятно, потому что оба сервиса сидят на одном порте (порту?) и микротику надо как то дать понять на какой именно сервер надо направить пакеты.
Была озвучена тут идея маркировки пакетов через чтение их заголовков где web.mydomain.com - это имя web сервера, а sstp.mydomain.com - это имя SSTP сервера. Т.е. надо промаркировать пакеты с заголовком web.mydomain.com Идея разумная, надо пробовать.
Итого: SSTP сервер на микротике на 443 порте, web сервер внутри сети по адресу 192.168.1.15. В Filter Rules открыт 443 порт с Accept. Оба сервера подняты, все работает ок, SSTP сервер виден снаружи, Web сервер виден внутри по IP, выдает тестовую страничку.
Делаю 2 правила Mangle:
add action=mark-connection chain=prerouting comment="Web server rule 0" content=web.mydomain.com disabled=no new-connection-mark=WebServer
add action=mark-routing chain=prerouting comment="Web server rule 1" connection-mark=WebServer disabled=no new-routing-mark=WebServerRoute passthrough=no
Подключаюсь к web.mydomain.com - открываю статистику обеих правил - вижу что трафик идет на обеих правилах, открываю IP -> FireWall -> Connections - вижу соединения с Connection Mark - WebServer. Все работает в части маркировки пакетов.
Теперь пытаюсь направить маркированные пакеты на 192.168.1.15
Сначала пытался это сделать по уму через таблицу маршрутизации WebServerRoute и правила маршрутизации (как указано в правиле Mangle выше):
add comment=" access to WebServer" disabled=no distance=3 dst-address=0.0.0.0/0 gateway=192.168.1.15 routing-table=WebServerRoute scope=30 suppress-hw-offload=no target-scope=10
0 эффекта, пакеты никуда не уходят. Тот же самый эффект если сделать через Routing -> Rules
Пытаюсь сделать правило NAT для ConnectionMark чтобы открыть порт 443 до 192.168.1.15 для маркированных пакетов:
add action=dst-nat chain=dstnat comment="Apache2 server" connection-mark=WebServer dst-port=443 protocol=tcp to-addresses=192.168.1.15 to-ports=443
Опять открывают статистику первого правила Mangle и нового правила NAT - в правиле Mangle вижу входящие пакеты, в правиле NAT - тишина. Соответственно, сервер ничего не отдает. Маскарадинг в данном случае не делал, но он тут по идее и не нужен (?)
Вопрос, ЧЯДНТ? Тут моих знаний как то не хватает. Т.е. мне очевидно, что миротик в прерутинге находит входящие пакеты для web.mydomain.com, отфильтровывает их и даже маркирует как мне надо, но почему то не хочет их маршрутизировать на хост внутри сети. Что тут можно предпринять, чтобы Apache2 таки получал их и отдавал наружу тестовую страничку? Может что-то с обратным маршрутом не то, хотя тогда была бы хоть какая то входящая активность на правиле NAT, а её нет. В общем буду признателен за идеи.
UP: запустил на сервере tcpdump, посмотрел, оказывается правило маршрутизации на основе таблиц работает, и на сервер приходит запрос, но обратно он не уходит. Возможно таки да, не работает обратный маршрут, но я пока не понимаю как его правильно прописать.