URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 4347
[ Назад ]

Исходное сообщение
"iptables + 3 канала"

Отправлено western_union , 08-Сен-09 17:38 
Приветствую всех.
Задача такая

есть шлюз с 2 провайдерами и локальной сетью

на одном канале ppp0 и eth0, и eth1 для второго прова
требуется чтобы с внешки при подключении на 5555 порт все попадали на хост внутри сети.
А вся внутрисеть вида 192.168.1.1/24 натилась на ppp0

т.е. 1) пробросить порт X.X.X.X:5555 (eth0) на хост_внутрисети:5555
2)внутрисеть 192.168.1.1/24->ppp0
3)пока канал 2 прова не рассматриваем - он как резервный

текущая конфигурация только 2 задачу решает, но с внешки порт 5555 виден как закрытый, т.е. ничего не слушается(маппинг не срабатывает)

пробовал сделать как в статье http://www.opennet.me/openforum/vsluhforumID6/19056.html#0
остается все также - внутрисеть нормально уходит в интернет - а с внешки порт закрыт

test:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.1(pptp-server_ip) 0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
подсеть_eth0  0.0.0.0         255.255.255.255 UH    0      0        0 eth0
real_ip_pptp_server   Gateway_eth0  255.255.255.255 UGH   0      0        0 eth0
подсеть_eth0  0.0.0.0         255.255.255.240 U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0
0.0.0.0         Gateway_eth0  0.0.0.0         UG    0      0        0 eth0

как это лучше реализовать - можно ли простым правилами iptables или настройкой маршрутов. маркировкой пакетов?


Содержание

Сообщения в этом обсуждении
"iptables + 3 канала"
Отправлено Andrey Mitrofanov , 09-Сен-09 10:28 
>т.е. 1) пробросить порт X.X.X.X:5555 (eth0) на хост_внутрисети:5555

google.ru + iptables port-forward site:opennet.ru/openforum

===
Читайте также главы из книги "Портовый форвардинг, как он ест", того же автора:
http:/openforum/vsluhforumID10/3591.html#4
http:/openforum/vsluhforumID10/3717.html#6
===
Посмотрите в последней ссылке - простейшие "прокси" для форварда портов.
xinetd это тоже умеет, говорят.
* В iptables для прокси-приложений нужно открывать порты для соединений на _шлюз_ (цепочки INPUT/OUTPUT, NAT не нужен).

===
Чего ещё может не хватать:
http:/openforum/vsluhforumID13/413.html#3
(SNAT не всегда нужен.)
===
Если горит сделать iptables-ами, то "учиться и искать, найти и перепрятать".
Внимательно изучить _пути_ прохождения пакетов через роутер (и НАТ в частности) обратить внимание, что в -t NAT переписываются адреса (в PREROUTING - места назначения (=DNAT), в POSTROUTING - "исходящий" адрес соединения (=SNAT)), а между ними ещё нужно разрешающее правило в -t FILTER, вызываемое из цепочки FORWARD.  И да, порядок прохождения таблиц (в iptables tutorial кратинка есть - очень способствует :) ) важен: в частности пакет проходит FORWARD после DNAT и до SNAT = адрес назначения "новый", а источника - ещё не изменённый. (Ма-а-аленький нюанс: в -t NAT попадает только первый пакет соединения, через -t FILTER идут все.)

Кроме того, для представления соединения внутрь локалки вариантов два: со SNAT-ом и без него. Во втором случае внутрений сервер "увидит" внешние адреса клиентов, и при этом на нём нужно убедиться, что это работает (настроить роутинг).

sysctl ip_forward у Вас уже включён. (И да, без него заклинания тож не заработают.)

>3)пока канал 2 прова не рассматриваем - он как резервный
>пробовал сделать как в статье

Если Вы не рассматриваете работу с двумя провайдерами _одновременно_, policy routing из этой и продобных статей (про "два провайдера" --> http:/tips/info/1651.shtml ) вроде как не нужен.