Настройка pptp-command клиента для подключения к VPN серверу
Этот документ взят | отсюда с небольшими доработками.
Содержание
Преамбула
Данный файл содержит базовые сведения по настройке и установке PPTP соединения с провайдером. Сведения в этом документе НЕ ЯВЛЯЮТСЯ абсолютно правильными и единственно верными. Я надеюсь, что они вам могут быть полезны, однако не даю никаких гарантий относительно их полезности. Вы можете свободно распространять и изменять этот текст, однако, если вы вносите в него изменения, ОБЯЗАТЕЛЬНО указывайте, что оригинальный текст вами изменен и оставляйте свой e-mail для связи с вами.
Введение
Протокол PPTP используется для установления частного соединения с провайдером посредством локальной сети. "Частность" соединения обеспечивается механизмом "имя_пользователя - пароль", т.е. каждый, кто хочет соединиться с провайдером должен иметь "имя_пользователя" и соответствующий ему "пароль". Соединение по этому протоколу часто применяется для предотвращения так называемого IP-спуффинга.
Пакет pptp-client является реализацией протокола PPTP для Линукса и других UNIX систем. Программы, входящие в него, распространяются на условиях лицензии GPL (см. файл COPYING).
Дополнительную более подробную информацию, хотя и немного устаревшую, вы можете получить с сайта http://pptpclient.sourceforge.net
Руководство по настройке
Работает эта программа так. Сама программа pptp запускает так называемый процесс "call manager", который создает туннель PPP->TCP и запускает pppd демона для установления соединения с сервером и выполнения всей работы по обработке пользовательских запросов.
Настройка pptp с использованием программы pptp-command.
Для работы программе pptp необходимо знать IP-адрес сервера для соединения. Это адрес можно указать как параметр командной строки при вызове программы pptp. Второй способ - это создать конфигурационный файл с помощью программы pptp-command. pptp-command - это программа, написанная на перле, она задает вопросы пользователю и в соответствии с ответами создает конфигурационный файл в каталоге /etc/ppp/peers.
Запустить программу легко:
# pptp-command
Вы увидите на экране приглашение для ввода цифры:
1.) start 2.) stop 3.) setup 4.) quit What task would you like to do?:
При вводе "1" программа предложит выбрать вам какой туннель вы хотите стартовать и после ввода запустит его.
При вводе "2" прекращают свою работу все работавшие туннели.
При вводе "3" вы попадете в диалог настройки:
1.) Manage CHAP secrets 2.) Manage PAP secrets 3.) List PPTP Tunnels 4.) Add a NEW PPTP Tunnel 5.) Delete a PPTP Tunnel 6.) Configure resolv.conf 7.) Select a default tunnel 8.) Quit ?:
Для начала нам нужно создать записи с "секретами". Эти записи имеют формат "имя_пользователя имя_сервера пароль" и хранятся в файлах /etc/ppp/chap-secrets или /etc/ppp/pap-secrets в зависимости от метода авторизации. Вам скорее всего понадобится создать CHAP-секрет (точно может сказать только ваш провайдер). Итак выбираем "1" и видим на экране диалог управления секретами:
1.) List CHAP secrets 2.) Add a New CHAP secret 3.) Delete a CHAP secret 4.) Quit ?:
При вводе "1" на экран выводится список существующих секретов.
При вводе "3" вам предлагается выбрать из списка секрет для удаления. Секреты создаются и удаляются парами (подробнее ниже), так что нужно выбирать только один.
Для добавления нового секрета вводим "2". На экране видим следующее:
Add a NEW CHAP secret. NOTE: Any backslashes (\) must be doubled (\\). Local Name: This is the 'local' identifier for CHAP authentication. NOTE: If the server is a Windows NT machine, the local name should be your Windows NT username including domain. For example: domain\\username Local Name:
"Local name" - это "имя_пользователя", которое вы должны были придумать сами и сообщить провайдеру или провайдер должен был придумать сам и сообщить его вам. После ввода имени (я вводил test) на экране появится следующее:
Remote Name: This is the 'remote' identifier for CHAP authentication. In most cases, this can be left as the default. It must be set if you have multiple CHAP secrets with the same local name and different passwords. Just press ENTER to keep the default. Remote Name [PPTP]:
Здесь нужно ввести "имя_сервера", которое будет использоваться при авторизации. Часто серверу не нужно подтверждать свою "персону", так что, если вам провайдер не сообщил имя сервера, то смело жмите ENTER, и имя станет "PPTP". Далее увидим:
Password: This is the password or CHAP secret for the account specified. The password will not be echoed. Password:
Здесь нужно ввести пароль, соответствующий вашему "имени_пользователя".
После всех этих действий мы снова попадаем в диалог управления секретами. Теперь вы можете выбрать "1" и увидеть ваши секреты. Их два:
test PPTP ***** PPTP test *****
Второй нужен для авторизации сервера.
Далее нам нужно создать "туннель". Для этого возвращаемся в главный диалог, введя "4" или "q", и выбираем "4" (Add a NEW PPTP Tunnel). На экране видим следующее:
Add a NEW PPTP Tunnel. 1.) Other Which configuration would you like to use?:
Здесь нам ничего не остается, как ввести "1" для продолжения.
Tunnel Name:
Имя туннеля, т.е. имя файла в /etc/ppp/peers. Я ввел test.
Server IP:
IP-адрес сервера, с которым мы будем соединяться (вам его должен был сообщить провайдер). Я ввел 192.168.5.2
What route(s) would you like to add when the tunnel comes up? This is usually a route to your internal network behind the PPTP server. You can use TUNNEL_DEV and DEF_GW as in /etc/pptp.d/ config file TUNNEL_DEV is replaced by the device of the tunnel interface. DEF_GW is replaced by the existing default gateway. The syntax to use is the same as the route(8) command. Enter a blank line to stop. route:
Здесь можно создать дополнительные маршруты. В частности, если вы хотите автоматически ходить в интернет через этот туннель, вам нужно добавить здесь маршрут по умолчанию. Делается это так:
route: del default
Это нужно для удаления старого маршрута. Как его автоматически восстанавливать при выключении туннеля в общем случае не известно, так что думайте сами.
route: add default TUNNEL_DEV
После этого появится еще дно приглашение
route:
Для завершения нажимаем ENTER. Далее видим:
Local Name and Remote Name should match a configured CHAP or PAP secret. Local Name is probably your NT domain\username. NOTE: Any backslashes (\) must be doubled (\\). Local Name:
Здесь нужно ввести "имя_пользователя" из существующего секрета, которое будет использоваться при соединении.
Remote Name [PPTP]:
Все вышесказанное относится и к "имени_сервера". После ввода получаем следующее:
Adding test - 192.168.5.2 - test - PPTP Added tunnel test
И попадаем в главный диалог. Далее неплохо выбрать "туннель по умолчанию" (Select a default tunnel). На экран выводится список туннелей и мы выбираем нужный нам туннель. При этом в каталоге /etc/ppp/peers появляется символическая ссылка
__default->файл_туннеля
Скорее всего нам больше ничего не нужно настраивать и мы выбираем "8". Другие, не описанные здесь пункты диалогов, остаются читателю для самостоятельного изучения.
Настройка автоматического соединения при старте системы.
1 Вариант. Прописываем в /etc/rc.d/rc.local строку
pptp-command start miac
Где miac - Имя туннеля
2 Вариант В пакет pptp-client входит стартовый скрипт /etc/init.d/pptptunnel,
который автоматически стартует туннель, указанный в его файле
конфигурации /ect/sysconfig/pptp. В этом файле можно указать значения
двух параметров:
PPTP_TUNNEL - строка с именем туннеля, который нужно стартовать. Если параметр не указан, используется /etc/ppp/peers/__default.
PPTP_SET_HOSTNAME - yes/no, если yes, скрипт будет автоматически устанавливать доменное имя машины, которое соответствует вашему IP-адресу, полученному от сервера. Для этого скрипт использует команду nslookup you.new.ip.address
Кстати, этот скрипт можно использовать не только для запуска туннеля при старте системы, но и для ручного перезапуска туннеля.
3 Вариант Можно еще использовать следующий скрипт
# Подключение к VPN серверу для выхода в Inet /usr/sbin/pppd persist maxfail 0 pty '/usr/sbin/pptp 82.137.137.30 --nolaunchpppd' call miac route del default route add default ppp0
Где miac - имя тунеля.
82.137.137.30 - ip адрес сервера VPN
Этот скрипт можно вставить в файл /etc/init.d/rc.local. Его преимущество, что при падении интерфейса тунель автоматически восстанавливается. А недостаток, что тонель может подняться не сразу и при этом не сработают команды для поднятия default route, и их придется добавлять в скрипт и выполнять в кроне.
Файл /etc/ppp/options.pptp для клиента
При использовании mppe нужно загрузить модуль ppp_mppe
modprobe ppp_mppe
И в файл /etc/modules.preload и /etc/modules добавить строку.
ppp_mppe
В файле /etc/ppp/options.pptp лежат настройки клиента для подключения к серверу VPN.
Вот вид этого файла при при авторизации MSCHAP и MPPE
# # Lock the port # lock # # Turn off transmission protocols we know won't be used # nobsdcomp nodeflate # # We want MPPE # #mppe no40 #mppe no56 #mppe no128 mppe required,stateless +mschap-v2 # needed for W2K3 anyway refuse-eap # # We want a sane mtu/mru # mtu 1000 mru 1000 # # Time this thing out of it goes poof # lcp-echo-failure 10 lcp-echo-interval 10 # # We don't need the tunnel server to authenticate itself # noauth
Обратите внимание, что noauth стоит в конце файла, иначе будет возникать ошибка соединения.
Start a tunnel to which server?: 1 /usr/sbin/pppd: The remote system (PPTP) is required to authenticate itself /usr/sbin/pppd: but I couldn't find any suitable secret (password) for it to use to do so. /usr/sbin/pppd: (None of the available passwords would let it use an IP address.)