Мой блог - Настройка PPTP-подключения в Linux (без использования Network Manager)

Настройка PPTP-подключения в Linux (без использования Network Manager)

Настройка PPTP-подключения особой сложности не представляет и уже многократно описана в различных источниках, но все еще вызывает вопросы у системных администраторов. Сегодня мы пройдемся последовательно по всем этапам настройки PPTP-клиента к серверу на базе Microtic с использованием доменной авторизации.

Фотография автора

Автор: Антон Черноусов
Опубликовано: 1 месяц, 2 недели (последние правки: 0 минут назад) - 0 комментариев
Категории записи: Linux, Networking, Ubuntu


Настройка PPTP-подключения особой сложности не представляет и уже многократно описана в различных источниках, но все еще вызывает вопросы у системных администраторов. Сегодня мы пройдемся последовательно по всем этапам настройки PPTP-клиента к серверу на базе Microtic с использованием доменной авторизации.

Настройка подключения к удаленному серверу

Устанавливаем пакет PPTP-клиента:

# apt install pptp-linux

Проверьте, что файл /etc/ppp/options содержит опции lock noauth nobsdcomp nodeflate и если каких-то опций не хватает, то их необходимо добавить, а посмотреть содержимое файла без комментариев можно командой:

# cat /etc/ppp/options.pptp | grep -v "^#" | grep -v "^$"

Выставляя этот набор опций, вы задаете следующее поведение PPTP-клиента:

  • noauth - Не требовать аутентифиции у партнёра.
  • lock - Указывает, что pppd должен создать для последовательного устройства файл блокировки в стиле UUCP, чтобы удостовериться в эксклюзивном доступе.
  • nobsdcomp - Отключает сжатие BSD-Compress. PPPD не будет запрашивать или соглашаться сжимать пакеты с использованием схемы BSD-Compress.
  • nodeflate - Отключает сжатие Deflate; pppd не будет запрашивать или соглашаться сжимать пакеты с использованием схемы Deflate.

Фактически, это набор правил де-факто и вы можете попробовать включить схатие или применить другой набор опций (полный список параметров можно посмотреть в документации). Я хотел бы обратить ваше внимание, что в устаревшей документации указывается использование файла /etc/ppp/options, но в современных дистрибутивах Ubuntu Linux, данный файл используется при создании PPTP-сервера.

Дополнительно, вы можете отключить часть устаревших и небезопасных методов авторизации оставив использование только MSCHAP-V2 (но сначала попробуйте настроить подключение без этих опций):

refuse-pap
refuse-eap
refuse-chap
refuse-mschap

Следующим этапом нам потребуется создать файл авторизации и файл с параметрами подключения к удаленному серверу, а начнем мы с файла авторизации (/etc/ppp/chap-secrets) и в моем случае он выглядит следующим образом:

# client        server  secret                  IP addresses
MEGATRON\\chernousov.a    PPTP-MEGATRON     "Super@t34Password"     *
  • MEGATRON\\chernousov.a - первой опцией выступает имя пользователя и домен (возможно ваш сервер сконфигурирован без использования пароля, при ошибке авторизации проверьте лог-файлы).
  • PPTP-MEGATRON - Идентификатор сервера используется в файле конфигурации подключения (следующий этап настройки).
  • "Super@t34Password" - Пароль пользователя при использовании спец-символов необходимо экранировать скобками
  • * - Последний параметр, это допустимый локальный ip-адрес и если вы не знаете какой адрес будет назначен интерфейсу, просто поставьте *, что означает любой допустимый IP-адрес.

Параметры подключений клиентов находятся в файле /etc/ppp/peers/, создайте в этом каталоге файл с понятным названием и желательно, но необязательно чтобы он совпадал с параметром server в файле паролей (вам так будет понятнее в дальнейшем, когда у вас появится несколько PPTP-подключений). Например в моем случае я создал файл /etc/ppp/peers/pptp-megatron, содержащий следующие строки:

pty "pptp vpn.megatron.ru --nolaunchpppd"
name MEGATRON\\chernousov.a
remotename PPTP-MEGATRON
require-mppe-128
file /etc/ppp/options.pptp

