Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» OpenVPN

Автор: webanet
Дата сообщения: 16.11.2009 10:52

Update. Проблему решил вопрос закрыт
Автор: ibel001
Дата сообщения: 16.11.2009 11:15
Сборки OpenVPN с опцией ENABLE_PASSWORD_SAVE

OpenVPN 2.1 RC 13
OpenVPN 2.1 RC 20
OpenVPN 2.1.1 Final
Автор: vworld
Дата сообщения: 18.11.2009 06:50

Цитата:
http://www.lissyara.su/?id=1712

мануал при связке OpenVPN+OpenLDAP в моем же случае LDAP в AD 2008

Цитата:
P.S. в АД надо включить лдап-сервер. Думаю это будет самый простой метод.

включен и обращаться я могу сторонним клиентом LDAP к примеру ldapbrowser
проблема в том, что из этого клиента делаю поиск в LDAP - все ок, переносим этот код в openvpn-auth-ldap результат ответа совсем не тот, который ожидается....
Сложность еще в том, что другой админ рулит OpeenVPN и что там у него не получается я е знаю, просто просит дать такой запрос, который будет работать, а у меня работает, но в ldapbrowser
В голову ничего не приходит только как использовать такой VPN сервер у которого интеграция с AD по умолчанию...но к OpenVPN у меня больше доверия
Автор: sunset1985
Дата сообщения: 27.11.2009 16:07
Народ, такой вопрос, можно как либо настроить OpenVPN так, что бы клиенты между собой создавали прямой vpn-канал, а не так, что бы трафик между клиентам гонялся через сервер?

Автор: rain87
Дата сообщения: 27.11.2009 17:23
sunset1985
ну настроить п2п между клиентами можно, конечно, если у одного из них белый адрес. но если клиенты коннектятся к серверу, то трафик будет только через сервер, по другому никак
Автор: sunset1985
Дата сообщения: 27.11.2009 19:45
rain87
у меня примерно ~38 клиентов из ~40 имеют белый IP в интернете, все их нужно объединить в общую сеть, и желательно что бы трафик шел не через сервак. Аутентификация по сертификатам.


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


а как можно настроить p2p вариант на скажем более чем 10 машин??

в инете нагуглил как сделать p2p связку 1к1, сгенерировав секретный ключ и написав на каждом конфиг на канал между ними с вариантов p2p/ но если использовать такой метод то у меня получается что нужно делать на 40 машин где то по 40 конфигов на каждую + 40 секретных ключей... и если нужно добавить еще клиента то для всех машин писать дополнительные конфиги на новый клиент и ставить... это уже не удобство будет, а задротство...

как то можно сделать это автоматизировано ??
Автор: rain87
Дата сообщения: 28.11.2009 17:58
sunset1985
ну п2п само по себе и подразумевает подключение 1 к 1. имхо, никак не получится нормально сделать так как ты хочешь
Автор: sunset1985
Дата сообщения: 29.11.2009 10:49
rain87
угу, я просто надеялся на какие то автоматические методы или тулзы, если это все делать ручками, тогда становиться это не удобством, а задротсвом....
Автор: NLOss
Дата сообщения: 30.11.2009 11:42
Добрый день.
Есть у меня вопрос по поводу сети больше чем 128 клиентов.
Диапазон адресов от 10.10.1.1 до 10.10.1.254 и маска 255.255.255.0 . Что мне нужно что бы dhcp после того как израсходовал все адреса из сети 10.10.1.0 начал раздавать адреса из сети 10.10.2.0? достаточно мне просто изменить маску на 255.255.0.0 ? Или обязательно поднимать ещё один сервер?

Добавлено:
Просто у меня клиентов навалом.... И я не могу на живом сервере тестировать... т.к. это не айс ... хотелось бы понять как это делается )) Вдруг кто сталкивался )

Добавлено:
поменял
server 10.10.1.0 255.255.255.0 поменял маску на 255.255.252.0 и после рестарта vpn он отказался запускать этот конфиг. Значит надо как то по другому....
Автор: rain87
Дата сообщения: 30.11.2009 15:48
NLOss

