Настройка 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 способа решения
- Закоментировать строку logwtmp в pptpd.conf
- Выкачиваем 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).