Вам необходимо установить (если уже не установлены) пакеты: ppp и pptp-linux. Файл глобальных опций для pptp-соединений: /etc/ppp/options.pptp, у меня его содержимое следующее:
root@gw:~# cat /etc/ppp/options.pptp
# Lock the port
lock
# Authentication
# We don't need the tunnel server to authenticate itself
noauth
# We won't do PAP, EAP, CHAP, or MSCHAP, but we will accept MSCHAP-V2
# (you may need to remove these refusals if the server is not using MPPE)
refuse-pap
refuse-eap
#refuse-chap
#refuse-mschap
# Compression
# Turn off compression protocols we know won't be used
nobsdcomp
nodeflate
# Encryption
# (There have been multiple versions of PPP with encryption support,
# choose with of the following sections you will use. Note that MPPE
# requires the use 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 PPP 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 означает "пропустить" или "не использовать", тут зависит от провайдера.
Глобальный файл опций задан, теперь нужно настроить пиры (самих клиентов). Файлы пиров находятся в /etc/ppp/peers, у меня файл пира выглядит так:
root@gw:~# cat /etc/ppp/peers/vpn_client
pty "pptp vpn.client.net --nolaunchpppd"
name "my_vpn_login"
remotename PPTP
file /etc/ppp/options.pptp
ipparam vpn_client
require-mppe-128
#require-mschap-v2
#require-mppe
#defaultroute
#replacedefaultroute
#usepeerdns
persist
maxfail 0
holdoff 15
unit 5
Тут задается адрес коннекта, логин, который будет использоваться для соединения, подключается файл опций, задается имя соединения (ipparam) для использования в скриптах... ну и параметры автодозвона. Заметьте, что у меня отключены следующие параметры (вообще по дефолту они включены, можете почитать о них отдельно):
#defaultroute
#replacedefaultroute
#usepeerdns
С файлом пира все, теперь нужно указать какой пароль будет использоваться при данном соединении. Пароли задаются в файле /etc/ppp/chap.secrets (это как правило, а бывает и файл pap.secrets):
root@gw:~# cat /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
"my_vpn_login" PPTP "my_vpn_passwd"
Из этого файла будет браться нужный пароль пиром "vpn_client", когда он будет пытаться установить соединение и заданным в нем vpn-сервером.
Теперь о скриптах. В каталогах /etc/ppp/ip-up.d/ и /etc/ppp/ip-down.d/ можно сохранять выполняемые скрипты, которые будут что-то делать при поднятии или опускании ppp-интерфейсов. К примеру вот мой файл для vpn-соединения:
root@gw:~# cat /etc/ppp/ip-up.d/vpn_client
#!/bin/bash
if [ "$PPP_IPPARAM" = "vpn_client" ]; then
for i in "10.0.0.0/8" "97.xxx.xxx.2" "97.xxx.xxx.3" #\
#"$(dig +short e.net.com)"
do ip route add $i via $PPP_LOCAL dev $PPP_IFACE
done
exit 0
fi
Все исполняемые файлы, которые лежат в вышеуказанных директориях выполняются _для_каждого_ ppp-соединения, поэтому нужно делать проверку. Здесь проверка делается по имени ipparam (которое мы указывали в файле пира). Переменные $PPP_IPPARAM, $PPP_LOCAL, $PPP_IFACE - это переменные соединения чтоли, не знаю как верно написать )) Их список можно посмотреть в файлах /etc/ppp/ip-up и /etc/ppp-ip-down.
Отступление: налогичные переменные есть и для филических интерфейсов:
https://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_scripting_with_the_ifupdown_systemНужные скрипты написаны (или не написаны, если не нужны), теперь можно использовать соединение командами pon и poff. Для того, чтобы соединение поднималось автоматически и можно было использовать ifup и ifdown - следует поправить /etc/network/interfaces, в частности у меня описание vpn-соединения там сделано так:
root@gw:~# cat /etc/network/interfaces
# The loopback network interface
...
auto vpn_client
iface vpn_client inet ppp
provider vpn_client
...
provider vpn_client - это указание на имя файла для пира.
Вот в общем как то так.
ps: практически дописал уже ответ и нашел свою старую тему на подобную тему (сори за тавтологию), также можете посмотреть:
https://debianforum.ru/index.php?topic=4708.msg41428#msg41428