Цитата:
server 10.10.1.0 255.255.255.0 поменял маску на 255.255.252.0
тогда номер сети надо на 10.10.0.0 поменять. не может быть сети 10.10.1.0/255.255.252.0
Автор: NLOss
Дата сообщения: 30.11.2009 16:04
Спс ща попробую )) просто мне не хотелось бы чтоб все клиенты падали просто так... Как ты думаешь получится?
Автор: Withart
Дата сообщения: 04.12.2009 15:33
ambient2005

В. Чем отличаются виртуальные устройства tun и tap?
О. TUN - туннель, соединение по которому указывается по типу: локальный IP < --- > удаленный IP. Например, при явном указании ifconfig:
--ifconfig 10.3.0.2 10.3.0.1
в этом примере 10.3.0.2 - локальный IP, 10.3.0.1 - удаленный IP
TAP - эмулирует виртуальную ethernet карточку, для которой требуется указывать локальный IP и маску подсети. Например:
--ifconfig 10.3.0.2 255.255.255.0

взято отсюда http://tuxnotes.ru/articles.php?a_id=26 - Описание команд и параметров OpenVPN
Автор: ICY_fire
Дата сообщения: 12.12.2009 09:33
OpenVPN 2.1.1 -- released on 2009.12.11
http://openvpn.net/index.php/open-source/downloads.html
Автор: X_Factor
Дата сообщения: 21.12.2009 23:22
OpenVPN Portable-GUI на основе 2.1.1
решил тут тоже запостить, хорошее решение, т.к. сам недавно искал такое, да и постами выше тоже вроде интересовались таким клиентом
Автор: tankistua
Дата сообщения: 22.12.2009 08:03

Цитата:
В. Чем отличаются виртуальные устройства tun и tap?
О. TUN - туннель, соединение по которому указывается по типу: локальный IP < --- > удаленный IP. Например, при явном указании ifconfig:
--ifconfig 10.3.0.2 10.3.0.1
в этом примере 10.3.0.2 - локальный IP, 10.3.0.1 - удаленный IP
TAP - эмулирует виртуальную ethernet карточку, для которой требуется указывать локальный IP и маску подсети. Например:
--ifconfig 10.3.0.2 255.255.255.0


вообще-то чуть-чуть не так.

тун используется для роутинга, тар - для бриджинга.

В первом случае надо поднимать маршрутизацию между сетями и картинка будет следующая

(клиентская сеть 10.0.1.0/24 - впн сеть 192.168.10.0/24 - сеть за сервером 172.22.22.0/24)

во втором - мост

(клиентский пк 172.22.22.15 - бридж - сеть за сервером 172.22.22.0/24)

первый больше подходит для объедения сетей - второй для подключения удаленных клиентов к сети офиса.
Автор: DocBeen
Дата сообщения: 23.12.2009 21:16
Доброго времени суток!!! Ребята не подскажете - может кто сталкивался с таким: возможно ли вообще использовать OpenVPN c авторизацией по логину и паролю?
Я знаю что можно в конфиге сервера добавить duplicate-cn (чтоб использовать единый серт для клиентов) auth-user-pass-verify, username-as-common-name

Вопрос собственно вот какой: каким образом можно настроить авторизацию из внешней базы данных....
Автор: rain87
Дата сообщения: 24.12.2009 11:22
DocBeen
Цитата:
--auth-user-pass-verify script method
Require the client to provide a username/password (possibly in addition to a client certificate) for authentication.

OpenVPN will execute script as a shell command to validate the username/password provided by the client.

If method is set to "via-env", OpenVPN will call script with the environmental variables username and password set to the username/password strings provided by the client. Be aware that this method is insecure on some platforms which make the environment of a process publicly visible to other unprivileged processes.

