Ставим ppp и pptpd:
# aptitude install ppp pptpdНастраиваем сам сервер pptpd, прописывая в его конфигурационном файле /etc/pptpd.conf:
option /etc/ppp/pptpd-options logwtmp localip 10.3.17.1 remoteip 10.3.17.2-254Опция localip задаёт IP-адрес на локальной стороне создаваемых туннелей, опция remoteip - задаёт соответственно диапазон IP-адресов, которые будут выдаваться клиентам, в качестве адресов с их стороны.
Настроим pppd для туннелей, поднимаемых сервером pptpd. Зададим настройки в файле /etc/ppp/pptpd-options:
10.3.17.1: name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 ms-dns 10.3.1.3 ms-dns 10.3.1.4 ms-wins 10.3.1.4 ms-wins 10.3.1.5 nodefaultroute lock nobsdcomp idle 900Первая опция задаёт IP-адрес локальной стороны туннеля (почему-то настройка, указанная в /etc/pptpd.conf не действует).
Опция name pptpd задаёт имя сервера. Оно будет использоваться для поиска записей в файле паролей (см. ниже).
Опции refuse-pap, refuse-chap, refuse-mschap, require-mschap-v2 отклоняют различные способы аутентификации, требуя использовать только аутентификацию по MS-CHAPv2.
Опция require-mppe-128 указывает на необходимость шифрования передаваемых по туннелю данных с помощью протокола MPPE с длиной ключа 128 бит.
Опции ms-dns 10.3.1.3 и ms-dns 10.3.1.4 задают адреса DNS-серверов, которые будут сообщены подключившемуся клиенту.
Опции ms-wins 10.3.1.4 и ms-wins 10.3.1.5 задают адреса WINS-серверов, которые будут сообщены подключившемуся клиенту.
Опция nodefaultroute заставляет pppd не устанавливать маршрут по умолчанию через подключившегося клиента.
Опция lock создаёт файл блокировки интерфейса, который позволяет избежать попыток использовать этот интерфейс другими соединениями, пока он используется.
Опция nobsdcomp отключает сжатие потока данных по алгоритму BSD.
Опция idle задаёт количество секунд простоя, по истечении которых простаивающее соединение будет отключено.
Теперь нужно прописать клиентов в файле паролей /etc/ppp/chap-secrets:
elvira pptpd "111111" 10.3.17.23 #kon_sv pptpd "passwd" * igor pptpd "paroli" 10.3.17.28Символ решётки говорит о том, что данная запись отключена (закомментирована).
Символ звёздочки говорит о том, что этому клиенту будет выдан любой свободный адрес из диапазона 10.3.17.2-254, который указан в настройках pptpd.
Клиентам, для которых указан IP-адрес в последней колонке, всегда будут выдаваться этот IP-адрес.
Теперь перезапускаем PPTP-сервер, чтобы настройки вступили в силу:
# /etc/init.d/pptpd restartЕсли хочется выполнять какие-то специфические для PPTP-клиента команды, то можно создать сценарии /etc/ppp/ip-up.d/pptp-clients и /etc/ppp/ip-down.d/pptp-clients, шаблон для которых представлен ниже:
#!/bin/sh case "$PPP_IPPARAM" in "pptp-clients") # ваши команды ;; *) echo "No PPP_IPPARAM defined" ;; esacТеперь в файле /etc/pptpd.conf нужно прописать опцию noipparam, которая заставит pptp-сервер не передавать в качестве ipparam IP-адрес, с которого было установлено подключение.
Чтобы отличать pptp-клиентов от других PPP-подключений, добавим опцию ipparam в файл /etc/ppp/pptpd-options:
ipparam "pptp-clients"В случае если ipparam будет равен pptp-clients, выполнятся указанные для этого случая команды. Например таким образом можно настраивать разрешающие правила в фаерволле. В том числе можно делать дополнительные проверки, идентифицируя клиента по IP-адресу внутри тоннеля или по логину, с которым клиент подключился.
Другие источники информации по этой теме:
- Настройка PPTP-сервера в Debian/Ubuntu
- Русский перевод man pppd(8) - демон протокола точка-точка (Point-to-Point Protocol Daemon)
- Русский перевод man pptpd(8) - PPTP VPN-демон
- Русский перевод man pptpd.conf(5) - конфигурация PPTP VPN демона
2 комментария:
Спасибо большое за статью!
Но как сделать чтобы pptpd сервер работал с другими сетями (за Natoом)?
В логах постоянные сообщения типа
GRE: read from PTY failed: status =-1 error = input output error usually caused by unexpected termination of pppd, check option syntax
PTY read of GRE write failed (pty, gre) = (6,7)
Reaping child PPP
У клиента 619 ошибка
В пределах одной сети все работает.
Пробовал добавлять в ядро параметры
nf_conntrack_pptp, nf_nat_pptp, но не помогает. С iptables тоже все в порядке
Cистема Debian Squeeze, связь через adsl модем с интернетом, удаленные клиенты тоже выходят с модема
Бывает, что провайдер запрещает GRE и такая ошибка возникает. Еще может быть проблема в firewall.
Отправить комментарий