На работе возникла необходимость под Linux настроить PPTP-сервер для Windows-клиентов. На всякий случай решил описать пример настройки.
Ставим 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-адресу внутри тоннеля или по логину, с которым клиент подключился.
Другие источники информации по этой теме:
Последняя правка: 22-09-2009