If method is set to "via-file", OpenVPN will write the username and password to the first two lines of a temporary file. The filename will be passed as an argument to script, and the file will be automatically deleted by OpenVPN after the script returns. The location of the temporary file is controlled by the --tmp-dir option, and will default to the current directory if unspecified. For security, consider setting --tmp-dir to a volatile storage medium such as /dev/shm (if available) to prevent the username/password file from touching the hard drive.

The script should examine the username and password, returning a success exit code (0) if the client's authentication request is to be accepted, or a failure code (1) to reject the client.

This directive is designed to enable a plugin-style interface for extending OpenVPN's authentication capabilities.

To protect against a client passing a maliciously formed username or password string, the username string must consist only of these characters: alphanumeric, underbar ('_'), dash ('-'), dot ('.'), or at ('@'). The password string can consist of any printable characters except for CR or LF. Any illegal characters in either the username or password string will be converted to underbar ('_').

Care must be taken by any user-defined scripts to avoid creating a security vulnerability in the way that these strings are handled. Never use these strings in such a way that they might be escaped or evaluated by a shell interpreter.

For a sample script that performs PAM authentication, see sample-scripts/auth-pam.pl in the OpenVPN source distribution.
для выдачи пользователям конкретного ип можно использовать
Цитата:
--client-connect script
Run script on client connection. The script is passed the common name and IP address of the just-authenticated client as environmental variables (see environmental variable section below). The script is also passed the pathname of a not-yet-created temporary file as $1 (i.e. the first command line argument), to be used by the script to pass dynamically generated config file directives back to OpenVPN.

If the script wants to generate a dynamic config file to be applied on the server when the client connects, it should write it to the file named by $1.

See the --client-config-dir option below for options which can be legally used in a dynamically generated config file.

Note that the return value of script is significant. If script returns a non-zero error status, it will cause the client to be disconnected.
более детально всё тут http://openvpn.net/index.php/open-source/documentation/manuals/69-openvpn-21.html

Добавлено:
если интересовали именно примеры скриптов, вот то что я юзал когда то [more=auth-user-pass-verify.pl]
Код: #!/usr/bin/perl -w

use XIBUtils qw(xib_dbconnect l);

close(STDERR);
open(STDERR,'>>/var/log/xib/auth-user-verify.log');

#exit;
`arp -an|grep '($ENV{'untrusted_ip'})'`=~/at (..:..:..:..:..:..)/;
$real_mac=$1;

$login_data="username: $ENV{'username'}; password: $ENV{'password'}; ip: $ENV{'untrusted_ip'}; mac: $real_mac";

$ENV{'password'}=~s/^(.{,10}).*$/$1/;

$dbh=xib_dbconnect;
$h=$dbh->prepare("SELECT id,pass,ip,mac,banned FROM users WHERE name='$ENV{'username'}'");
$h->execute;
unless(($id,$pass,$ip,$mac,$banned)=$h->fetchrow_array)
{
l "failed to get data for $login_data";
exit(1);
}
if($pass ne $ENV{'password'})
{
l "failed password for $login_data";
exit(2);
}
if(defined($ip)&&$ip ne '')
{
if($ip ne $ENV{'untrusted_ip'})
{
l "failed ip ($ip) for $login_data";
# goto st_ip;
exit(3);
}
}
else
{
st_ip:
l "store ip for $login_data";
$h=$dbh->prepare("UPDATE users SET ip='$ENV{'untrusted_ip'}' WHERE id=$id");
$h->execute;
}
if(defined($mac)&&$mac ne '')
{
if($mac ne $real_mac)
{
l "failed mac ($mac) for $login_data";
# goto st_mac;
exit(4);
}
}
else
{
st_mac:
l "store mac for $login_data";
$h=$dbh->prepare("UPDATE users SET mac='$real_mac' WHERE id=$id");
$h->execute;
}
if($banned=~/\x01/)
{
l "banned $login_data";
exit(5);
}
#l "connected ok $login_data";
Автор: DocBeen
Дата сообщения: 24.12.2009 21:49
rain87
с мануалом все ястно, спасиб, просто более детально хотелось бы уточнить каким образом в переменную окружения передается пасс и логин от пользователя? В скипте необходимо указать файл (временный, а из него читать) или каким образом? Ваш пример с скриптами как нельзя удобнее подходит, но в Перле я ни как и поэтому хотел бы уточнить как подобное можно сделать на VBS или ПХП и читать из базы MySQL или FireBird. Возможно ли такое?
Автор: rain87
Дата сообщения: 24.12.2009 22:11
DocBeen
в мануале как раз ответы на все вопросы и приведены
Цитата:
каким образом в переменную окружения передается пасс и логин от пользователя?

Цитата:
If method is set to "via-env", OpenVPN will call script with the environmental variables username and password set to the username/password strings provided by the client

Цитата:
If method is set to "via-file", OpenVPN will write the username and password to the first two lines of a temporary file. The filename will be passed as an argument to script, and the file will be automatically deleted by OpenVPN after the script returns


Цитата:
как подобное можно сделать на VBS или ПХП и читать из базы MySQL или FireBird. Возможно ли такое?
я ни вбс, ни пхп не знаю, да и лень было б переписывать перловый скрипт на этом. на пхп 100% можно читать из мускуля, да и из файрбёрда наверное
Автор: tankistua
Дата сообщения: 25.12.2009 01:21

Цитата:
rain87
с мануалом все ястно, спасиб, просто более детально хотелось бы уточнить каким образом в переменную окружения передается пасс и логин от пользователя? В скипте необходимо указать файл (временный, а из него читать) или каким образом? Ваш пример с скриптами как нельзя удобнее подходит, но в Перле я ни как и поэтому хотел бы уточнить как подобное можно сделать на VBS или ПХП и читать из базы MySQL или FireBird. Возможно ли такое?


он умеет с радиусом общаться, а радиус умеет хранить пароли в базе.
Автор: DocBeen
Дата сообщения: 25.12.2009 06:33
rain87
tankistua

Доброго времени суток, о том что читаются переменные я понял, вопрос может перефразировать: каким образом правельно будет прочитать эти переменные окружения, из под Windows? каким будет выглядить строка auth-user-pass-verify ссылающаяся на переменную?

Я предпологаю что указать путь можно любой, тогда сработает ли данная конструкция в ПХП если считать эти переменные вот так
<?php
....

$login = getenv("username"); // получаем логин
$pass = getenv("password"); // получаем пасс
?>
Уважаемый rain87 вы показали примеры ваших скриптов, а каким образом конфигурационный файл OpenVPN к ним обращается?

в идеале хочу сделать так: создать сервер с собственными ключами, клиенту раздать дистрибутив с ключами используя в конфиге
Цитата:
duplicate-cn (чтоб использовать единый серт для клиентов)

при этом оставить авторизацию по лигину и паролю, которые смогу хранить в внешней базе, (можно и в Мускуле) вот именно в этом я прошу вашей помощи разобраться
Подскажите как в конфиге прочитать переменные окружения и как использовать скрипты для авторизации клиентов по логину и пассу что хранятся в базе
Автор: tankistua
Дата сообщения: 25.12.2009 09:14
ой - ссори, он умеетс лдап-ом общаться, просто так с радиусом он не умеет.

З.Ы. может с лдап-ом разберетесь ?:)
Автор: DocBeen
Дата сообщения: 25.12.2009 11:02
дело в том что OpenVPN сервер и клиент работают из под Винды, при том домена нет и вариант с OpenLDAP отпадает ...

хотелось бы просто логины и пассы хранить в базе а с помощью скрипта проверять их, но вот как?
Автор: rain87
Дата сообщения: 25.12.2009 11:50
DocBeen
уфф. то ли я тебя не пойму, то ли ты меня. в третий раз пишу директиву
auth-user-pass-verify script method
script - имя твоего скрпта
method - либо via-env, либо via-file
т.е., например:
auth-user-pass-verify "C:\\openvpn\\my_cool_script.php" via-env

