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

Исходное сообщение
"openvpn bridge фильтрация между клиентами"

Отправлено Susanin_ , 28-Мрт-08 15:40 
Добрый день!

Стоит задача организовать связь между клиентами, разрешив работу только определенных сервисов.
Поднял сервер openvpn, создан интерфейс tap0, все настроил.
Клиенты цепляються, с помощью параметра client-to-client клиенты полностью видят друг друга.
С самого сервера vpn-клиенты никуда дальше не выходят. Т.е. с помощью vpn мы лишь объединяем клиентов в l2 сегмент.
Теперь стоит задача отфильтровать на сервере прохождение пакетов между клиентами только по определенным портам.
И тут засада - на tap0 интерфейсе видны только пакеты, идущие от клиента на сервер vpn. А пакеты между клиентами в незашифрованном виде невидны нигде.

Вопрос - это кривизна настройки или так и должно быть, и нет вариантов для выполнения фильтрации ?

Система - Centos 5.1
Linux 2.6.18-53.1.14.el5
openvpn-2.0.9-1.el5.rf


Содержание

Сообщения в этом обсуждении
"openvpn bridge фильтрация между клиентами"
Отправлено DN , 28-Мрт-08 16:44 

>Теперь стоит задача отфильтровать на сервере прохождение пакетов между клиентами только по
>определенным портам.
>И тут засада - на tap0 интерфейсе видны только пакеты, идущие от
>клиента на сервер vpn. А пакеты между клиентами в незашифрованном виде
>невидны нигде.
>
>Вопрос - это кривизна настройки или так и должно быть, и нет
>вариантов для выполнения фильтрации ?

Поднятие дополнительного loopback интерфейса не поможет?


"openvpn bridge фильтрация между клиентами"
Отправлено Susanin_ , 28-Мрт-08 17:17 
>
>Поднятие дополнительного loopback интерфейса не поможет?

Незнаю.
Что бы проверить нужно понять - как заставить межабонентский трафик ходить через этот дополнительный loopback  интерфейс ?


"openvpn bridge фильтрация между клиентами"
Отправлено DN , 28-Мрт-08 20:08 
>>
>>Поднятие дополнительного loopback интерфейса не поможет?
>
>Незнаю.
>Что бы проверить нужно понять - как заставить межабонентский трафик ходить через
>этот дополнительный loopback  интерфейс ?

Policy Routing использовать.



"openvpn bridge фильтрация между клиентами"
Отправлено Susanin_ , 31-Мрт-08 13:16 
>http://openvpn.net/index.php/documentation/howto.html
>Uncomment out the client-to-client directive if you would like connecting clients to
>be able to reach each other over the VPN. By default,
>clients will only be able to reach the server.

Мне как раз и нужна эта директива + фильтрация этого трафика.

>Policy Routing использовать.

Все выходные провел в этой документации.
Но данный способ здесь не применим.
Суть в том, что межклиентское взаимодействие осуществляется "внутри" демона openvpn. Т.е. прохождение пакетов возможно и при состоянии интерфейса tap0 в down. При этом никаких строк в таблице роутинга для vpn-ких IP нет, соотвественно и Policy Routing использовать не получается.
Пакеты выходят в стек TCP/IP сервера только тогда, когда они предназначены для других подсетей. Т.е. когда VPN-клиент хочет выйти в локальную сеть, подключенную к VPN-серверу. Вот тогда эти пакеты видны снифером на интерфейсе tap0 и их можно фильтровать и делать все что угодно.

Первый раз столкнулся с тем, что дистриб на linux проигрывает win*+ком. программа по сетевым позициям.
Тот-же kerio winroute firewall позволяет осуществлять фильтрацию трафика vpn client <--> vpn client.


"openvpn bridge фильтрация между клиентами"
Отправлено DogEater , 04-Апр-08 13:26 
>Мне как раз и нужна эта директива + фильтрация этого трафика.

#grep bin /etc/openvpn/server.conf
learn-address /etc/openvpn/bin/ovpnfw

где learn-address - это директива какой скрипт запускать при подключении/отключении клиента.
/etc/openvpn/bin/ovpnfw - самписный скрипт на Perl, который прописывает/удаляет правила iptables при подключении/отключении каждого клиента в соответствие с конфигурацией для каждого клиента.
Поскольку сервер у меня не кошерный и работает из под рута, то проблем с редактированием "табличек" не возникает. Сервис крутится уже больше 2 лет.
Чем вам не нравится такое решение?


"openvpn bridge фильтрация между клиентами"
Отправлено Susanin_ , 04-Апр-08 14:55 
>Чем вам не нравится такое решение?

Правила слушают на интерфейсе ethX ?
Но там пакеты-то шифрованные! Как Вы внутрь него "залезете" что бы запретить, например весь TCP ?


"openvpn bridge фильтрация между клиентами"
Отправлено DogEater , 05-Апр-08 16:05 
>>Чем вам не нравится такое решение?
>
>Правила слушают на интерфейсе ethX ?
>Но там пакеты-то шифрованные! Как Вы внутрь него "залезете" что бы запретить,
>например весь TCP ?

нет, правила фильтруют на интерфейсе tun0 (можно и на tap0). Как вы сами справедливо заметили, фильтровать на eth0 трафик снаружи туннеля есть бессмыслица.

Я не совсем понял, каким это образом часть пакетов не видна на интерфейсе tap0?
у меня на tun0 все пакеты (входящие/исходящие) tcpdump видит как обычно.
Вы пытаетесь сделать отдельные шифрованные сети для клиентов в пространстве одной локалки или просто организуете связь между группами людей подключающихся к вашему серверу с любой точки?


"openvpn bridge фильтрация между клиентами"
Отправлено Susanin_ , 06-Апр-08 11:14 

