Шифрани свою сеть!
Докучаев Дмитрий aka Forb
Xakep, номер #059, стр. 059-082-5
name LOGIN
remotename VPN
# Информация для файла chap-secrets.
lock
# Лочим девайс, устанавливающий соединение.
debug
logfd 2
# Отладочные параметры.
+chapms
+chapms-v2
mppe-40
mppe-128
mppe-stateless
# Осуществляется mppe-шифрование каждого пакета.
noauth
# Не требуем авторизации со стороны сервера.
И последний штрих - запишем в /etc/ppp/chap-secrets следующие строки:
LOGIN VPN "password"
где LOGIN и password - аккаунт для соединения. Вот, собственно, и все. Можно тестировать соединение. Делаем это через консоль, используя псевдотерминальную опцию pty демона pppd. Поток будет передаваться pptp-клиентом:
# pppd pty 'pptp vpn.server.ru --nolaunchpppd' call vpn nodetach
Параметр nodetach не позволит демону уйти в бэкграунд. Так ты сможешь убедиться в правильности соединения. Когда появится надпись: "MPPE 128 Compression enabled", то считай, что соединение прошло удачно. Можешь давить ctrl+c и убирать опцию nodetach. В противном случае, перечитывай заново этот раздел и исправляй ошибку ;).
Вроде все готово. Осталось добавить дефолтовую маршрутизацию в инет через VPN-шлюз. Откроем файл /etc/ppp/ip-up.local (если такого нет - создаем) и пишем в него две строки:
/sbin/route del default
/sbin/route add default gw $IPREMOTE
Аналогично оформляется файл /etc/ppp/ip-up.down, после исполнения которого будет возвращен старый дефолтовый маршрут.
Если все работает, остается добавить запуск pppd в загрузочный скрипт и радоваться жизни - соединение будет активизироваться при каждом старте машины. Еще раз напомню - не забудь добавить подгрузку ppp_mppe в /etc/modules, иначе pppd не поймет алгоритма шифрования.
Всем спасибо, все свободны
В этом материале я постарался дать максимум инфы о поднятии VPN-сети (как серверной, так и клиентской части). Разумеется, всего я сказать не мог, так что если у тебя что-то не получится, не отчаивайся, а исправляй ошибки. В конце концов, VPN взлетит ;). И помни - истина где-то в логах!
Restricted Area
Чтобы простые юзеры не смогли сделать себе халявный доступ, позаботься о защите паролем web-скриптов. Для этого допиши в .htaccess следующие строки:
AuthType Basic
AuthName "Admin zone"
AuthUserFile "/path/to/.htpasswd"
Require valid-user
А затем в .htpasswd занести пару login:password.
Файл /etc/raddb/users
Я не рассказал об одном интересном файле под названием users. В нем хранятся предустановленные опции для каждого пользователя, а именно протокол, тип шифрования и т.д. Весьма интересной опцией является Idle-timeout, которая сбрасывает юзера после определенного время молчания (задается в секундах). Обязательно посмотри этот файл. Там полно понятных примеров.
Кстати, freenibs содержит целую таблицу аналогичных параметров, так что совсем не обязательно указывать их в файле users.
Проверка VPN-соединения
Бывает, что VPN-шлюз перезагружают. Естественно, что соединение при этом пропадает. Восстановить его поможет небольшой скрипт, который запускается в определенное время и проверяет наличие pppd-процесса: