iptables DNAT 2 провайдера (маршрутизация)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

pelmen
Сообщения: 1268
ОС: debian

iptables DNAT 2 провайдера

Сообщение pelmen »

Всем привет.
Есть сервер ubuntu server 14.04 lts
В него вставлены 2 провайдера и локалка. На одном сразу внешний ip, на втором внешний ip висит на железном роутере с настроенным пробросом портов на внутренний адрес сервера. На локалке 192.168.1.1
На сервере настроены правила маршрутизации с помощью iproute2:

ip ru ad from 10.0.0.200 table yota
ip ro ad default via 10.0.0.1 table yota
ip ru ad from 109.x.y.200 table prov
ip ro ad default via 109.x.y.1 table prov
ip ro ad default via 109.x.y.1

iptables настроен так:

*nat
-A POSTROUTING -o eth0 -j SNAT --to-source 109.x.y.200
-A POSTROUTING -o eth1 -j SNAT --to-source 10.0.0.200

Доступ к серверу по ssh через оба внешний адреса проходит успешно. Проблема начинается, когда мне нужен доступ не к самому серверу, а к сервису в локалке за сервером через провайдер yota. (через prov всё ок). За сервером в локалке находится сервис rdp

*nat
-A PREROUTING -d 109.x.y.200/32 -i eth0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.1.25:3389
-A PREROUTING -d 10.0.0.200/32 -i eth1 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.1.25:3389

Я вижу, что пакет запроса (SYN?) проходит успешно через yota. Насколько я понимаю, ответный пакет идёт через default gw (109.x.y.1), вместо того, чтобы идти через 10.0.0.1.
Думаю, что нужно составить правило ip ru. Помогите пожалуйста
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21521
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: iptables DNAT 2 провайдера

Сообщение Bizdelnick »

Начнём с простого: форвардинг включить не забыли?
cat /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/conf/eth*/forwarding
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: iptables DNAT 2 провайдера

Сообщение pelmen »

Bizdelnick писал(а):
22.10.2014 12:13
Начнём с простого: форвардинг включить не забыли?
cat /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/conf/eth*/forwarding
Спасибо за ответ. Форвардинг включен (вывод - единицы). В противном случае не работал бы проброс через провайдер prov. А через него работает ок.
Опережая вопрос про iptables FORWARD: правило по умолчанию ACCEPT, правил в цепочке нет.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21521
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: iptables DNAT 2 провайдера

Сообщение Bizdelnick »

Да, видимо, тут всё не так-то просто. Насколько я понимаю, надо маркировать ответные пакеты, отлавливая их через conntrack (вроде как для этого нужен --ctorigdst), хотя могу и соврать - я подобного не делал.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: iptables DNAT 2 провайдера

Сообщение pelmen »

С ответных пакетов маркировки слетают.
Необходимо, чтобы проброс (DNAT) работал для обоих провайдеров. То есть одновременно могут быть коннекты на спрятанный за шлюзом сервис через оба провайдера. И тогда шлюз должен понимать (помнить), какие приходящие на его интерфейс внутренней сети ответные пакеты через какой првайдер (через какую таблицу маршрутизации в моём случае) отправлять. А как это сделать - мне пока не представляется понятным
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21521
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: iptables DNAT 2 провайдера

Сообщение Bizdelnick »

Вы меня, похоже, не поняли. Отслеживанием соединения должен заниматься conntrack, и с его помощью надо отлавливать и маркировать пакеты, идущие из локалки в ответ на запрос из внешней сети. И после этого в соответствии с маркировкой они должны отправляться тем или иным путём.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: iptables DNAT 2 провайдера

Сообщение pelmen »

Bizdelnick писал(а):
23.10.2014 22:07
Вы меня, похоже, не поняли. Отслеживанием соединения должен заниматься conntrack, и с его помощью надо отлавливать и маркировать пакеты, идущие из локалки в ответ на запрос из внешней сети. И после этого в соответствии с маркировкой они должны отправляться тем или иным путём.
Как это сделать не понимаю. Может хоть направите в какую сторону копать?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21521
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: iptables DNAT 2 провайдера

Сообщение Bizdelnick »

Говорю ж - не делал я такого. А все ключевые слова для поиска вроде были упомянуты. Находится по ним, например, такое:
http://habrahabr.ru/post/117620/
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: