Вопрос о пробросе порта через несколько роутеров

Обсуждение ПО и его настройки
Ответить
NgeMtu
Сообщения: 6
Зарегистрирован: 22 авг 2014, 09:50

Всем Привет.
Случилась ситуация что не могу решить 1 простую вроде вещь но уже несколько дней не получается.

Оборудование
1 роутер ip 10.10.10.1 + внутренний ip 192.168.0.254
за первым роутером стоит веб сервер 192.168.0.100
2 роутер Ip 20.20.20.1
+ поднят ipip тунель
1 роутер 10.255.0.1
2 роутер 10.255.0.2
в роутах все пути прописаны и мангл указан и pref source ну и маскарад разумеется
в 1м роутере проброшен 80 порт и всё отлично. Если захожу на 80 через внешний ip и порт то вебсервер определяет мой внешний ip откуда я подключаюсь.
траф веб сервера красится манглом чтобы распределять куда отвечать

Но вот пробросил я на 2м роутере тоже 80й порт сразу на 192.168.0.100
Прогрузка идёт и всё отлично.... НО веб сервер внешний ip определяет внутренний Ip роутера тоесть 192.168.0.254

Как мне пробросить пакеты поступающие на 2й роутер через тунель к первому роутеру до веб сервера и чтобы вебсервер видел внешний ip того кто подключается а не внутренний локальный роутера.

Буду благодарен за помощь разобраться в текущей схеме или создать новую но используя тотже тунель ipip


xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

На 1м роутере по всей видимости маскарадинг слишком широко работает.
Настройки NATа с него покажите.


Telegram: @thexvo
NgeMtu
Сообщения: 6
Зарегистрирован: 22 авг 2014, 09:50

xvo писал(а): 08 окт 2018, 14:32 На 1м роутере по всей видимости маскарадинг слишком широко работает.
Настройки NATа с него покажите.
Возможно.
0 chain=srcnat action=masquerade out-interface=ether1 log=no log-prefix=""
1 chain=srcnat action=masquerade out-interface=9116

ether1= WAN
9116=ipip

но еще и мангл стоит с роутами
0 chain=prerouting action=mark-routing new-routing-mark=9116 passthrough=yes
src-address=192.168.0.100 log=no log-prefix="



Изображение


xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

NgeMtu писал(а): 09 окт 2018, 04:13
xvo писал(а): 08 окт 2018, 14:32 На 1м роутере по всей видимости маскарадинг слишком широко работает.
Настройки NATа с него покажите.
Возможно.
0 chain=srcnat action=masquerade out-interface=ether1 log=no log-prefix=""
1 chain=srcnat action=masquerade out-interface=9116

ether1= WAN
9116=ipip

но еще и мангл стоит с роутами
0 chain=prerouting action=mark-routing new-routing-mark=9116 passthrough=yes
src-address=192.168.0.100 log=no log-prefix="



Изображение
1) Зачем маскарадить все уходящее в туннель? Получается, что на том конце туннеля, на роутере 2 все видят только туннельный адрес роутера1.
Если аналогичная настройка есть на роутере2, то уже как минимум сервер будет знать только о существовании роутера2, но не того, что за ним.
Хотя это и не объясняет, почему он видит адрес своего же роутера1 в качестве источника.
Если правильно прописаны маршруты на удалённые подсети на обоих роутерах, то все должно работать и без маскарадинга.

2) Мангл + маршрут по логике должен отправлять весь траффик от сервера в туннель, т.е. буквально весь. Это так и задумано? И оно работает?


Telegram: @thexvo
xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

В итоге, чтобы все это работало между подсетями, и кроме этого ещё был доступ на сервер и из WAN роутера2, надо:
- убрать ненужные маскарадинги.
- переделать мангл на то, что должно уходить во вне через WAN роутера2:
мангл должен метить соединения входящие из туннеля и идущие на сервер, и только на пакеты с этим connection-mark идущие обратно от сервера, уже вешать routing-mark на маршрут в туннель.


Telegram: @thexvo
NgeMtu
Сообщения: 6
Зарегистрирован: 22 авг 2014, 09:50

Да весь траф идет через удаленный роутер и так работает.
Но добиться того чтобы светился Ip клиента я не смог.

А можно поконкретнее пжлст про настройку схемы предложенной вами?


xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

NgeMtu писал(а): 15 окт 2018, 05:30 А можно поконкретнее пжлст про настройку схемы предложенной вами?
Насколько конкретнее? :)

Если по шагам, примерно так:

0) Предполагается, что маршрутизация на обоих роутера настроена и каждый знает, где что находится в сетях другого.

1) Настраиваете NAT на обоих маршрутизаторах таким образом, чтобы маскарадинг работал только во внешнюю сеть (out-interface=wan-интерфейс).
1*) В идеале, если внешние адреса белые и статические (а я понимаю, у вас именно такой случай), то лучше вообще action=masquerade заменить на action=src-nat на соответственные внешние адреса.

2) Дальше, проброс портов на сервер на обоих маршрутизаторах (to-addresses=внутренний-адрес-сервера)
2*) Разрешить все это в firewall'ах.

3) Теперь надо на маршрутизаторе1 пометить новые соединения (connection-state=new) которые выходят из туннеля (in-interface=туннель) и предназначен серверу (dst-address=внутренний-адрес-сервера) - action=mark-connection new-connection-mark=какая-то-метка1. Цепочка chain=forward.

4) Дальше на, что помечено по пункту (3) (connection-mark=какая-то-метка1) в случае если, траффик идет в обратном направлении (src-address=внутренний-адрес-сервера), надо навешивать метку маршрута (action=mark-routing), чтобы ответы сервера улетали туда, откуда прилетели - в туннель: new-routing-mark=метка-маршрута-в-туннель. Цепочка chain=prerouting.

5) И последнее - надо добавить маршрут для траффика с меткой routing-mark=метка-маршрута-в-туннель на дальний конец туннеля (gateway=туннельный-адрес-маршрутизатора2).

Вроде бы как-то так.


Telegram: @thexvo
Ответить