LINUX.ORG.RU
ФорумAdmin

подскажите правило для iptables для форварда нужных пакетов

 , ,


0

1

есть сервер на нем 3 ТАП адаптера, которые подключены к трем ВПН сеткам.

на севрере нужные локальные сети рутятся на нужные ВПН сетки через:

iptables -A POSTROUTING -t nat -s 192.168.x.x -o tapN -j MASQUERADE

задача: на этомже сервере поднял сокс сервис, и хочу чтобы его разные порты, рутили трафик через разные ВПНы.

1.2.3.4:80 -> TAP1
1.2.3.4:81 -> TAP2
1.2.3.4:82 -> TAP3

как это сделать через iptables?



Последнее исправление: x77cc33x (всего исправлений: 1)

Нафига нужен сокс если работает маршрутизация?

Я бы понял тебя, если бы эти 3 впн-а смотрели бы в мир, а у тебя от ведут в ограниченные сети.

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

может я не верно выразился, но из каждой ВПН сетки есть выход в МИР и у каждого выхода свой внешний паблик ИП. сейчас это возможно только для клиентов которые висят на внутренних интерфейсах сервера и они рутятся как раз через:

iptables -A POSTROUTING -t nat -s 192.168.x.x -o tapN -j MASQUERADE
задача же, что также и через СОКС людям разрешять менять внешний ИП.

подключился к нужному порту через сокс - вышел под нужным ИП в МИР.

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

a policy-routing уже настроен ?

Запустить 3 sock прокси, каждый привязанный к своему интерфейсу.

Но без policy-routing оно работать не будет.

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от vel

поставил 3сокс, указал ИП ТАПов в -external параметр, но не работает.

счас policy-routing прописан для текущих локальных сетей. каждая добавляется в нужную таблицу и у этой таблицы выставляется нужный гейт (ипак ТАПа).

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

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

Если external сокс-а привязан к адресу tap-а то ничего дополнительно прописывать не нужно.

но как туда вписать сокс в данном случае? у него же один ИП - разные порты только.

а зачем его куда-то вписывать ? Этот адрес должен быть доступен клиентам.

Кроме разных таблиц нужны еще и правила выбирающие нужную таблицу маршрутизации.

Статей на тему как настроить доступ в инет через двух провайдеров дофига.

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

я вроде написал, что есть правила которые заворачивают нужные сети в таблицу. и есть правило, которое выставляет для нужной таблицы - нужный гейт + iptables MASQUERADE, что выше. и все прекрасно работает, но только для тех людей, который сидят на внутренний интерфейсах сервера.

но вопрос у меня в другом, как мне завернуть трафик идущий именно с сокса. просто прописав адреса тапов в 3прокси - не работает, траф идет не через впн а напрямую с сервера.

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

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

Нужно привязать все исходящие соединения с сокса к адресу нужного тап-а. Судя по доке - это опция "-e"

Другой способ - запускать соксы от разных uid, маркировать пакеты по uid через iptables/owner и добавить правила по fwmark

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

Если бы 3proxy умел сам маркировать сокет через setsockopt(SO_MARK) - то и проблемы небыло.

IMHO - подправить код для маркировки сокета - 5 минут.

PS 3proxy написан плохо - не используется getopt, а используется свой кастрированный парсер параметров который не понимает "-e IP" - только "-eIP" :(

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

да счас буду пробовать + еще как вариант думал, на три разных ИП повесить, и там уже по ипаку заворачивать как обычно.

x77cc33x
() автор топика
Ответ на: комментарий от vel

получается одной коммандой я помечаю пакеты:

iptables -t mangle -A OUTPUT -m owner --uid-owner user1 -j MARK --set-mark 1

второй отправляю их в нужную таблицу:

ip rule add fwmark 0x1 table ROUTE1_TABLE

но чето не работает :( коннект висит и все. есть мысли? нужно еще что то добавит в:

iptables -A POSTROUTING -t nat -s 192.168.x.x -o tapN -j MASQUERADE

чтобы заработало?

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

«ip rule add fwmark 0x1 table ROUTE1_TABLE»

Посмотри где это правило оказалось. Если оно оказалось в конце, то до него просто могли не дойти. Я бы эти правила ставил после «0: from all lookup local»

А счетчик в iptables на owner не 0 ?

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от x77cc33x

понял - счетчик не ноль. те кол-во пакетов и байтов растет, если через сокс пытаться подключиться.

видимо упирается гдето еще.

также отключил покачто

net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0

на всякий случай.

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

гм. помнится с rp_filter=0 были проблемы - в старых ядрах оно работало как надо, а в новых - нет.

я бы попробовал с rp_filter=2 и не забудь кеш маршрутов очистить (echo 1 > /proc/sys/net/ipv4/route/flush)

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

попробовал - тоже самое. блин странно - по всей логике должно то работать.

x77cc33x
() автор топика
Ответ на: комментарий от vel

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

x77cc33x
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.