>просто организуете связь между группами людей подключающихся к вашему серверу
>с любой точки?

Именно.
Одна L2 сеть для всех клиентов. Никакого роутинга из/в эту сеть с других подсетей нет.
Поэтому и пакеты идущие от одного клиента к другому, НЕ попадают на tap интерфейс.


"openvpn bridge фильтрация между клиентами"
Отправлено DogEater , 07-Апр-08 22:16 
>
>>просто организуете связь между группами людей подключающихся к вашему серверу
>>с любой точки?
>
>Именно.
>Одна L2 сеть для всех клиентов. Никакого роутинга из/в эту сеть с
>других подсетей нет.
>Поэтому и пакеты идущие от одного клиента к другому, НЕ попадают на
>tap интерфейс.

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

скинь кусок конфига, который устанавливает клиентам маршруты (и к нему бы желательно схему подключения с примерами ip адресов)


"openvpn bridge фильтрация между клиентами"
Отправлено DogEater , 29-Мрт-08 22:32 
http://openvpn.net/index.php/documentation/howto.html
Uncomment out the client-to-client directive if you would like connecting clients to be able to reach each other over the VPN. By default, clients will only be able to reach the server.



"openvpn bridge фильтрация между клиентами"
Отправлено S.Listopad , 01-Апр-08 09:39 
>[оверквотинг удален]
>И тут засада - на tap0 интерфейсе видны только пакеты, идущие от
>клиента на сервер vpn. А пакеты между клиентами в незашифрованном виде
>невидны нигде.
>
>Вопрос - это кривизна настройки или так и должно быть, и нет
>вариантов для выполнения фильтрации ?
>
>Система - Centos 5.1
>Linux 2.6.18-53.1.14.el5
>openvpn-2.0.9-1.el5.rf

На сколько я понял на сервере запущен всего один процесс openvpn. Попробуйте вариант, когда для кажного клиента на сервере поднимается процесс openvpn, тогда у Вас на сервере будет столько сетевых интефейсов tun/tap сколько клиентов, и соответственно пакетики будут маршрутизироваться между этими интерфейсами, где вы и сможете их фильтровать.


"openvpn bridge фильтрация между клиентами"
Отправлено Susanin_ , 03-Апр-08 16:51 
>На сколько я понял на сервере запущен всего один процесс openvpn. Попробуйте
>вариант, когда для кажного клиента на сервере поднимается процесс openvpn, тогда
>у Вас на сервере будет столько сетевых интефейсов tun/tap сколько клиентов,
>и соответственно пакетики будут маршрутизироваться между этими интерфейсами, где вы и
>сможете их фильтровать.

Идея понятна, но в моей ситуации не приемлимая.
Потенциальных клиентов больше тысячи, кто из них и когда будет подключаться - неизвестно. Понятно, что всех сразу не вытянет, но думаю 100-150 сессий одновременных - потянет.
Кроме того, несколько серверов - значит разнесение их по портам, и разные конфиги на клиентах. И клиенты должны будут перебирать порты, пока не найдут свободный демон.

Попробовал m0n0wall - там есть весь функционал, но именно в таком конфиге - не подойдет, ибо нам ненадо изменение дефолтного шлюза. Да и ограничение в 16 сессий не устраивает.
Спросил у них на форуме что за софт они используют для  VPN сервера - ответят - попробую этот сервер поднять на сервере, с ним еще покопаться.


"openvpn bridge фильтрация между клиентами"
Отправлено Fresh , 05-Апр-08 17:20 
>[оверквотинг удален]
>И тут засада - на tap0 интерфейсе видны только пакеты, идущие от
>клиента на сервер vpn. А пакеты между клиентами в незашифрованном виде
>невидны нигде.
>
>Вопрос - это кривизна настройки или так и должно быть, и нет
>вариантов для выполнения фильтрации ?
>
>Система - Centos 5.1
>Linux 2.6.18-53.1.14.el5
>openvpn-2.0.9-1.el5.rf

необходимо просто разрешить форвард клиентам, к примеру:
iptables -I FORWARD -j ACCEPT -i ppp+ -o ppp+ -m multiport --dports 111,222,3333,44444


"openvpn bridge фильтрация между клиентами"
Отправлено Susanin_ , 06-Апр-08 11:15 
>необходимо просто разрешить форвард клиентам, к примеру:
>iptables -I FORWARD -j ACCEPT -i ppp+ -o ppp+ -m multiport --dports
>111,222,3333,44444

В OpenVPN нет интерфейсов ppp+


"openvpn bridge фильтрация между клиентами"
Отправлено Susanin_ , 18-Апр-08 19:01 
Ну в общем, если вдруг кому понадобиться решить похожую задачу - остановил свой выбор на m0n0wall. Делает все, что нужно, кроме пропуска броадкастов.
С нетерпением жду следующей версии pfSense, ибо там обещают фильтрацию OpenVPN Bridged траффика.

"openvpn bridge фильтрация между клиентами"
Отправлено PavelR , 20-Апр-08 06:53 
>Ну в общем, если вдруг кому понадобиться решить похожую задачу - остановил
>свой выбор на m0n0wall. Делает все, что нужно, кроме пропуска броадкастов.
>
>С нетерпением жду следующей версии pfSense, ибо там обещают фильтрацию OpenVPN Bridged
>траффика.

И какой же софт там используется в качестве впн-сервера ?


"openvpn bridge фильтрация между клиентами"
Отправлено Susanin_ , 20-Апр-08 13:08 
>И какой же софт там используется в качестве впн-сервера ?

Ответ на мой аналогичный вопрос - http://forum.m0n0.ch/index.php/topic,1826.0.html