ran писал(а):Расширение varchar с 25 до 32 толку не дало...
а ты во всех таблицах его поменял:
Везде, да и не в нём дело, обрезается ведь не на 25 символах, а на первом.
~AsmodeuS~ писал(а):очень интересное решение никак у самого руки не доходят
если автора не затруднит ман по настройке и я думаю вместе решим эту проблему
Есть несколько вариантов. Можно сделать через openvpn-auth-pam или auth-pam.pl. Но в таком случае будет работать только авторизация. Неуниверсально.
Посему делаем через
radiusplugin.
FreeBSD
1. Ставим openvpn из портов:
cd /usr/ports/security/openvpn
make clean install
2. Забираем последнюю версию радиус плагина для openvpn с cvs и собираем его(последний выложенный релиз на сайте глючит)
cd /tmp
cvs -z3 -d:pserver:
anonymous@cvs.savannah.nongnu.org:/sources/radiusplugin co radiusplugin
cd radiusplugin
g++ -Wall -I/usr/local/include -L/usr/local/lib -shared -o radiusplugin.so AccountingProcess.cpp Exception.cpp PluginContext.cpp UserAuth.cpp AcctScheduler.cpp IpcSocket.cpp radiusplugin.cpp User.cpp AuthenticationProcess.cpp main.cpp UserAcct.cpp UserPlugin.cpp Config.cpp RadiusClass/RadiusAttribute.cpp RadiusClass/RadiusPacket.cpp RadiusClass/RadiusConfig.cpp RadiusClass/RadiusServer.cpp RadiusClass/RadiusVendorSpecificAttribute.cpp -lgcrypt -lgpg-error -lstdc++ -lm
3. Создаем папку с конфигами, копируем туда радиус-плагин, его конфиг
mkdir /usr/local/etc/openvpn
cp radiusplugin.so /usr/local/etc/openvpn/
cp radiusplugin.cnf /usr/local/etc/openvpn/
Создаем сертификаты (Читаем команды для openssl
тут)
4. cat /usr/local/etc/openvpn/server.conf
dev tap8
port 1194
mode server
tls-server
server 10.1.100.0 255.255.255.0 10.1.100.1
management 127.0.0.1 7505
ca /usr/local/etc/openvpn/keys/server/ca.crt
cert /usr/local/etc/openvpn/keys/server/server.crt
key /usr/local/etc/openvpn/keys/server/server.key
dh /usr/local/etc/openvpn/keys/server/dh1024.pem
tls-auth /usr/local/etc/openvpn/keys/server/ta.key
keepalive 10 60
client-connect /usr/local/abills/libexec/openvpn-up
client-disconnect /usr/local/abills/libexec/openvpn-down
ifconfig-pool-persist /usr/local/etc/openvpn/keys/server/ip.txt 1300000
plugin /usr/local/etc/openvpn/radiusplugin.so /usr/local/etc/openvpn/radiusplugin.cnf
username-as-common-name
comp-lzo
push "redirect-gateway def1"
push "route 0.0.0.0 0.0.0.0"
push "dhcp-option DNS 10.1.100.1"
log-append /var/log/openvpn-server.log
5. cat /usr/local/etc/openvpn/radiusplugin.cnf
NAS-Identifier=openvpn
Service-Type=2
Framed-Protocol=1
NAS-Port-Type=5
NAS-IP-Address=127.0.0.1
OpenVPNConfig=/usr/local/etc/openvpn/server.conf
#subnet=255.255.255.0
server
{
acctport=1813
authport=1812
name=127.0.0.1
retry=1
wait=1
sharedsecret=наш_секретный_пароль_от_радиуса
}
6. cat /usr/local/abills/libexec/openvpn-up
#!/bin/bash
/usr/local/abills/libexec/linkupdown openvpn up $dev inet $ifconfig_local $ifconfig_pool_remote_ip $common_name >& /dev/null
cat /usr/local/abills/libexec/openvpn-down
#!/bin/bash
/usr/local/abills/libexec/linkupdown openvpn down $dev inet $ifconfig_local $ifconfig_pool_remote_ip $common_name >& /dev/null
7. Добавляем в /usr/local/abills/libexec/linkupdown блок типа:
if ($ARGV[0] eq 'mpd') {
$ACTION = $ARGV[1];
$INTERFACE= $ARGV[2];
$USER = $ARGV[6];
$HISADDR = $ARGV[5];
$inum = $INTERFACE;
$inum =~ s/ng//;
}
+elsif ($ARGV[0] eq 'openvpn') {
+ $ACTION = $ARGV[1];
+ $INTERFACE= $ARGV[2];
+ $USER = $ARGV[6];
+ $HISADDR = $ARGV[5];
+ $inum = $INTERFACE;
+ if(! ($inum =~ s/tap//)) {
+ $inum= 100+8
+ } else {
+ $inum = $inum+100;
+ }
+}
8. Заводим ещё один nas с NAS-Identifier=тому что мы указывали в radiusplugin.cnf, тип Other nas server. В radius-параметры не забываем Acct-Interim-Interval=300.
9. /usr/local/sbin/openvpn --daemon --config /usr/local/etc/openvpn/server.conf
Теперь про клиентов (Мастдай):
10. Openvpn/config/example.ovpn
nobind
remote ип_нашего_сервера
port 1194
client
dev tap
proto udp
auth-user-pass authinfo
tls-auth ta.key
pull
tls-client
reneg-sec 1209600
ca tmp-ca.crt
cert client.crt
key client.key
comp-lzo
В Openvpn/config/authinfo две строчки:
логин
пароль
Примечание по клиентскому openvpn:
С какой-то версии openvpn`а заблокирована возможность хранения в текстовом файле логина и пароля пользователя, я не хотел напрягать пользователей каждый раз вводить его вручную, поэтому собрал собственный инсталятор openvpn для клиентов. В него входят уже разблокированные бинарники openvpn, драйвера, openvpn-gui, набор нужных сертификатов и конфигов, а также форма, где просит указать логин и пароль, т.е. клиенту нужно только вписать свой логин/пароль прямо в формочку в инсталяторе, а остальное всё настроит он уже сам. Если кому нужно, то поделюсь скриптами для nsis`а.
Примечание по radiusplugin:
Обработку Framed-IP-Address завести не удалось. Автор пишет следующее:
* OpenBSD(BSD):
- RADIUS attributes FramedIP and FramedRoutes mandatory
- RADIUS attribute FramedIP is ignored
Надо бы связаться с автором и спросить будет ли чинить FramedIP в бсд или нет...
Поэтому пока как костыль, если нужно использование статики, юзаем ifconfig-pool-persist в конфиге openvpn, к примеру ifconfig-pool-persist /usr/local/etc/openvpn/keys/server/ip.txt 1300000.
И в этот ip.txt прописываем вручную/скриптами статические ипшники, в таком формате:
логин,ип
логин2,ип2