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

/ip address
add address=195.210.173.98/27 comment=ChihPihNet interface=ether10 network=10.0.0.2
add address=195.210.173.98/27 comment=ChihPihNet interface=ether10 network=10.0.0.3
add address=195.210.173.98/27 comment=ChihPihNet interface=ether10 network=10.0.0.4
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 реальная сеть ? :)