Настройка PPTP-подключения к провайдеру.
Требуемые пакеты
Для установки подключения нужно установить пакеты ppp и pptp-linux. При настройке соединения в различных дистрибутивах Linux нужно учесть, что один или оба этих пакета могут не быть предустановленными в некоторых дистрибутивах Linux, например, пакет pptp-linux установлен по умолчанию в Ubuntu Desktop и отсутствует в установленной с настройками по умолчанию сборке Ubuntu Server. Также нужно обратить внимание на установленные программы-менеджеры сетевых соединений и настройки фаервола. Например, наличие работающего Network Manager может привести к проблемам совместимости настроек в текстовых файлах конфигруации и настроек самого NM, а запрет протокола GRE или трафика TCP соединений для порта 1723 приведет к невозможности установления PPTP-подключения (начальную настройку и тестирование соединения лучше производить с отключенным межсетевым экраном).
Начальная настройка подключения
Пример настройки PPTP-клиента для Debian GNU/Linux. Провайдер использует IP адреса в сети 192.168.0.0/16
Перед настройкой следует разобраться со схемой маршрутизации. После установления PPTP-соединение будет использоваться в качестве шлюза по умолчанию, поэтому следует заранее прописать статически маршруты для ресурсов в локальной сети провайдера, в том числе и для самого PPTP-сервера (в случае использования статического маршрута по умолчанию для локальных маршрутов, они будут недоступны после установления PPTP-соединения). Сделать это можно с помощью скриптов, или в файле настройки интерфейсов. Настройка производится для ситуации, когда локально должны быть доступны устройства в сети 192.168.0.0/16.
1) Для настройки локального подключения к провайдеру (интерфейс eth0) следует добавить значения IP адреса, маски подсети и локального шлюза в файл /etc/network/interfaces:
auto eth0
iface eth0 inet static
address 192.168.0.184
netmask 255.255.255.0
up ip route add 192.168.0.0/16 via 192.168.0.1
2) Выключение и включение сетевого адаптера:
# ifdown eth0
# ifup eth0
3.1) Если для указания PPTP сервера используется статический IP адрес, следует проверить его доступность:
$ ping 192.168.1.5
3.2) Если для указания PPTP сервера используется доменное имя, следует указать DNS сервер и проверить доступность доменного имени PPTP-сервера:
$ echo "nameserver 192.168.0.1" > /etc/resolv.conf
$ ping pptp-server.provider.ru
4) В случае успешного прохождения проверки следует приступить к тестовой настройке PPTP-подключения.
4.1) Создание папки для хранения логов PPTP:
# mkdir /var/log/ppp
# touch /var/log/ppp/pptp_log
# chmod -R 644 /var/log/ppp/pptp_log
4.2) Создание файла /etc/ppp/peers/provider, который доступен для чтения только суперпользователю, со следующим содержанием:
pty "pptp pptp-server.provider.ru --nolaunchpppd —nobuffer"
remotename pptp
user "VPN_LOGIN" << Имя пользователя
password "VPN_PASSWORD" << Пароль
refuse-eap
linkname provider << имя соединения, которое будет использоваться при подключении
lock
usepeerdns
nodeflate
nobsdcomp
noauth
nopcomp
noaccomp
logfile /var/log/ppp/vpnlog
4.3) Произвести тестовое подключение:
pppd call provider debug nodetach
4.4) Если соединение не установлено, проанализировать логи и внести изменения в настройку PPTP-подключения (man pptp)
Завершение настройки соединения
1) Добавить следующие строки в файл /etc/ppp/peers/provider (значение строк - man pptp):defaultroute
persist
maxfail 0
holdoff 40
lcp-echo-interval 60
lcp-echo-failure 4
2) Автоматизировать процесс запуска и остановки процесса установления соединения с помощью добавления команд "pppd call provider" и "poff provider" в соответствующие скрипты.
Настройка iptables
Правила iptables, разрешиющие трафик PPTP-соединения. PPTP-сервер находится в сети 192.168.1.0/24:
-A INPUT -s 192.168.1.0/24 -p gre -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p gre -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p tcp -m tcp --sport 1723 -j ACCEPT
-A OUTPUT -d 192.168.1.0/24 -p gre -j ACCEPT
-A OUTPUT -d 192.168.1.0/24 -p tcp -m tcp --dport 1723 -j ACCEPT