Всем привет.
Есть сервер 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. Помогите пожалуйста
iptables DNAT 2 провайдера (маршрутизация)
Модераторы: SLEDopit, Модераторы разделов
-
Bizdelnick
- Модератор
- Сообщения: 21521
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: iptables DNAT 2 провайдера
Начнём с простого: форвардинг включить не забыли?
cat /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/conf/eth*/forwarding
cat /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/conf/eth*/forwarding
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: iptables DNAT 2 провайдера
Спасибо за ответ. Форвардинг включен (вывод - единицы). В противном случае не работал бы проброс через провайдер prov. А через него работает ок.Bizdelnick писал(а): ↑22.10.2014 12:13Начнём с простого: форвардинг включить не забыли?
cat /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/conf/eth*/forwarding
Опережая вопрос про iptables FORWARD: правило по умолчанию ACCEPT, правил в цепочке нет.
-
Bizdelnick
- Модератор
- Сообщения: 21521
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: iptables DNAT 2 провайдера
Да, видимо, тут всё не так-то просто. Насколько я понимаю, надо маркировать ответные пакеты, отлавливая их через conntrack (вроде как для этого нужен --ctorigdst), хотя могу и соврать - я подобного не делал.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: iptables DNAT 2 провайдера
С ответных пакетов маркировки слетают.
Необходимо, чтобы проброс (DNAT) работал для обоих провайдеров. То есть одновременно могут быть коннекты на спрятанный за шлюзом сервис через оба провайдера. И тогда шлюз должен понимать (помнить), какие приходящие на его интерфейс внутренней сети ответные пакеты через какой првайдер (через какую таблицу маршрутизации в моём случае) отправлять. А как это сделать - мне пока не представляется понятным
Необходимо, чтобы проброс (DNAT) работал для обоих провайдеров. То есть одновременно могут быть коннекты на спрятанный за шлюзом сервис через оба провайдера. И тогда шлюз должен понимать (помнить), какие приходящие на его интерфейс внутренней сети ответные пакеты через какой првайдер (через какую таблицу маршрутизации в моём случае) отправлять. А как это сделать - мне пока не представляется понятным
-
Bizdelnick
- Модератор
- Сообщения: 21521
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: iptables DNAT 2 провайдера
Вы меня, похоже, не поняли. Отслеживанием соединения должен заниматься conntrack, и с его помощью надо отлавливать и маркировать пакеты, идущие из локалки в ответ на запрос из внешней сети. И после этого в соответствии с маркировкой они должны отправляться тем или иным путём.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: iptables DNAT 2 провайдера
Как это сделать не понимаю. Может хоть направите в какую сторону копать?Bizdelnick писал(а): ↑23.10.2014 22:07Вы меня, похоже, не поняли. Отслеживанием соединения должен заниматься conntrack, и с его помощью надо отлавливать и маркировать пакеты, идущие из локалки в ответ на запрос из внешней сети. И после этого в соответствии с маркировкой они должны отправляться тем или иным путём.
-
Bizdelnick
- Модератор
- Сообщения: 21521
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: iptables DNAT 2 провайдера
Говорю ж - не делал я такого. А все ключевые слова для поиска вроде были упомянуты. Находится по ним, например, такое:
http://habrahabr.ru/post/117620/
http://habrahabr.ru/post/117620/
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |