Добрый день!Стоит задача организовать связь между клиентами, разрешив работу только определенных сервисов.
Поднял сервер 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
>Теперь стоит задача отфильтровать на сервере прохождение пакетов между клиентами только по
>определенным портам.
>И тут засада - на tap0 интерфейсе видны только пакеты, идущие от
>клиента на сервер vpn. А пакеты между клиентами в незашифрованном виде
>невидны нигде.
>
>Вопрос - это кривизна настройки или так и должно быть, и нет
>вариантов для выполнения фильтрации ?Поднятие дополнительного loopback интерфейса не поможет?
>
>Поднятие дополнительного loopback интерфейса не поможет?Незнаю.
Что бы проверить нужно понять - как заставить межабонентский трафик ходить через этот дополнительный loopback интерфейс ?
>>
>>Поднятие дополнительного loopback интерфейса не поможет?
>
>Незнаю.
>Что бы проверить нужно понять - как заставить межабонентский трафик ходить через
>этот дополнительный loopback интерфейс ?Policy Routing использовать.
>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.
>Мне как раз и нужна эта директива + фильтрация этого трафика.#grep bin /etc/openvpn/server.conf
learn-address /etc/openvpn/bin/ovpnfwгде learn-address - это директива какой скрипт запускать при подключении/отключении клиента.
/etc/openvpn/bin/ovpnfw - самписный скрипт на Perl, который прописывает/удаляет правила iptables при подключении/отключении каждого клиента в соответствие с конфигурацией для каждого клиента.
Поскольку сервер у меня не кошерный и работает из под рута, то проблем с редактированием "табличек" не возникает. Сервис крутится уже больше 2 лет.
Чем вам не нравится такое решение?
>Чем вам не нравится такое решение?Правила слушают на интерфейсе ethX ?
Но там пакеты-то шифрованные! Как Вы внутрь него "залезете" что бы запретить, например весь TCP ?
>>Чем вам не нравится такое решение?
>
>Правила слушают на интерфейсе ethX ?
>Но там пакеты-то шифрованные! Как Вы внутрь него "залезете" что бы запретить,
>например весь TCP ?нет, правила фильтруют на интерфейсе tun0 (можно и на tap0). Как вы сами справедливо заметили, фильтровать на eth0 трафик снаружи туннеля есть бессмыслица.
Я не совсем понял, каким это образом часть пакетов не видна на интерфейсе tap0?
у меня на tun0 все пакеты (входящие/исходящие) tcpdump видит как обычно.
Вы пытаетесь сделать отдельные шифрованные сети для клиентов в пространстве одной локалки или просто организуете связь между группами людей подключающихся к вашему серверу с любой точки?
>просто организуете связь между группами людей подключающихся к вашему серверу
>с любой точки?Именно.
Одна L2 сеть для всех клиентов. Никакого роутинга из/в эту сеть с других подсетей нет.
Поэтому и пакеты идущие от одного клиента к другому, НЕ попадают на tap интерфейс.
>
>>просто организуете связь между группами людей подключающихся к вашему серверу
>>с любой точки?
>
>Именно.
>Одна L2 сеть для всех клиентов. Никакого роутинга из/в эту сеть с
>других подсетей нет.
>Поэтому и пакеты идущие от одного клиента к другому, НЕ попадают на
>tap интерфейс.Вопрос в том, почему они не попадают туда?
Я мог бы понять ситуацию, когда клиенты существуют в одной локалке. тогда пакеты пойдут напрямую между ними.
Если же люди физически не находятся в одной сети, то проблема скорее в маршрутизациискинь кусок конфига, который устанавливает клиентам маршруты (и к нему бы желательно схему подключения с примерами ip адресов)
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.
>[оверквотинг удален]
>И тут засада - на 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. Попробуйте
>вариант, когда для кажного клиента на сервере поднимается процесс openvpn, тогда
>у Вас на сервере будет столько сетевых интефейсов tun/tap сколько клиентов,
>и соответственно пакетики будут маршрутизироваться между этими интерфейсами, где вы и
>сможете их фильтровать.Идея понятна, но в моей ситуации не приемлимая.
Потенциальных клиентов больше тысячи, кто из них и когда будет подключаться - неизвестно. Понятно, что всех сразу не вытянет, но думаю 100-150 сессий одновременных - потянет.
Кроме того, несколько серверов - значит разнесение их по портам, и разные конфиги на клиентах. И клиенты должны будут перебирать порты, пока не найдут свободный демон.Попробовал m0n0wall - там есть весь функционал, но именно в таком конфиге - не подойдет, ибо нам ненадо изменение дефолтного шлюза. Да и ограничение в 16 сессий не устраивает.
Спросил у них на форуме что за софт они используют для VPN сервера - ответят - попробую этот сервер поднять на сервере, с ним еще покопаться.
>[оверквотинг удален]
>И тут засада - на 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
>необходимо просто разрешить форвард клиентам, к примеру:
>iptables -I FORWARD -j ACCEPT -i ppp+ -o ppp+ -m multiport --dports
>111,222,3333,44444В OpenVPN нет интерфейсов ppp+
Ну в общем, если вдруг кому понадобиться решить похожую задачу - остановил свой выбор на m0n0wall. Делает все, что нужно, кроме пропуска броадкастов.
С нетерпением жду следующей версии pfSense, ибо там обещают фильтрацию OpenVPN Bridged траффика.
>Ну в общем, если вдруг кому понадобиться решить похожую задачу - остановил
>свой выбор на m0n0wall. Делает все, что нужно, кроме пропуска броадкастов.
>
>С нетерпением жду следующей версии pfSense, ибо там обещают фильтрацию OpenVPN Bridged
>траффика.И какой же софт там используется в качестве впн-сервера ?
>И какой же софт там используется в качестве впн-сервера ?Ответ на мой аналогичный вопрос - http://forum.m0n0.ch/index.php/topic,1826.0.html