Настройка VPN подключения VPN + radius + mysql

Материал из Медиа Вики
Перейти к: навигация, поиск

Этот вариант установки был сделан на Mandriva2007 и не проверялся на других версиях.
Вместо него рекомендую использовать - Настройка биллинговой системы abills + VPN + radius + mysql.

Установка недостающего ПО

1. Устанавливаем пакеты pptpd-server (pptpd-server-1.2.1-1mdk.i586.rpm, ppp-2.4.3-4mdk.i586.rpm, ppp-pppoe-2.4.3-4mdk.i586.rpm), freeradius server (freeradius-1.0.2-1mdk.i586.rpm, ppp-radius-2.4.3-4mdk.i586.rpm), radiusclient (radiusclient-utils-0.3.2-5mdk.i586.rpm), libfreeradius1-mysql-1.0.2-1mdk.i586.rpm, mysql server.
2. Пробуем подгрузить модуль
modprobe ppp_mppe_mppc
И если он загрузился, можно проверить командой
lsmod | grep ppp

прописываем его в /etc/modules.
Примечание: В Mandriva 2008 модуль называется ppp_mppe и грузится вместе с демоном pptpd (VPN сервер) и прописывать его никуда не надо.

3. Выкачиваем последний пакет ppp с адреса www.samba.org/ppp. Распаковывыем и устанавливаем
# ./configure
# make
4.Переписываем библиотеки /etc/radiusclient из ../pppd/plugins/radius/etc в /usr/local/etc/radiusclient. И в файле /etc/radiusclient/radiusclient.conf поменять все пути /usr/local/etc/radiusclient/… на /etc/radiusclient/…

Настройка pptpd сервера

Редактируем файл /etc/pptpd.conf. Указываем ip адрес сервера и диапазон адресов
localip 172.16.136.2 # ip адрес сервера
remoteip 172.16.135.2-238 # диапазон адресов
Редактируем (или создаем, если нет) файл /etc/ppp/options.pptpd
mtu 1490
mru 1490
ms-dns 172.16.130.1		# ip адресс DNS сервера
#ms-dns 193.233.132.2
ipcp-accept-local
ipcp-accept-remote
lcp-echo-failure 30
lcp-echo-interval 5
#proxyarp
auth
refuse-pap
#require-pap
#refuse-chap
+chap
#require-mschap
refuse-mschap
+mschap-v2
#refuse-mschap-v2
#deflate 0
#nobsdcomp
#nodeflate
#nodefaultroute
defaultroute
#+mppe
mppe required,stateless
#require-mppe-128
#require-mppe-40
#plugin radius.so
Редактируем файл /etc/ppp/chap-secret
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
vova    *       vova            172.16.135.5
Перезапускаем pptpd демон и пробуем войти по VPN c Win машины с авторизацией CHAP, или MS-CHAP V2 c шифрацией трафика с именем vova и паролем vova. Если все ок, идем дальше.

Ошибки и их устранение

При коннекте (Mandriva 2008.0) возникает ошибка - Plugin /usr/lib/pptpd/pptpd-logwtmp.so is for pppd version 2.4.3, this is 2.4.4
В этой строке сказано, что плагин pptpd-logwtmp для записи в wtmp для старой версии pptpd 2.4.3
Есть 2 способа решения

  1. Закоментировать строку logwtmp в pptpd.conf
  2. Выкачиваем pptpd-server-1.3.0-2mdv2007.0.src.rpm, устанавливаем его, распаковвываем файл pptpd-1.3.0.tar.bz2, исправляем в файле patchlevel.h версию c 2.4.3 на 2.4.4, запаковываем все обратно (tar -cjf pptpd-1.3.0.tar.bz2 pptpd-1.3.0), заменяем файл архива новым, пересобираем пакет и устанавливаем его заново.

Настройка RADIUS сервера.

1. Отредактировать /etc/raddb/clients.conf на предмет пароля
secret =	passwd
2. Отредактировать /etc/raddb/users. Открыть там для примера аккаунт пользователя (для теста).
vova    Auth-Type := Local, User-Password == "tima"
        				Service-Type = Framed-User,
        				Framed-Protocol = PPP,
        				Framed-IP-Address = 172.16.135.33,
        				Framed-IP-Netmask = 255.255.255.0,
       				        Framed-Routing = Broadcast-Listen,
        				Framed-Filter-Id = "std.ppp",
        				Framed-MTU = 1500,
        				Framed-Compression = Van-Jacobsen-TCP-IP
