The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"OpenVPN: привязка ответных пакетов сервера к интерфейсу"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT)
Изначальное сообщение [ Отслеживать ]

"OpenVPN: привязка ответных пакетов сервера к интерфейсу"  +/
Сообщение от ws (ok) on 15-Янв-10, 15:52 
Помогите разобраться.

Сервер, на котором у меня установлен OpenVPN 2.1 (UDP), имеет несколько сетевых интерфейсов. OpenVPN запускается без жесткой привязке к интерфейсу (нет комады local).

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

Как можно указать OpenVpn-серверу отвечать клиенту с IP-адреса на который пришел пакет от клиента?
Запуск отдельных OpenVPN-серверов для каждого интерфейса решает эту проблему, но тогда для каждого из них нужна отдельная сетка в директиве server, что меня не устраивает.

server:
port 1194
bind
proto udp
dev tun0
tun-mtu 1500
mssfix
comp-lzo
server 10.10.0.0 255.255.255.0
auth md5
cipher BF-CBC
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem
tls-server
tls-auth keys/ta.key 0
tls-timeout 120

client:
client
remote ip-vpn 1194 udp
resolv-retry infinite
dev tun
tun-mtu 1500
mssfix
comp-lzo
auth MD5
cipher BF-CBC
tls-client
tls-auth keys/ta.key 1
ns-cert-type server
pkcs12 keys/client.p12


Еще ворос: возможно ли поднять OpenVPN-сервер на одном демоне с одновременной поддержкой протокола UDP и TCP? Мне нужно, что бы было одно общее динамически назначаемое сетевое пространство (команда server) без разбиений на подсетки.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "OpenVPN: привязка ответных пакетов сервера к интерфейсу"  +/
Сообщение от ALex_hha (ok) on 15-Янв-10, 16:38 
> Как можно указать OpenVpn-серверу отвечать клиенту с IP-адреса на который пришел пакет от клиента?

я решил это с помощью явной привязки к нужным интерфейсам.

В 2.1 вроде для этих целей появилась опция multihome кажется

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "OpenVPN: привязка ответных пакетов сервера к интерфейсу"  +/
Сообщение от ws (ok) on 15-Янв-10, 17:28 
>> Как можно указать OpenVpn-серверу отвечать клиенту с IP-адреса на который пришел пакет от клиента?
>
>я решил это с помощью явной привязки к нужным интерфейсам.

да это работает. Но не совсем то что нужно. Т.к. приходится дробить сетку на подсетки для каждого интерфейса...

>
>В 2.1 вроде для этих целей появилась опция multihome кажется

Вроде то, что нужно, но к сожалению она работает только под Linux. А у меня FreeBSD.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "OpenVPN: привязка ответных пакетов сервера к интерфейсу"  +/
Сообщение от tux (??) on 15-Янв-10, 17:59 
>[оверквотинг удален]
>>я решил это с помощью явной привязки к нужным интерфейсам.
>
>да это работает. Но не совсем то что нужно. Т.к. приходится дробить
>сетку на подсетки для каждого интерфейса...
>
>>
>>В 2.1 вроде для этих целей появилась опция multihome кажется
>
>Вроде то, что нужно, но к сожалению она работает только под Linux.
>А у меня FreeBSD.

не знаю как это сделать во фре но в лине это можн ореализовтаь через ip route
тоесть просто создаеться 2  доп таблицы маршрутизации(можно и одну правда)
и прописываються правила что с сорцовым адресом шлбюза в пакете таком то идти через такую таблицу, с сорцовым адресом шлюхза в пакете идти через другую таблицу, ну и соответственно пропистаь в таблицах дефотники и пути до нужных сетей
ip rule add from $IP_INET1 table Е1
ip rule add from $IP_INET2 table Е2
ip route add default via $GW_INET1 table Е1
ip route add default via $GW_INET2 table Е2
(ну и соотвественно маршруты до нужных сетей)

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "OpenVPN: привязка ответных пакетов сервера к интерфейсу"  +/
Сообщение от Pahanivo email(ok) on 15-Янв-10, 18:41 
попробуй fwd (форвард) в ipfw

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "OpenVPN: привязка ответных пакетов сервера к интерфейсу"  +/
Сообщение от ws (ok) on 15-Янв-10, 18:58 
>[оверквотинг удален]
>тоесть просто создаеться 2  доп таблицы маршрутизации(можно и одну правда)
>и прописываються правила что с сорцовым адресом шлбюза в пакете таком то
>идти через такую таблицу, с сорцовым адресом шлюхза в пакете идти
>через другую таблицу, ну и соответственно пропистаь в таблицах дефотники и
>пути до нужных сетей
>ip rule add from $IP_INET1 table Е1
>ip rule add from $IP_INET2 table Е2
>ip route add default via $GW_INET1 table Е1
>ip route add default via $GW_INET2 table Е2
>(ну и соотвественно маршруты до нужных сетей)

это работает в статике. А если не известно с какого ip клиент заходит.

Такое в BSD можно сделать через route-to в PF.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "OpenVPN: привязка ответных пакетов сервера к интерфейсу"  +/
Сообщение от ALex_hha (ok) on 15-Янв-10, 21:25 
>ip rule add from $IP_INET1 table Е1
>ip rule add from $IP_INET2 table Е2
>ip route add default via $GW_INET1 table Е1
>ip route add default via $GW_INET2 table Е2
>(ну и соотвественно маршруты до нужных сетей)

