0 Список сравнения
0 Избранные товары
0
Страницы: 1
Маршрутизация в локалке через внешний ИП
 
Конфигурация полностью настроена через нат источника, локалка выходит во внешку, через нат назначения, со внешки пересылаются запросы на сервер. Но вот возникла ситуация, когда нужно локальному компьютеру обращаться на внешний адрес шлюза, с последующей переадресацией в локалку.

Имеем:
внутреннюю подсеть на шлюзе: 192.168.2.10/20
внешний ип на шлюзе: 123.123.123.123
внутренний сервер на котором висит служба: 192.168.2.1/20
клиента: 192.168.3.1/20
ну и допустим есть 80 порт который с 123.123.123.123 перенаправляется на 192.168.2.1.
Так вот если клиент с адреса 192.168.3.1 пытается стучаться на 123.123.123.123:80 то нат назначения подменяет ип назначения и стучится на 192.168.2.1:80, тот в свою очередь обрабатывает запрос и отсылает ответ, но по правилам маршрутизации (ведь ип источника то в локалке) пакет уходит не на шлюз, а напрямую, где само собой режется как "не запрашиваемый"

Какие могут быть варианты реализации подобной схемы? Сейчас пока единственное что придумал это подменять не только адрес назначения но и адрес источника, в итоге пакеты действительно доходят до сервера с ип шлюза, и туда же отсылается ответ, но от шлюза к клиенту похоже пакет не уходит.

Вот пример правил, которые пробовал забивать чтобы шло перенаправление:
Код
40   chain=dstnat action=dst-nat to-addresses=192.168.2.2 to-ports=2103 
     protocol=tcp in-interface=bonding_local dst-port=21030 

41   chain=srcnat action=src-nat to-addresses=192.168.2.10 to-ports=2103 
     protocol=tcp dst-address=192.168.2.2 dst-port=2103 
 
Цитата
ну и допустим есть 80 порт который с 123.123.123.123 перенаправляется на 192.168.2.1
А внешний локальный адрес какой ?
В приведенных примерах невижу внешний адрес и мапинг порта идет уже не на адрес сервера 192.168.2.1
http://wiki.mikrotik.com/wiki/Manual:IP/Firewall/NAT

Код
/ip firewall nat
add chain=srcnat action=masquerade out-interface=Public

add action=dst-nat chain=dstnat disabled=no dst-address=123.123.123.123 \
    dst-port=80 protocol=tcp to-addresses=192.168.2.1 to-ports=80

add action=src-nat chain=srcnat disabled=no protocol=tcp src-address=\
    192.168.2.1 src-port=80 to-addresses=123.123.123.123 to-ports=80


Public имя внешнего интерфейса
 
Не тот пример скопировал, давайте так чтобы не путаться.
Внешний ип 109.60.197.75 на интерфейсе ether05_like, порт для проброски 10000, внутренний сервер 192.168.2.2, параметры подсетей те же.
Место маскарадинга у меня был srcnat для хождения пакетов из локалки во внешку, важно ли это? ну в прочим и с маскарадингом так же работает.
Код
52   chain=srcnat action=masquerade out-interface=ether05_like 

54 X chain=srcnat action=src-nat to-addresses=109.60.197.75 out-interface=ether05_like 

58   chain=dstnat action=dst-nat to-addresses=192.168.2.2 to-ports=10000 protocol=tcp dst-address=109.60.197.75 dst-port=10000 

59   chain=srcnat action=src-nat to-addresses=109.60.197.75 to-ports=10000 protocol=tcp src-address=192.168.2.2 src-port=10000 

У последнего правила счетчик стоит на месте, и в такой конфигурации пакеты на сервер 192.168.2.2 приходят не от имени железки с микротиком, а от локального юзера, соответственно опять возвращаются напрямую и рубятся как не запрашиваемые (при запросе из внешки само собой всё работает)
А вот tcpdump на серваке
Код
10:20:29.912043 IP 192.168.3.1.50055 > 192.168.2.2.10000: S 2975664648:2975664648(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
10:20:29.912087 IP 192.168.2.2.10000 > 192.168.3.1.50055: S 2389703228:2389703228(0) ack 2975664649 win 5840 <mss 1460,nop,nop,sackOK,nop,wscale 6>

Видно что пакет запрашивался с 192.168.3.1 что в принципе не так в данной ситуации, так как в цепочке присутствует микротик: 192.168.3.1 -> 109.60.197.75 (192.168.2.10) -> 192.168.2.2
 
Цитата
А внешний локальный адрес какой ?

Диапазоны локальные внешние и внутренний не пересекаются ?
Попробуйте правила поднять на самый верх, выше masquerade
 
Помню, что была тема с таким же вопросом. Автор хочет сделать NAT LoopBack. С
 
alexnov66, не понял о каких "локальных внешних" диапазонах идет речь.
Есть только одна локальная сеть 192.168.0.0/20 в которой шлюз имеет IP 192.168.2.10, и один внешний IP адрес 109.60.197.75.
Перестановка правил эффекта не дает, что в принципе и правильно, дословно правило
"chain=srcnat action=src-nat to-addresses=109.60.197.75 to-ports=10000 protocol=tcp src-address=192.168.2.2 src-port=10000" звучит так: для всех пакетов пришедших с 192.168.2.2:10000 заменить адрес источника на 109.60.197.75.
Но таких пакетов просто нет, по той причине что они минуя железку идут напрямую через коммутатор в пределах одной подсети.
(Добавление)
Вроде заработало как надо, с двумя правилами:
Код
55   chain=dstnat action=dst-nat to-addresses=192.168.2.2 to-ports=10000 
     protocol=tcp dst-address=109.60.197.75 dst-port=10000 

56   chain=srcnat action=src-nat to-addresses=192.168.2.10 protocol=tcp 
     dst-address=192.168.2.2 dst-port=10000 
 
Цитата
, не понял о каких "локальных внешних" диапазонах идет речь.

Адрес 109.60.197.75 откуда берется
 
109.60.197.75 - собственный, единственный, внешний IP адрес, находящийся на интерфейсе ether05_like.
Но это в принципе уже не важно, сейчас всё настроено и работает.
 
del
Страницы: 1