Цитата:
$login = getenv("username"); // получаем логин
$pass = getenv("password"); // получаем пасс
да, как то так. потом проверяешь их в базе, и если всё ок, то выходишь с кодом 0 (exit(0)), если чёто не так, то с ненулевым кодом

Добавлено:
tankistua
Цитата:
З.Ы. может с лдап-ом разберетесь ?
никогда не работал с виндовым доменом так что вряд ли
Автор: DocBeen
Дата сообщения: 26.12.2009 20:59

Цитата:
auth-user-pass-verify script method
script - имя твоего скрпта
method - либо via-env, либо via-file
т.е., например:
auth-user-pass-verify "C:\\openvpn\\my_cool_script.php" via-env


rain87
Спасибо большое, то что доктор Прописал,

С Наступающим всех !!! Всех благ!!!
Автор: DimaK2
Дата сообщения: 25.01.2010 00:06
Подскажите, а есть версии для х64?
Автор: rain87
Дата сообщения: 25.01.2010 08:29
DimaK2
да вроде бы все ставят ту, что выложена на сайте овпн. насколько помню, там включены драйверы и для 86, и для 64 систем
Автор: Orion_76
Дата сообщения: 16.02.2010 12:59
может кто в курсе...
соединил по OpenVPN две сетки
подсеть OpenVPN - 10.2.75.0/24
сеть1.
имеется сервер vpn (vpn ip 10.2.75.1) и клиент vpn
подсеть:
192.168.2.0/24

сеть2. клиент vpn(win xp home, vpn ip 10.2.75.10, локальный ip 200.1.80.9) и машины за клиентом
(т.е. сеть2 должна быть доступна из сети1 через клиента vpn сети2)
подсеть:
200.1.80.0/24

в конфиге сервера:
dev tun
proto tcp

------------------------------
из сети1( с сервера и с клиента) клиент в сети2 пингуется по адресу vpn-сети и по локальному.
tracert на локальный адрес показывет что пакеты идут через openvpn-интерфейс(10.2.75.10)
tracert на адрес компа за клиентом ничего не показывает.

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

Сейчас расшарил локальное подключение на клиенте сети2 (Общий доступ в Интернет)...Сеть за клиентом доступна, но эт как-то не правильно...
tracert на локальный адрес компа за клиентом выдает что пакеты идут:
vpn-интерфейс клиента сети2 --> шлюз интернета сети2(adsl-router) --> ip адрес машины за клиентом сети2

а покрасившее сделать никак нельзя?
Автор: rain87
Дата сообщения: 16.02.2010 19:18

Цитата:
Если я правильно понимаю... надо как-то маршрут задать чтобы пакеты с vpn-интерфейса передавались на локальный интерфейс а с него в локальную сеть.
не совсем. надо разрешить форвардинг пакетов, а на компах локальной сети надо прописать маршруты, чтоб они знали, где находится отправитель (т.е., по сути, надо им сказать, что сеть 10.2.75.0/24 доступна через 200.1.80.9). по умолчанию комп будет отсылать ответ на дефолтный маршрут
Цитата:
Сейчас расшарил локальное подключение на клиенте сети2 (Общий доступ в Интернет)...Сеть за клиентом доступна, но эт как-то не правильно...
почему, вполне нормальное решение. клиент овпн подменяет адрес отправителя (10.2.75.0/24) на свой (200.1.80.9), и клиенты сети2 будут думать, что они общаются с машиной из их сети
Цитата:
tracert на локальный адрес компа за клиентом выдает что пакеты идут:
vpn-интерфейс клиента сети2 --> шлюз интернета сети2(adsl-router) --> ip адрес машины за клиентом сети2
вот тут не понял, откуда взялся адсл роутер?
Автор: s1ash
Дата сообщения: 28.02.2010 18:00
не актуально

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273

Предыдущая тема: конвертация mdf в sql


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.