Закоментируйте строки
#DEFAULT        Auth-Type = System
#       Fall-Through = 1
И добавить следующие строки
DEFAULT Auth-Type = SQL	
        		Service-Type = Framed-User,
        		Framed-Protocol = PPP,
        		Acct-Interim-Interval = 300
# По умолчанию авторизация CHAP
# Сбрасывать в базу счетчики  пользователей каждые 300 сек
Для нового Radius сервера (Mandriva 2007)– установить Auth-Type = Local
Отредактировать файл /etc/raddb/realms. Добавить единственную строку
DEFAULT LOCAL
Добавить строки в /etc/radiusclient/dictionary, а лучше всего взять всю директорию radiusclienta и переписать в /etc/rediusclient и /usr/local/etc/radiusclient/.
ATTRIBUTE       CHAP-Challenge          60      string
ATTRIBUTE       Acct-Interim-Interval   85      integer
CHAP-Challenge – для работы CHAP авторизации.
Acct-Interim-Interval – интервал, чтобы RADIUS скидывал в базу данные об аккаунте.
Отредактируйте файл (добавьте строку) /etc/radiusclient/servers
localhost         radpasswd
radpasswd - пароль для доступа к raddb серверу
Пароли в файлах /etc/radiusclient/servers и /etc/raddb/client.conf должны совпадать
Для нормальной работы MSCHAP-V2 - разкоментируйте строки в файле /etc/raddb/radiusd.conf в модуле modules, секции mschap:
use_mppe=yes
require_encryption = yes
require_strong = yes
Можно проверить работу RADIUS сервера
На одной консоли запускаем
#radiusd -X
На другой
#radtest vova tima 127.0.0.1 0 passwd
passwd из файла /etc/radiusclient/servers
Если что то не работает смотри что выдает DEBUG в консоли с radiusd -X

Настройка MYSQL

1.Создать базу radius.
#mysql
mysql> create database radius;
Query OK, 1 row affected (0.01 sec)
mysql> \q
Bye
2.Создать клиента mysql с паролем и полными правами на эту базу (Например, пользователь radclient пароль clientpasswd.
(очень удобно это делать, а также редактировать таблицы, в webmin)
3.Найти файл db_mysql.sql и выполнить команду
#mysql -uroot -p radius < db_mysql.sql

Настройка RADIUS сервера для работы с MYSQL.

Отредактируйте строки в файле /etc/raddb/mysql.conf
server = "localhost"
login = "radclient"
password = "radpasswd"
Имя и пароль для доступа к базе данных см выше «Настройка MYSQL» п2.
2.Отредактируйте строки в файле /etc/raddb/radiusd.conf
Разкоментируйте строки sql в секциях modules, accounting, autorize, authenticate.
Наполните данными таблицы MYSQL radius.

mysql> select * from usergroup;

id UserName GroupName
23 dima intusers
22 misha intpriv

2 rows in set (0.00 sec)

mysql> select * from radcheck;

id UserName Attribute op Value
14 misha User-Password == misha
15 dima User-Password == dima

2 rows in set (0.00 sec)

mysql> select * from radreply;

id UserName Attribute op Value
9 ooooo Framed-Ip-Address  := 172.16.135.10
15 misha Framed-IP-Address  := 172.16.135.11
16 dima Framed-IP-Address  := 172.16.135.12

3 rows in set (0.00 sec)

mysql> select * from radgroupreply;

id GroupName Attribute op Value prio
1 intusers Auth-Type  := Local 1
2 intusers Service-Type  := Framed-User 1
3 intusers Framed-Protocol  := PPP 1
4 intusers Framed-Compression  := Van-Jacobsen-TCP-IP 1
5 intguests Auth-Type  := Local 1
6 intguests Service-Type  := Framed-User 1
7 intguests Framed-Protocol  := PPP 1
8 intguests Framed-Compression  := Van-Jacobsen-TCP-IP 1
9 intpriv Auth-Type  := Local 1
10 intpriv Service-Type  := Framed-User 1
11 intpriv Framed-Protocol  := PPP 1
12 intpriv Framed-Compression  := Van-Jacobsen-TCP-IP 1

12 rows in set (0.00 sec)

mysql> select * from radgroupcheck;

id GroupName Attribute op Value
1 intusers Login-Time  := Wk0800-1800
2 intguests Login-Time  := Wk1400-1800
3 intpriv Login-Time  := Al

3 rows in set (0.03 sec)

Проверка работы

Уберите комментарий в файле /etc/ppp/options.pptpd в строчке #plugin radius.so.
Перезапустите демон pptpd и попробуйте войти с win машины с именем и паролем из базы (например misha misha).