Как лучше поймать маркированное соединение (продолжение вопроса)?
По вводным: я уже как то задавал вопрос по работе одновременно 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, посмотрел, оказывается правило маршрутизации на основе таблиц работает, и на сервер приходит запрос, но обратно он не уходит. Возможно таки да, не работает обратный маршрут, но я пока не понимаю как его правильно прописать.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Если речь про MikroTik и «маркированное соединение», то ловить нужно не пакет «вручную», а правильно разнести connection-mark и routing-mark в mangle. Частая ошибка: ставят mark-routing сразу на первый попавшийся пакет, но не помечают connection-mark, из-за чего последующие пакеты идут уже не туда или правило срабатывает непредсказуемо.
Правильная схема обычно такая: сначала в prerouting помечается соединение по признаку источника, назначения, интерфейса или адрес-листа. Потом все пакеты этого соединения получают routing-mark. Если нужен policy routing, дальше создается отдельная таблица маршрутизации и маршрут с нужным gateway.
/ip firewall mangle add chain=prerouting src-address=192.168.88.10 action=mark-connection new-connection-mark=to_wan2 passthrough=yes add chain=prerouting connection-mark=to_wan2 action=mark-routing new-routing-mark=wan2 passthrough=no /ip route add dst-address=0.0.0.0/0 gateway=192.0.2.1 routing-table=wan2
Проверять надо не только правила, но и счетчики. Если счетчик первого правила растет, а второго нет, значит connection-mark не совпадает или пакет попадает в другую цепочку. Если оба растут, но трафик не идет, смотрите route table, NAT и обратный путь.
Для диагностики используйте Torch, Connections и логирование mangle-правила на короткое время. Если надо поймать именно конкретный поток, добавьте временный address-list или фильтр по dst-port, иначе правило будет слишком широким и начнет затрагивать лишний трафик.