Mikrotik && HTTP сервер

Преамбула:
— есть веб-сервер, который должен быть доступен извне и изнутри сети
— есть машина с микротиком 2.9
— есть внутренняя сеть с win 2008 и AD

Соответственно микротик работает, все ходят в интернет, все работает, но одна проблема — вебсервер видно только извне. Из внутренней сети сервер видно только по внутреннему IP (192.168.1.33, например). На микротике создано правило NAT:
add chain=dstnat dst-address=80.*.*.* protocol=tcp dst-port=80 \
action=dst-nat to-addresses=192.168.1.33 to-ports=80 comment="" \
disabled=no

При трасировке из внутренней сети все идет идеально на указанный IP:
C:\Users\Nks>tracert 80.*.*.*

Tracing route to 80.*.*.*.*.*.ru [80.*.*.*]
over a maximum of 30 hops:

1 <1 ms <1 ms <1 ms 80.*.*.*.*.*.ru [80.*.*.*]

Trace complete.

И трассировочка извне:
C:\Users\Nks>tracert 80.*.*.*

Трассировка маршрута к 80.*.*.*.*.*.ru [80.*.*.*]
с максимальным числом прыжков 30:

1 <1 мс <1 мс <1 мс GALAXY [192.168.0.15]
2 <1 мс <1 мс <1 мс l49-31-62.cn.ru [178.49.31.62]
3 <1 мс 1 ms <1 мс 10.245.234.33
4 * * * Превышен интервал ожидания для запроса.
5 1 ms 1 ms 1 ms 10.245.138.82
6 1 ms <1 мс <1 мс 10.245.138.74
7 1 ms 1 ms 1 ms nsk01.nsk28.transtelecom.net [217.150.43.142]
8 1 ms 1 ms 1 ms Linkey-gw.transtelecom.net [217.150.56.17]
9 1 ms 1 ms 1 ms 89.189.190.228.sta.211.ru [89.189.190.228]
10 * * * Превышен интервал ожидания для запроса.
11 1 ms 1 ms 2 ms 89.189.190.190
12 * * * Превышен интервал ожидания для запроса.
13 2 ms 1 ms 1 ms 80.*.*.*.*.*.ru [80.*.*.*]

Трассировка завершена.


Как я понимаю — микротик не хочет заводить на правило нат все, что пришло изнутри сети и просто все затыкается на нем (не натится на 192.168.1.33). Куда копать?
  • Вопрос задан
  • 15638 просмотров
Пригласить эксперта
Ответы на вопрос 2
DmZ
@DmZ
Копать в сторону понимания функционирование сети и нат :)

Микротик все заворачивает правильно, просто в данном случае работать оно не будет:
  1. Из мира приходит пакет (предположим 8.8.8.8 -> 80.*.*.*), микротик его днатит в локальный адрес (8.8.8.8 -> 192.168.1.33), вебсервер получает запрос от 8.8.8.8 и шлет ответ обратно на микротик (дефолт-роут), микротик проводит пакет обратно по нат и отправляет в мир;
  2. Если пакет приходит из локалки (предположим 192.168.1.2 -> 80.*.*.*), микротик его днатит в локальный адрес (192.168.1.2 -> 192.168.1.33), вебсервер получает запрос от 192.168.1.2 и шлет ответ обратно в ЛОКАЛЬНУЮ сеть, компьютер 192.168.1.2 не получает ожидаемого ответа от 80.*.*.* а ответ от 192.168.1.33 считает инвалидным, так как не отправлял туда запрос. Соотв. TCP соединение не устанавливается.

Если очень хочется именно Натом решить эту проблему, то нужно на микротике сделать еще src-nat 192.168.1.0/24 на 192.168.1.33:80 в адрес микротика (предположим 192.168.1.1). Тогда при получении пакета из локальной сети, микротик будет его дважды натить и посылать на сервер в виде (192.168.1.1 -> 192.168.1.33) и веб-сервер будет отправлять ответ обратно микротику и соединение установится.

Но самый правильный способ это просто резолвить DNS для внутренних хостов на внутренний адрес веб-сервера, а для внешних — на внешний. Тогда внешка будет натится, а внутренние будут ходить напрямую.
Ответ написан
@ironsf
С днс вариант, но можно сделать красивше:
/ip firewall nat
add chain=srcnat src-address=192.168.1.0/24 \
dst-address=192.168.1.33 protocol=tcp dst-port=80 \
out-interface=LAN action=masquerade

Где LAN это имя интерфейса что смотрит в локальную сеть.
подребней читать тут
Ответ написан
Ваш ответ на вопрос

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

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