не будет это работать, уже проверял. По крайней мере в 2.1-rc17 не работало, правда тогда я не использовал multihome, может уже что поменялось в 2.1

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "OpenVPN: привязка ответных пакетов сервера к интерфейсу"  +/
Сообщение от tux (??) on 16-Янв-10, 00:14 
>>ip rule add from $IP_INET1 table Е1
>>ip rule add from $IP_INET2 table Е2
>>ip route add default via $GW_INET1 table Е1
>>ip route add default via $GW_INET2 table Е2
>>(ну и соотвественно маршруты до нужных сетей)
>
>не будет это работать, уже проверял. По крайней мере в 2.1-rc17 не
>работало, правда тогда я не использовал multihome, может уже что поменялось
>в 2.1

$IP_INET1
$IP_INET2 это ip вашего сервера у разных провайдеров!
вам побарабану с какого ипа стучиться клиент!
$GW_INET1
$GW_INET2 это соответственно дефолтные маршруты для каждого провайдера
не работает? в openvpn udp используеться?


Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "OpenVPN: привязка ответных пакетов сервера к интерфейсу"  +/
Сообщение от ALex_hha (ok) on 16-Янв-10, 15:00 
>[оверквотинг удален]
>>не будет это работать, уже проверял. По крайней мере в 2.1-rc17 не
>>работало, правда тогда я не использовал multihome, может уже что поменялось
>>в 2.1
>
>$IP_INET1
>$IP_INET2 это ip вашего сервера у разных провайдеров!
>вам побарабану с какого ипа стучиться клиент!
>$GW_INET1
>$GW_INET2 это соответственно дефолтные маршруты для каждого провайдера
>не работает?

НЕ РАБОТАЕТ!!!

> в openvpn udp используеться?

да, но проверял и на tcp

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "OpenVPN: привязка ответных пакетов сервера к интерфейсу"  +/
Сообщение от ALex_hha (ok) on 16-Янв-10, 15:03 
>[оверквотинг удален]
>>вам побарабану с какого ипа стучиться клиент!
>>$GW_INET1
>>$GW_INET2 это соответственно дефолтные маршруты для каждого провайдера
>>не работает?
>
>НЕ РАБОТАЕТ!!!
>
>> в openvpn udp используеться?
>
>да, но проверял и на tcp

Если интересно http://sourceforge.net/mailarchive/forum.php?thread_name=E1M...

тут я описывал эту проблему

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "OpenVPN: привязка ответных пакетов сервера к интерфейсу"  +/
Сообщение от ALex_hha (ok) on 22-Ноя-10, 12:39 
Проблема решается с помощью ключа multihome


Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "OpenVPN: привязка ответных пакетов сервера к интерфейсу"  +/
Сообщение от mahn0 (ok) on 16-Фев-11, 00:28 
> Проблема решается с помощью ключа multihome

Во freebsd не решается, ибо multihome не работает. Для себя нашел единственное решение в запуске нескольких серверов. Пара заметок на эту тему: http://www.mahno.su/freebsd/network/openvpn-tcp-udp

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "OpenVPN: привязка ответных пакетов сервера к интерфейсу"  +/
Сообщение от ws (ok) on 16-Фев-11, 02:08 
>> Проблема решается с помощью ключа multihome
> Во freebsd не решается, ибо multihome не работает. Для себя нашел единственное
> решение в запуске нескольких серверов. Пара заметок на эту тему: http://www.mahno.su/freebsd/network/openvpn-tcp-udp

И все таки не решен вопрос с:
>да это работает. Но не совсем то что нужно. Т.к. приходится дробить сетку на подсетки для каждого интерфейса...

https://www.opennet.ru/openforum/vsluhforumID1/87864.html#2

Внимательно читайте обсуждение - ваше решение уже давно найдено...

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "OpenVPN: привязка ответных пакетов сервера к интерфейсу"  +/
Сообщение от mahn0 (ok) on 16-Фев-11, 08:45 
>>> Проблема решается с помощью ключа multihome
>> Во freebsd не решается, ибо multihome не работает. Для себя нашел единственное
>> решение в запуске нескольких серверов. Пара заметок на эту тему: http://www.mahno.su/freebsd/network/openvpn-tcp-udp
> И все таки не решен вопрос с:
>>да это работает. Но не совсем то что нужно. Т.к. приходится дробить сетку на подсетки для каждого интерфейса...

Хм, а в чем необходимость именно одного общего пространства? У меня подсети для разных протоколов разные, но клиенты видят друг друга между ними.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "OpenVPN: привязка ответных пакетов сервера к интерфейсу"  +/
Сообщение от ws (ok) on 16-Фев-11, 11:37 
> Хм, а в чем необходимость именно одного общего пространства? У меня подсети
> для разных протоколов разные, но клиенты видят друг друга между ними.

Например:
- при большом количестве клиентов тяжело балансировать нагрузку между демонами - может возникнуть ситуация что количество адресов на одном из них исчерпается при свободных на другом. Брать с запасом не вариант - присутствует ограничение.
- отсутствия дополнительной записей о маршрутизации этих подсетей у клиента (сервер openvpn не выступает шлюзом по умолчанию)

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "OpenVPN: привязка ответных пакетов сервера к интерфейсу"  +/
Сообщение от mahn0 (ok) on 16-Фев-11, 11:49 
>> Хм, а в чем необходимость именно одного общего пространства? У меня подсети
>> для разных протоколов разные, но клиенты видят друг друга между ними.
> Например:
> - при большом количестве клиентов тяжело балансировать нагрузку между демонами - может
> возникнуть ситуация что количество адресов на одном из них исчерпается при
> свободных на другом. Брать с запасом не вариант - присутствует ограничение.
> - отсутствия дополнительной записей о маршрутизации этих подсетей у клиента (сервер openvpn
> не выступает шлюзом по умолчанию)

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

Единственное, что прикручивал сверху - в зависимости от условий, внешним скриптом динамически закрывал фаэрволом порт того или иного сервера от определенных внешних IP адресов, когда не нужно, чтобы к нему подключались клиенты.

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру