Микротик - несколько белых IP на одном WAN, проброс портов и разделением исходящих IP

Возникла задача — провайдер выдал целую подсеть белых адресов. Необходимо за NAT разместить сервера с различными сервисами и пробросить к ним порты. И не просто пробросить, а что бы за каждым сервером был жестко закреплен свой IP как на входящие, так и на исходящие соединения. В качестве демонстрации будем считать сеть провайдера (чих-пых-связь) 10.0.0.0/24 с гейтом 10.0.0.1 и локальную сеть 192.168.1.0/24 гейт , сами понимаете, 192.168.1.1 . Назначаем адреса :

/ip address

add address=10.0.0.2/27 comment=ChihPihNet interface=ether10

add address=10.0.0.3/27 comment=ChihPihNet interface=ether10

add address=10.0.0.4/27 comment=ChihPihNet interface=ether10

add address=192.168.1.1/24 interface=ether1 network=192.168.1.0

 

 

 

пишем роутинг к шлюзу провайдера :

/ip route

add check-gateway=ping distance=1 gateway=10.0.0.1

 

и в NAT добавим «что бы все» :)

/ip firewall nat

add action=masquerade chain=srcnat out-interface=ether10 src-address=\

192.168.1.0/24 src-address-list=""

 

Проброс из интернета на сервера, делается тоже достаточно просто. Вот пример проброса порта 80 к веб-серверу и 25 к почтовому :

/ip firewall nat

add action=dst-nat chain=dstnat comment="to web server 192.168.1.25" dst-address=\

10.0.0.3 dst-port=80 protocol=tcp to-addresses=192.168.1.25

add action=dst-nat chain=dstnat comment="to smtp server 192.168.1.35" dst-address=\

10.0.0.4 dst-port=25 protocol=tcp to-addresses=192.168.1.35

Но тут мы первый раз получаем граблями в лоб. Все к нам приходит. Но если веб или почта начинают отвечать — они лезут в интернет от самого первого адреса — 10.0.0.2 . В ряде случаев это критично. Например для почты . Если сервер почты в DNS значится на адресе 10.0.0.3, а лезет с 10.0.0.2, большая вероятность влететь в спам-лист или просто в игнор. Значит надо добиться что бы просто пользователи перли в интернет от адреса 10.0.0.2 , а сервера с тех же адресов с которых к ним пробрасывалось. Перерыв за 2 дня кучу ссылок и форумов по Микротику в интернете, ответы сводились - «Не умеет микротик этого.
Как сказано выше только проброс с внешнего адреса на внутренний, одна большая проблема».

Но если ряд менее мощных роутеров это позволяет, ну неужели нет решений? Есть оно. Достаточно компактное.
Надо отмаркировать в таблице MANGLE исходящие от серверов :

/ip firewall mangle

add action=mark-routing chain=prerouting new-routing-mark=chihpih_4_r \ src-address=192.168.1.35

add action=mark-routing chain=prerouting new-routing-mark=chihpih_3_r \ src-address=192.168.1.25

 

Внимание! Чтобы еще раз не получить граблями между глаз, помните нижеуказанные правила в нат, должны быть ПЕРЕД дефаултным!!! Иначе до них просто не дойдет.

/ip firewall nat

add action=src-nat chain=srcnat dst-address=!192.168.0.0/16 out-interface=\

ether10 routing-mark= chihpih_3_r src-address=192.168.1.25 \

src-address-list="" to-addresses=10.0.0.3

add action=src-nat chain=srcnat dst-address=!192.168.0.0/16 out-interface=\

ether10 routing-mark= chihpih_4_r src-address=192.168.1.35 \

src-address-list="" to-addresses=10.0.0.4

Обратите внимание - используется не masquerade, а src-nat с нужным адресом внешнего интерфейса !!!

 

И теперь в роутах надо прописать :

 

/ip route

add check-gateway=ping distance=1 gateway=10.0.0.1 pref-src=\

10.0.0.3 routing-mark=chihpih_3_r

add check-gateway=ping distance=1 gateway=10.0.0.1 pref-src=\

10.0.0.4 routing-mark=chihpih_4_r

 

Теперь когда сервер хочет лезть в интернет, его маркируют и отправляют от заданного адреса по роутингу отличному от дефаулта. После всех настроек, можете проверить это зайдя на любой сайт с определением IP, что-то вроде internet.ya.ru . Надеюсь вы не подумали, что 10.0.0.0 реальная сеть ? :)

Спасибо Виталику, за то что копался в интернете и то же пытался разрешить эту проблему (пусть и странным способом ;) ).