LINUX.ORG.RU
ФорумAdmin

Проброс портов на резервном шлюзе.

 ,


0

3

Всем доброго времени суток, может быть то я туплю, но хочется уточнить. Есть две сервера на Ubuntu оба настроены как шлюз для выхода в инет, но так как ядро сети не умеет работать с двумя шлюзами по умолчанию постоянно шлюзом работает только один, а второй выполняет роль горячего резерва. Внутри сети стоит почтовик который пробросом портов выглядывает в интернет. Проброс портов делал так

iptables -t nat -A PREROUTING -d $EXT_IP -p tcp -m tcp --dport $EXT_PORT -j DNAT --to-destination $LAN_IP:$SRV_PORT
#iptables -t nat -A POSTROUTING -d $LAN_IP -p tcp -m tcp --dport $SRV_PORT -j SNAT --to-source $INT_IP
iptables -t nat -A OUTPUT -d $EXT_IP -p tcp -m tcp --dport $SRV_PORT -j DNAT --to-destination $LAN_IP
iptables -I FORWARD 1 -i $EXT_IF -o $INT_IF -d $LAN_IP -p tcp -m tcp --dport $SRV_PORT -j ACCEPT

И вот тут главная проблема. В таком виде с закомментированной строкой все работает на текущем дефаултном шлюзе, но совсем не работает на том который стоит в резерве. Если на резервном выполнить и вторую строку, то проброс порта начинает работать, но на почтовый сервер приходит IP шлюза, а не IP источника и почтовик начинает откидывать почту ругаясь на SPF что с его стороны логично.

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

Ответ на: комментарий от biglpfan

Squid работает в параллель, а сеть в теории переключается правилами приоритета на маршрутизаторе ядра сети. В теории потому как перевод был всего пару раз в тестовом режиме для попробовать. После пропадания линка на дефаултный шлюз роутер начал кидать пакета не шлюз с большим приоритетом.

wer_wolf ()
Ответ на: комментарий от Bootmen

А не проще вместо второго шлюза поставить почтовик?

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

wer_wolf ()

Я правильно понял. Вы хотите что бы почтарь принимал почту через оба шлюза?
Тогда варианты.
1. Вешаем на почтарь ещё один ip из локалки. Дальше в зависимости от того на какой ip прилетело маркируем соединение и в зависимости от марка отправляем ответ через соответствующий шлюз.
2. Почти тоже самое. На роутере2 днатим на другой порт. Например прилетает на 25, делаем dnat на 2525. Дальше на почтаре так же маркируем соединение и dnat с 2525 на 25.

anc ★★★★★ ()
Ответ на: комментарий от biglpfan

что значит «squid в параллель»?

А что выступает в роле шлюзов?

Шлюзы это машини с убунта сервер, на них поднят сквид, VPN и iptales. В параллель означает что работает два Сквида сразу, при открытии браузера отрабатывает скрипт автонастройки прокси и он по заданным правилам выбирает какого клиента на какой прокси отправить или вообще не отправлять на проксю а пустить трафик через nat на дефолтном шлюзе.

Я правильно понял. Вы хотите что бы почтарь принимал почту через оба шлюза?

Да все верно, именно этого и хочу добиться. Спасибо за идею.

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

wer_wolf ()
Ответ на: комментарий от anc

Как раз маскарад (или SNAT для исходящих в интернет) ему и надо. Проблему с почтой он сам себе создает закомментированным правилом (отчего и теряет адрес источника).

Полиси раутинг и два IP на почтовом сервер - да, это более-менее рабочее решение.

Nastishka ★★★★★ ()
Ответ на: комментарий от wer_wolf

а почему у вас на серверах прописан дефолтным шлюзом именно шлюз на убунте, а не «маршрутизатор ядра сети»? а на остальных серверах, если они в будущем появятся, тоже будете везде по несколько адресов прописывать и полиси роутинг делать?

biglpfan ()
Ответ на: комментарий от biglpfan

а почему у вас на серверах прописан дефолтным шлюзом именно шлюз на убунте

Дефолтный шлюз как раз и есть ядро сети и уже оно отправляет все что не знает кидает на один из убентовских серваков в зависимости от приоритета в таблице маршрутов. Но фактически весь трафик постоянно идет через первый шлюз(не умеет моё ядро балансить трафик), а второй работает в основном только на пользователей сквида.

wer_wolf ()
Ответ на: комментарий от Nastishka

Проблему с почтой он сам себе создает закомментированным правилом (отчего и теряет адрес источника).

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

wer_wolf ()
Ответ на: комментарий от biglpfan

так а в чем проблема тогда?

Проблема в том что когда почтовик даёт ответ на запрос от второго шлюза этот ответ идёт на ядро, а ядро его отправляет первому шлюзу ибо у этого маршрута вес меньше и он в приоритете.

wer_wolf ()