Представляю вниманию публики универсалный FAQ по настройке VPN клиента.
PPTP-клиент клиент реализует протокол PPTP, предназначенный для подключения систем с Linux к VPN сетям через MS Windows NT VPN-сервер. Для этого необходимо установить PPTP Client (обычно в дистрибутивах пакет называется pptp-linux) и программное обеспечение, реализующее протокол MPPE (Microsoft Point-To-Point Encryption) и находящееся в пакете ppp-mppe. Все это можно найти на сайте
http://pptpclient.sourceforge.net/. На этом же сайте есть документация по установке клиента во всех популярных дистрибутивах.
После установки ppp-mppe в файле /etc/modules.conf должны быть следующие строки:
alias char-major-108 ppp_generic
alias ppp-compress-18 mppeДля конфигурирования собственно PPTP-клиента можно воспользоваться /usr/sbin/pptp-command (в состав дистрибутива Ubuntu не входит) либо отредактировать конфигурационные файлы.
Нас интересует файл /etc/ppp/options.pptp (листинг 1)
Листинг 1
#################################################################
# $Id: options.pptp, v 1,1 2005/02/18 01:40:23 quozl Exp $
# Sample PPTP options file /etc/ppp/options.pptp
#
#
# Bla-bla-bla
#
# This file can be referred to by /etc/ppp/peers file for the tunnel
#
#################################################################
# Lock the port
lock
# Authentication
# We don't need the tunnel server to authentication itself
noauth
# We won't do EAP, CHAP, or MSCHAP, but we will accept #MSCHAP-V2
refuse-eap
refuse-chap
refuse-mschap
# Compression
# Turn off compression protocols we know won't be used
nobsdcomp
nodeflate
persist
maxfail 0
# Encryption
# (There have been multiple version of PPP encryption support, # # choose with of the following section you will use. Note that # MPPE requires the of MSCHAP-V2 during authentication)
# http://ppp.samba.org/ the PPP project version of PPP by Paul # Mackarras ppp-2.4.2 or later with MPPE only, kernel module # ppp_mppe.o
# {{{
# Require MPPE 128-bit encryption
#require-mppe-128
# }}}
# http://polbox.com/h/hs001/ fork from project by Jan Dubiec
# ppp-2.4.2 or later with MPPE and MPPC, kernel module # ppp_mppe_mppc.o
# {{{
# Require MPPE 128-bit encryption
#mppe required,stateless
# }}}
Что здесь видно?
Строками:
refuse-eap
refuse-chap
refuse-mschapмы отказываемся от аутентификации по протоколам eap, chap,ms-chap и по умолчанию используем mschap-v2. Можно явно это указать директивой
require.
nobsdcomp
nodeflateОтказ от компресии данных.
Следующие две строки:
persist
maxfail 0определяют, что нужно при разрыве VPN-соединения пытаться его восстановить без ограничения на количество попыток. У меня сделано так на сервере, поскольку там через VPN-соединение сервер получает реальный IP-адрес и выход в Интернет. Если у вас обычный клиентский компьютер, это две строки не нужны.
Помимо этого мы должны создать файл /etc/ppp/peers/<имя провайдера> (в моём случае provider) — листинг 2
Листинг 2
name a-vpn
remotename provider
debug
lock
deflate 0
defaultroute
file /etc/ppp/options.pptp
pty «/usr/sbin/pptp 10.15.40.1 -nolaunchpppd»
Строка
name a-vpn определяет логин, с которым мы пытаемся подключиться к провайдеру.
Строка
remotename provider определяет содержимое
второй колонки файла chap-secrets, по которому будет искаться логин и пароль для соединения.
Далее включаем режим отладки (потом можно убрать), разрешаем создавать lock-файлы.
В строке
defaultroute мы определяем, что после установки соединения этот интерфейс будет шлюзом по уморлчанию. Тут есть одна тонкость: если в системе уже имеется запись о default geteway, то эта строчка не сработает, и правильно функционировать наш VPN не будет. Поэтому необходимо удалить маршрут по умолчанию из таблицы маршрутизации. Если у вас это вызывает проблемы, готов проконсультировать.
Строка
file /etc/ppp/options.pptp указывает, в каком файле находятся дополнительные параметры для pppd. И, наконец, строка
pty «/usr/sbin/pptp 10.15.40.1 -nolaunchpppd» показывает, что при попытке подъёма VPN-соединения необходимо вызвать программу pptp, которая попытается соединться с VPN-сервером с адресом 10.15.40.1.
После этого мы должны в файле /etc/ppp/chap-secrets прописать пользователя.
Для нашего случая это такая запись:
a-vpn provider mysuperpassword *Далее мы должны каким-то образом инициировать VPN-соединение. Это можно сделать следующей командой:
/usr/sbin/pppd call providerгде
provider — имя нашего файла в папке peers.
После выполнения команды нам необходимо убедиться, что соединение установлено. Выполним команду
ifconfig. В случае удачного соединения должен появиться интерфейс
pppXX, где XX — номер соединения.
В том случае, если произошла какая-то ошибка, благодаря включенному режиму отладки, мы можем в LOG-файлах найти причину ошибки и поправить.
Если нам необходимо при старте компьютера запускать VPN-соединение, то достаточно записать команду
/usr/sbin/pppd call provider в файл /etc/rc.d/rc.local.