НЕСКОЛЬКО БЕЛЫХ IP НА ОДНОМ WAN
Возникла задача — провайдер выдал целую подсеть белых адресов. Необходимо за 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 реальная сеть ? :)