Пройдемся по параметрам заданным в файле конфигурации:

  • pty "pptp vpn.megatron.ru --nolaunchpppd" - Описание параметров, как запускать демона pptp и эдесь главное указать имя или ip-адрес PPTP-сервера к которому мы производим подключение.
  • name MEGATRON\\chernousov.a - Имя пользователя из файла паролей
  • remotename PPTP-MEGATRON - Имя сервера из файла с паролями
  • require-mppe-128 - Требовать шифрование (отключите в случае возникновения ошибок)
  • file /etc/ppp/options.pptp - Используемый файл с настройками по-умолчанию (именно его мы настраивали в начале статьи)

Подключение к удаленному PPTP-серверу

Первое подключение я рекомендовал бы выполнить в режиме отладки без перехода в фоновый режим работы и для реализации такого режима работы используйте следующую команду:

# pon pptp-megatron debug dump logfd 2 nodetach  

Если подключение прошло успешно, то вы увидите в системе новое сетевое устройство ppp0, а в логах подключения выведенных на экран последние строки будут содержать сведения о назначенном интерфейсу адресе:

local  IP address 10.54.251.138
remote IP address 10.54.251.1
Script /etc/ppp/ip-up started (pid 5066)
Script /etc/ppp/ip-up finished (pid 5066), status = 0x0

Если подключение прошло успешно, то следующий запуск можно производить с переходом в фоновый режим работы:

# pon pptp-megatron

Для "ручного запуска" такой метод вполне подойдет, но в случае когда требуется старт клиента при запуске сервера с последующим переподключением при потере связи, то лучшим методом является описание PPTP-интерфейса в файле /etc/network/interfaces.

Сам интерфейс описывается следующей конструкцией:

iface ppp0 inet ppp
    provider pptp-megatron

Для проверки запуска выполните штатную команду активации интерфейса:

# ifup ppp0

Для деактивации интерфейса соответственно команда:

# ifdown ppp0

Обратите внимание, что я не ставил параметры автоматической активации интерфейса и лучше совместить активацию и деактивацию ppp интерфейса с состоянием основного сетевого интерфейса обеспечивающего доступ в интернет. Это может выглядеть примерно так:

auto eth0
iface eth0 inet static
    address 192.168.3.95
    netmask 255.255.255.0
    gateway 192.168.3.1
    dns-nameservers 8.8.8.8
    post-up /sbin/ifup ppp0
    pre-down /sbin/ifdown ppp0

Такой подход позволяет избежать ряда мелких нештатных ситуаций которые могут возникнуть например на нестабильном подключении с использованием мобильной сети передачи данных.

Возможные нестандартные ситуации

Такая схема подключения довольно простая и ошибки могут быть или на этапе авторизации где вам потребуется подобрать набор параметров или же могут возникнуть проблемы при установлении соединения на этапе запуска сервера. В первом случае, отработайте подключение в режиме отладке, а во втором случае проверьте файл /var/log/ppp-connect-errors, так как именно в него пишутся ошибки при работе в режиме демона.

Например, можно получить ошибку:

anon fatal[get_ip_address:pptp.c:473]: getaddrinfo(): Temporary failure in name resolution

В этом случае можно установить задержку при запуске сетевого интерфейса или использовать вместо имени удаленного сервера, его ip-адрес.

Следующей ошибкой конфигурации может стать, то, что вам не передадутся параметры маршрутизации с сервера и в большинстве случаев это связано с тем, что администратор сервера некорректно настроил назначение маршрутизации клиентам, в этом случае вам необходимо проверить отрабатывает ли в Windows назначение маршрутов (у Windows и Linux разные методы назначения маршрутов и администратор PPTP-сервера мог сконфигурировать только Windows-вариант) и сообщить о ошибке администратору удаленного PPTP-сервера.

Если убедить администратора не удалось и он говорит, что ошибка на нашей стороне, то мы можем просто прописать у себя набор маршрутов до удаленных систем и запускать их вручную, так как с автоматической настройкой маршрутов для ppp-интерфейса методами up и post-up имеются проблемы.

Пожалуйста, оцените мою статью (всего оценок 4, средняя оценка 4.50):

Комментарии к статье:

Пока комментариев нет

Оставьте комментарий:

обязательно

обязательно (не публикуется)

необязательно

обязательно

обязательно