- Настройка PPTP-клиента в Linux
- Комментарии:
- Настройка VPN подключения в Linux
- Что такое VPN и зачем это нужно
- Настройка серверной части на Linux
- Настройка VPN клиентов
- Настройка доступа в интернет через VPN
- ru pptp-linux
- Введение
- Установка
- Настройка
- доступ к серверу VPN
- настройка основных файлов
- /etc/ppp/options.pptp
- /etc/ppp/chap-secrets
- /etc/ppp/peers/$TUNNEL
- Маршрутизация (Роутинг)
- После того, как связь установлена — скрипт /etc/ppp/ip-up
- После того, как связь завершена — скрипт /etc/ppp/ip-down
- Использование
- Автоматическое подключение тоннеля VPN при загрузке системы
- Известные проблемы и их решение
- Ссылки
Настройка PPTP-клиента в Linux
Недавно автору этих строк понадобилось настроить PPTP-соединение в Linux. После чтения документации оказалось что всё очень просто.
Приводимые здесь инструкции применимы в первую очередь для Debian/Ubuntu, однако, скорее всего без больших изменений ими можно воспользоваться и на других дистрибутивах.
Во-первых нужно установить несколько пакетов:
Во-вторых создаём файл /etc/ppp/peers/vpn0 следующего содержания:
Далее открываем в редакторе файл /etc/ppp/chap-secrets и добавляем строку:
Наконец выполняем команду:
И всё работает. В системе должен появиться новый ppp-интерфейс. Проверить это можно командой:
Если же соединения не происходит, то можно попытаться выполнить команду:
И посмотреть какие ошибки будут выданы на экран.
Если нужно чтобы соединение выполнялось автоматически при загрузке компьютера, то нужно добавить в файл /etc/network/interfaces строки:
Таким способом автор успешно подключается к описанному ранее PPTP-серверу.
Комментарии:
Небольшое дополнение: чтобы вальнуть весь трафик через vpn нужно добавить в /etc/ppp/peers/vpn0 строчку:
Единственным недостатком такого подключения является то, что, если по каким либо причинам соединение разорвалось, то интерфейс падает и не переподключается. Мне нужно было создать впн подключение, что бы оно было на фиксированном интерфейсе(для создания правил в iptables), при разрыве переподключалось и не пересоздавала интерфейс(что бы можно было удобно всё это дело мониторить по snmp)
В общем нашел такое решение в роутере ASUS wl500gP, и сплагатил их конфиг себе
Ну собственно создаём файл /etc/ppp/peers/vpn0 с таким содержимым:
noauth refuse-eap
user ‘ ‘
password ‘ ‘
connect true
sync pty ‘pptp —idle-wait 0 —nolaunchpppd —nobuffer —sync’
lock
idle 1800 demand
maxfail 0
#Отвечает за переподключение при падении соединения
persist
ktune
default-asyncmap nopcomp noaccomp
novj nobsdcomp nodeflate
lcp-echo-interval 10
lcp-echo-failure 6
defaultroute
#Создадим подключение на интерфейсе ppp999
unit 999
Anonymous 2011-06-24 11:22:53 (#)
Уважаемый MooSE, не могли бы Вы дополнить статью нюансами подключения к офисному pptp-серверу (построеному по http://www.ylsoftware.com/news/538) через домашний роутер (типа TRENDnet TEW-432BRP). Несколько часов блуждания по форумам успеха не принесли. Напрямую, без роутера, всё работает.
Не могу:) Да и не хочу:) Потому что я знаю в чём проблема и решать еёё дело не благодарное. Сабжевый роутер скорее всего использует классический NAT, описанный ещё в RFC 1631. Этот NAT не содержит хаков для поддержки PPTP, который defective by design.
Моё ИМХО: или ставить роутер с соответствующими хаками, или не использовать сей арахичный протокол, ибо существуют куда как более вменяемые альтернативы.
Основная проблема PPTP в том что он использует GRE, который не работает через NAT. Есть роутеры, которые палят пакеты, идущие на tcp/1723 и вытаскивают из них информацию о туннеле после чего его корректно натят. Но это нарушение RFC 1631. Так что нафиг такое счастье.
Источник
Настройка VPN подключения в Linux
Виртуальные сети, основывающиеся на технологиях VPN, применяются для различных целей и сегодня обеспечивают не только построение корпоративных сетей или защиту при пользовании общедоступными подключениями, а и выход в интернет. Кроме того, благодаря VPN доступно посещение веб-ресурсов в обход блокировкам с сохранением приватности, что в последнее время тревожит пользователей больше всего. Процесс настройки VPN для каждой системы имеет свои особенности и может выполняться в различных вариациях. В зависимости от многих факторов, в том числе целевого назначения и типа построения сети существует несколько способов реализации технологии. Мы рассмотрим, как выполняется настройка VPN на Linux, а также проясним, для чего применимо это соединение.
Методика настройки VPN подключения в Linux.
Что такое VPN и зачем это нужно
Для начала разберём, что представляет собой Virtual Private Network (виртуальная частная сеть) и как применим данный вид технологий. Благодаря VPN можно объединить любое число устройств в частную сеть, и обеспечить защищённый канал для передачи данных. Так, применяя подключение такого типа, пользователи могут сохранить приватность в интернете и не переживать о сохранности данных, в том числе при работе в сетях с общим доступом. Подсоединение к VPN позволяет избежать перехвата информации со стороны злоумышленников, поскольку маршрут обмена пакетами надёжно защищён шифрованием и аутентификацией пользователя. Данные шифруются на стороне отправителя и следуют по каналу связи в зашифрованном виде, а расшифровываются уже на устройстве получателя, при этом у обоих подразумевается общий ключ доступа. С применением VPN возможно создание надёжной сети поверх ненадёжной (как правило, интернета). Подключение пользователя выполняется не напрямую, а посредством сервера, соединённого с внутренней или внешней сетью. Это и обеспечивает приватность в интернете, поскольку в таком случае веб-ресурсам будет виден IP сервера, к которому подсоединён клиент. Сервер потребует прохождения процедуры идентификации, а также аутентификации и после того, как пользователь авторизован, возможна работа с сетью. Наиболее часто VPN используют в следующих случаях:
- Подключение к интернету посредством VPN нередко применимо провайдерами городских сетей, а также на предприятиях. Плюсом такого метода реализации является защищённость канала связи, поскольку возможна настройка разных ступеней безопасности. Это обеспечивается настройкой одной сети поверх другой и доступом в интернет посредством двух разных сетей.
- Внутри корпоративной сети. Объединение в одну сеть позволяет получить безопасным доступ к сети скольким угодно компьютерам сотрудников вне зависимости от их местонахождения и удаления от сервера.
- Объединение компонентов корпоративной сети. Применяя VPN для обеспечения взаимодействия различных частей предприятия, возможна организация доступа для них к отдельным ресурсам общей сети.
Реализация технологии доступна для различных устройств, операционкой которых поддерживается опция или имеется VPN-клиент, способный осуществлять проброс портов с применением TCP/IP в виртуальную сеть. Пользователь может самостоятельно выполнить все действия по настройке. Необходимость в этом возникает даже не ради цели обхода региональных блокировок, ведь для этого можно и не настраивать VPN в компьютере (для посещения заблокированных ресурсов достаточно инсталляции стороннего приложения, установки специального расширения для браузеров или использования встроенного функционала обозревателя). Настроить VPN на ПК или ноутбуке часто требуется в случае смены провайдера для настройки доступа в интернет. Настройка VPN под Linux имеет свои специфические особенности, учитывая многогранность ОС, но принцип остаётся тот же.
Настройка серверной части на Linux
Рассмотрим создание VPN сервера PPTP на платформе Ubuntu Server. С Linux достаточно легко развернуть сервер и сделать это можно даже на слабом устройстве. Наиболее просто реализовать VPN с PPTP, поскольку для воплощения не потребуется устанавливать сертификаты на устройства клиентов, а аутентификация выполняется благодаря вводу имени и пароля. Для начала потребуется инсталлировать пакеты:
Когда пакеты для функционирования PPTP VPN установлены, следует настроить сервер. Чтобы задать диапазон адресов и выполнить прочие главные настройки, откроем файл /etc/pptpd.conf (редактируется с правами администратора):
Для раздачи более сотни подключений разом, находим Connections. Данный параметр должен быть раскомментирован, после чего указываем в этой строке необходимое значение количества подключений. Для отправки по VPN широковещательных пакетов раскомментировать придётся и параметр bcrelay. Далее идём в конец файла, где настроим адреса. Добавляем адрес сервера в VPN сети:
Диапазон адресов для раздачи клиентам (выделяем сразу с некоторым запасом, поскольку увеличить количество, не перезапуская pptpd не получится):
Если у вас имеется несколько внешних IP, можно конкретизировать, по какому из них прослушивать интерфейсы входящих PPTP:
Параметр speed позволяет задать скорость подключений (бит/с). Сохраняем и закрываем файл. Остальные параметры можно настроить в /etc/ppp/pptpd-options:
В секторе #Encryption, отвечающем за шифрование, строки, которые запрещают применение устаревших и небезопасных способов аутентификации, должны быть раскомментированы:
Опция proxyarp должна быть включена, она отвечает за включение поддержки сервером Proxy ARP. Опция lock позволяет разрешить (для этого комментируем) или запретить (для этого раскомментируем) пользователю множественные подключения. Сохраняемся и закрываем файл. Настройка сервера завершена, но для создания клиентов вносим соответствующие записи в /etc/ppp/chap-secrets:
Они выглядят примерно таким образом:
username2 10.10.12.11 password345*
username3 * password787 10.10.11.21
Для каждого пользователя прописываем его имя, пароль, удалённый и локальный IP, разделяя сведения клавишей пробел. Удалённый адрес прописываем при наличии у клиента статического IP и при условии применения исключительно такового, в ином случае предпочтительно ставить звёздочку, чтобы соединение однозначно было выполнено. Локальный адрес же указываем при выделении пользователю одного и того же IP в VPN-сети. В примере выше для клиента в первом варианте соединения осуществляются с любого внешнего IP, локальный выделится первый доступный. Во втором случае – локальный будет выделен первый доступный, но подключения выполняются только с указанного адреса. В третьем – соединиться с сетью можно с любого адреса, локальный же выделится тот, который был нами прописан. Настройка серверной части VPN PPTP завершена, перезапускаем его:
Само устройство в перезагрузке не нуждается.
Настройка VPN клиентов
Выполнить наладку клиентской части VPN сервера можно в любой ОС, мы же будем настраивать на Убунте. По большому счёту соединение будет работать и с параметрами, выставленными по умолчанию, но лучше указать тип подключения и выполнить некоторые другие настройки. Установка VPN на Ubuntu предполагает следующие действия:
- В меню «Система» переходим в «Параметры» и выбираем «Сетевые соединения».
- Выбираем тип соединения «Туннельный протокол точка-точка PPTP».
- Присваиваем подключению наименование или оставляем, как было предоставлено.
- В поле «Шлюз» вбиваем внешний IP сервера, прописываем имя и пароль (в правой части поля для пароля присутствует опция его сохранения для этого юзера).
- Жмём «Дополнительно» и в новом окне ставим флажок напротив пункта «Использовать шифрование MPPE» (это обязательное условие для связи с сервером).
- Теперь позакрываем окна и подключимся к нашему серверу.
Настройка сети VPN для Linux завершена, и устройства могут быть соединены локально, но для входа в интернет через VPN потребуется выполнить ещё некоторые настройки.
Настройка доступа в интернет через VPN
Когда с локальной сетью разобрались, начинаем настраивать соединение с интернетом. Для осуществления подключения в терминале прописываем такие команды:
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.1/24 -j MASQUERADE
iptables -A FORWARD -s 10.0.0.1/24 -j ACCEPT
iptables -A FORWARD -d 10.0.0.1/24 -j ACCEPT
Под 10.0.0.1/24 подразумевается локальный IP сервера и маска сети. Сохраняемся:
и подтверждаем новые параметры:
Теперь на Linux есть возможность соединения с сетью интернет посредством VPN, а также доступны и остальные преимущества работы с виртуальной сетью. Посещаемые ресурсы увидят внешний адрес сервера, что обусловит приватность, а соединение будет надёжно защищено от хакерских атак и обеспечит безопасность передачи данных.
Источник
- ru
- pptp-linux
?Обсуждения
VPN — (с англ. Virtual Private Network) Виртуальная Частная Сеть. Это один из методов соединения компьютера или нескольких клиентов с сервером, предоставляющим доступ в интернет или другую сеть. Само соединение с помощью VPN может быть реализовано с использованием различных средств сетевой безопасности (т.н. IPSec), и/или с использованием других протоколов (таких как IPX), и, как правило, с использованием средств сжатия данных (т.н. MPPE-MPPC от Microsoft для совместимости с клиентами, использующими операционную систему Windows).
Введение
На практике, чаще всего, встречается ситуация, когда пользователь, воспользовавшись услугами провайдера для доступа в сеть Интернет, имеет доступ в локальную сеть, но для выхода в интернет, ему необходимо воспользоваться VPN-соединением, использующим PPTP-протокол.
Установка
Следовательно, для установления данного соединения, нам необходимо установить на нашу систему пакет pptp-linux (PPTP Client), имеющий в зависимостях стандартные библиотеки libc6 (libpcap0.8, Packet CAPture) и службу, реализующую протокол точка-точка, ppp (Протокол PPP, Point-to-Point Protocol — точка-точка):
Внимание! mppe-mppc нужен только для старых ядер, 2.6.15
Так же, возможно, у вас уже установлена служба ppp, в обратном же случае, ?APT подхватит ppp, как зависимость pptp-linux, и установит службу.
Настройка
У вас должны быть следующие данные, которые вам должен предоставить ваш провайдер, предоставляющий вам доступ по VPN, как администратор сервера PPTP. Значения данных, приведённые для более наглядного примера, будут являться стандартными значениями для провайдера beeline, Корбина Телеком:
($SERVER), IP-адрес или hostname сервера, vpn.internet.beeline.ru
($TUNNEL), название туннеля; название подключения, придуманное вами произвольно для удобства, используется для обращения к туннелю, beeline, corbina
($DOMAIN), доменное имя для авторизации, используется только в системе с организацией доступа доменных имён
($USERNAME), имя пользователя, ваш логин, который вы должны использовать для подключения к Интернет, по VPN, десятизначный уникальный номер вида 08xxxxxxxx
($PASSWORD), ваш пароль, который вы должны использовать в паре с логином , очень длинный и сложный
В приведёном ниже, контексте, замените вручную значения в скобках на свои значения. Например, в том месте, где находится $PASSWORD, подразумевается, что Вы замените $PASSWORD своим паролем.
доступ к серверу VPN
Также подразумевается, что вы имеете доступ по сети к серверу VPN, т.н. через локальную сеть. Если ваша локальная сеть не настроена и доступа к серверу VPN нет, то первый этап будет предполагать настройку Ethernet-соединения, а точнее настройку интерфейса на получение настроек по DHCP. Делается это элементарно. В файл /etc/network/interfaces
нужно добавить пару строчек:
где eth0 — это имя сетевого интерфейса, подключённого, через локальную сеть, к серверу DHCP. В случае, если в локальной сети не используется сервер DHCP, ввести параметры соединения требуется вручную:
Возможно, eth0 потребуется заменить на другой интерфейс (т.н. eth1, eth2), в том случае, если у вас имеется более одного интерфейса и локальная сеть подключена к другому Ethernet-интерфейсу. Узнать список доступных интерфейсов можно с помощью команды:
а для того, чтобы узнать к какой сетевой карточке относится интерфейс можно посмотреть вывод команды
После окончательных настроек файла /etc/network/interfaces вам потребуется перезапустить сеть командой:
и проверить правильность настройки интерфейсов:
Самим подключением управляет демон pppd, настроить который можно с помощью, как минимум, двух конфигурационных файлов.
настройка основных файлов
Основные файлы настройки находятся в каталоге /etc/ppp/, а если вы находитесь на терминале, логично будет для удобства перейти в каталог командой:
Настройка соединения по VPN заключается в редактировании следующих файлов:
- /etc/ppp/chap-secrets
- /etc/ppp/options.pptp
- /etc/ppp/peers/$TUNNEL
Настройка каждого из файлов подробно описана ниже:
/etc/ppp/options.pptp
Разумно сохранить, на всякий случай, файл /etc/ppp/options.pptp, т.к. скорее всего, немногим позже, он вам потребуется и пригодится. Вы всегда можете посмотреть значения параметров по-умолчанию из исходного файла.
Файл /etc/ppp/options.pptp устанавливает параметры, которые будут применяться ко всем туннелям. В большинстве случаев, можно воспользоваться только этими параметрами:
для проверки работоспобности оставьте незакомментированными только эти параметры, закомментировав двумя символами решётки (##), для удобства в будущем, остальные параметры. Более детальное описание настроек смотрите здесь ?options.pptp.
/etc/ppp/chap-secrets
PAP (англ. Password Authentication Protocol) — протокол простой проверки подлинности, предусматривающий отправку имени пользователя и пароля на сервер удалённого доступа открытым текстом (без шифрования). Протокол PAP крайне ненадежён, поскольку пересылаемые пароли можно легко читать в пакетах PPP (англ. Point-to-Point Protocol), которыми обмениваются стороны в ходе проверки подлинности. На практике, обычно PAP используется только при подключении к старым серверам удалённого доступа на базе UNIX, которые не поддерживают никакие другие протоколы проверки подлинности. Использование PAP строго не рекомендуется.
CHAP (англ. Challenge Handshake Authentication Protocol) — широко распространённый алгоритм проверки подлинности, предусматривающий передачу не самого пароля пользователя, а косвенных сведений о нём. При использовании CHAP, сервер удалённого доступа отправляет клиенту строку запроса. На основе этой строки и пароля пользователя, клиент вычисляет MD5 (англ. Message Digest-5) hash и передаёт его серверу. Функция hash является алгоритмом одностороннего (необратимого) шифрования (преобразования), поскольку значение функции hash для блока данных вычислить легко, а определить исходный блок по hash, с математической точки зрения, невозможно за приемлемое время. Сервер, которому доступен пароль пользователя, выполняет те же самые вычисления и сравнивает результат с hash, полученным от клиента. В случае совпадения, учётные данные клиента удалённого доступа считаются подлинными и клиент проходит авторизацию на сервере.
MS-CHAP (англ. Microsoft Challenge Handshake Authentication Protocol) — протокол, разработанный корпорацией Microsoft для выполнения процедур проверки подлинности удалённых рабочих станций под управлением Windows. Протокол поддерживает функциональные возможности, привычные пользователям локальных сетей, и интегрирует алгоритмы шифрования и хеширования, действующие в сетях под управлением Windows. Для проведения проверки подлинности без передачи пароля протокол MS-CHAP, как и CHAP, использует механизм «вызов-ответ».
Вызов-ответ (англ. Challenge-response authentication) — способ аутентификации, при котором секрет (а в данном случае — пароль) не передаётся по каналу связи.
Простейший способ такой аутентификации (при хранении паролей в открытом виде):
Клиент, желающий пройти аутентификацию, даёт запрос на начало сеанса связи, и в ответ на это вызываемая сторона (сервер) посылает произвольную, но всякий раз разную информацию (например, текущие дату и время в формате unixtime) клиенту.
Протокол MS-CHAP генерирует запрос и ответ с помощью алгоритма хеширования MD4 (англ. Message Digest 4) и алгоритма шифрования DES (англ. Data Encryption Standard); предусмотрены также механизмы возврата сообщений об ошибках подключения и возможности изменения пароля пользователя. Ответный пакет использует специальный формат, предназначенный для использования сетевыми средствами систем Windows 95, Windows 98, Windows Millennium Edition, Windows NT, Windows 2000 Server и Windows XP..
CHAP аутентификация происходит следующим образом — при установлении PPP-соединения, удалённая сторона предлагает вам аутентификацию CHAP. Вы соглашаетесь, и удалённая сторона высылает вам ключ (challenge), состоящий из случайной последовательности символов, и своё имя. Вы берёте ваш пароль и присланный ключ и прогоняете их через алгоритм MD5. Получившийся результат высылаете вместе со своим именем. Удалённая сторона, зная ваш пароль и высланный её ключ, в свою очередь, проделывает то же самое и у себя, и если её результат совпадает с присланным вами, то аутентификация считается успешной. Таким образом, пароль не передается в открытом виде, но удалённая сторона должна хранить ваш пароль в открытом виде.
Первое, на что надо обратить внимание в методах авторизации PAP и CHAP — то, что они разработаны, чтобы опознавать компьютерные системы, а не пользователей. Разница заключается в том, что как только ваш компьютер (client) создал PPP (Point-to-Point Protocol) соединение с сервером (server), ЛЮБОЙ пользователь вашей системы может использовать это соединение — не только вы. Именно поэтому вы можете устанавливать WAN связь, которая соединяет между собой две LAN, используя PPP. PAP может требовать (а CHAP ТРЕБУЕТ) двунаправленного установления подлинности, то есть компьютер на каждом конце соединения, и клиент, и сервер, должен иметь правильные имя и пароль другой стороны. Однако, большинство PPP серверов с доступом по коммутируемым линиям, использующие PAP, этим способом НЕ пользуются.
Файл /etc/ppp/chap-secrets содержит данные для авторизации, в частности, пары логин и пароль, используемые при авторизации через протокол проверки пароля CHAP. В данном файле вам необходимо указать логин, пароль, а иногда и название PPTP-сервера, к которому будет происходить подключение. Формат записи данных в этот файл следующий:
Четыре поля с разделителем между значениями параметров — символом табуляции или пробелом.
Пару ваш_логин и ваш_пароль вам обязан предоставить ваш провайдер (как администратор сервера PPTP на принимающей стороне), чтобы позволить вам соединяться с их системой, и выходить дальше в Интернет, через VPN, используя предоставленные провайдером ресурсы.
Первое поле (client) содержит значение вашего логина, для доступа в Интернет, как имя вашего компьютера.
CHAP требует, чтобы вы (client) и PPTP-сервер (server) имели взаимно опознавательные методы — вы должны позволить: и вашей машине (client) опознать удалённый сервер (server), и удалённому серверу (server) опознать вашу машину (client). На практике, обычно, вашего провайдера (server) не интересует имя вашего компьютера (client) вообще, так что, вы, скорее всего, должны будете использовать ваш логин, предоставленный провайдером, как имя вашего компьютера (client).
Второе поле (server) содержит значение имени удалённого компьютера (PPTP-сервера).
Так как методы PAP/CHAP могут служить для опознания компьютеров, технически вы должны также указать имя удалённого компьютера (server). Однако, поскольку большинство людей работает только с одним провайдером, то вы можете использовать в файле секретов (/etc/ppp/chap-secrets), вместо имени удалённого хоста (server), групповой символ звёздочки для значения поля Server. На практике, обычно, если заранее это не оговорено, используется произвольное значение, т.н. «PPTP» или «bee».
Также стоит заметить, что многие провайдеры применяют модемные пулы, соединённые с различными терминальными серверами — каждый со своим именем, но ДОСТУПНЫЙ с одного (циклически переключаемого) входного номера. Следовательно, может быть очень сложно, при некоторых обстоятельствах, узнать заранее имя удаленного компьютера (server), поскольку это зависит от того, к какому терминальному серверу вы подсоединились.
Третье поле (secret) содержит секрет, а в данном случае значение пароля, из пары к значению логина (первое поле client), для авторизации на PPTP-сервере, при запуске VPN-подключения клиентом.
Четвёртое поле (IP addresses) может содержать значение либо из выбранных и указанных вами принудительно, IP-адресов, которые входят в набор IP адресов, которые предоставит вам провайдер, как PPTP-сервер, при установке VPN-соединения, либо значение поля IP addresses должно содержать групповой символ звёздочку, что позволяет использовать абсолютно все IP-адреса, из, подготовленного PPTP-сервером для вас заранее, набора IP-адресов. Также, вы можете оставить это поле пустым, если вы захотите использовать динамическую (или статическую) выдачу IP-адреса при распределении IP-адресов вашим провайдером.
Обратите внимание, что вы не должны указывать IP-адрес в значение поля IP addresses, если вы не требуете от PPTP-сервера ПРИНУДИТЕЛЬНО выдать (по DHCP или статически) вам этот IP-адрес. Даже если вы попробуете это сделать, скорее всего у вас ничего не получится, так как большинство PPP-серверов, для защиты, не позволяют удалённой системе (client) устанавливать принудительно, произвольный на выбор, свой IP-адрес, в таком случае, IP-адреса выдаются только со стороны провайдера (PPTP-сервера, server).
Если у вас имеется только одна пара логин/пароль, то в значения полей Server и IP addresses можно указать звёздочку. В противном случае, достаточно указать различные имена PPTP-серверов (server), с соответствующей им парой логин/пароль.
В случае, если Вы используете сервер PPTP, который, скорее всего, не требует авторизации по доменным именам, не вписывайте $DOMAIN\\ в поле client, установив в значение только $USERNAME.
В случае, если пароль или остальные значения содержат какие-либо специальные символы, то значение заключают в кавычки — «ваш пароль». Для подробной информации прочитайте руководство страниц man по pppd:
Обратите внимание! Пароль из пары к логину хранится не в зашифрованном виде. Для большей безопасности, установим права:
Общий пример содержания файла /etc/ppp/chap-secrets для более наглядного понимания:
Если ваша машина (client) — fred, а удалённая (server) — barney, то ваша машина установила бы name fred remotename barney, а удалённая машина (server) установит name barney remotename fred в их соответствующих файлах /etc/ppp/options.ttySx
/etc/chap-secrets файл для fred (client) такой:
/etc/chap-secrets файл для barney (server) такой:
Обратите внимание, на то, что обе машины имеют записи для двунаправленного установления подлинности. Это позволяет локальной машине (client) называть себя на удалённой машине (server). И удалённой машине (server) называть себя на локальной машине (client).
/etc/ppp/peers/$TUNNEL
Создайте файл /etc/ppp/peers/$TUNNEL, к примеру:
со следующим содержимым:
Первая строчка запускает в интерфейсе псевдотерминала (pty, pseudo terminal interface) клиент pptp для подключения к PPTP-серверу, указанному в параметре $SERVER (VPN-сервер, vpn.internet.beeline.ru), с дополнительными параметрами-ключами программы pptp.
Вторая строчка параметром name задаёт «имя локальной машины» (client), в данном случае, это — ваш логин для авторизации на сервере PPTP. Значение параметра name обязано совпадать с указанным значением в поле client файла /etc/ppp/chap-secrets, так как программа pptp, при запуске, будет считывать из файла /etc/ppp/chap-secrets построчно данные, со значениями остальных полей, сравнивая со значением параметра name, значение поля client. Иначе говоря,
для уникального подключения $TUNNEL, из каталога с сетевыми подключениями PPP — /etc/ppp/peers/
Третья строчка параметром remotename задаёт «имя удалённой машины» (server), в данном случае, используется произвольное значение, т.н. «PPTP» или «bee». Как уже упоминалось выше, методы авторизации PAP и CHAP разработаны, чтобы опознавать компьютерные системы, а не пользователей. Разница заключается в том, что как только ваш компьютер (client) создал PPP (Point-to-Point Protocol) соединение с сервером (server), ЛЮБОЙ пользователь вашей системы может использовать это соединение — не только вы. PAP может требовать (а CHAP ТРЕБУЕТ) двунаправленного установления подлинности, то есть компьютер на каждом конце соединения, и клиент, и сервер, должен иметь правильные имя и пароль другой стороны. Поэтому значение параметра remotename обязано совпадать с указанным значением в поле server файла /etc/ppp/chap-secrets, так как программа pptp, при запуске, будет считывать из файла /etc/ppp/chap-secrets построчно данные, со значениями остальных полей, сравнивая со значением параметра remotename, значение поля server. Иначе говоря,
для уникального подключения $TUNNEL, из каталога с сетевыми подключениями PPP — /etc/ppp/peers/
Таким образом, в PPP достигается авторизация не только пользователей, но и машин, что позволяет использовать как одновременную общую авторизацию всех пользователей в системе на машине (как PPTP-клиенту) на одно общее VPN-подключение по PPP, так и абсолютно отдельные друг от друга VPN-подключения по PPP, с собственной авторизацией на PPTP-сервере, на каждого пользователя в системе (как PPTP-клиентам).
Четвёртая строчка просто подключает отдельный внешний файл /etc/ppp/options.pptp с общими настройками для PPTP, в текущий файл. В том случае, если вам потребуется изменить параметры настройки для вашего каждого отдельного PPTP-соединения, просто меняйте параметры в текущем файле. Вы можете добавить в настройку отдельного каждого соединения такие параметры, как:
Пятая строчка назначает параметр ipparam, значение которого (в переменной $6 ($PPP_IPPARAM)), получат скрипты /etc/ppp/ip-up (при запуске VPN-соединения) и /etc/ppp/ip-down (при остановке VPN-соединения). На практике, обычно, в значение параметра ipparam удобно указать название подключения, и затем, принудительно подключить файлы с одноимённым названием подключения, из каталогов /etc/ppp/ip-up.d/ и /etc/ppp/ip-down.d/, вставив в соотвествующие файлы со скриптами:
В случае, если вы планируете по VPN-подключению использовать доступные узлы с другой стороны PPTP-сервера, вместо доступных имеющихся, то наиболее удобным вариантом для вас будет указание в значение параметра ipparam — старого маршрута до имеющихся доступных узлов, который вы на время подключения замените, для доступности узлов за PPTP-сервером, на новый. Список маршрутов, составляющий таблицу маршрутизации, можно узнать командой:
В случае, если Вы используете сервер PPTP, который, скорее всего, не требует авторизации по доменным именам, не вписывайте $DOMAIN\\ во вторую строчку, установив в значение параметра name только $USERNAME.
Маршрутизация (Роутинг)
Как только вы запустили подключение по PPTP туннелю, проверьте доступность узлов с другой стороны туннеля. Особенность подключения к провайдерам заключается в том, что PPTP-сервер (т.н. VPN-сервер «vpn.internet.beeline.ru») находится не в одной подсети с вами, и этот сервер вам доступен через стандартный шлюз (default gateway, шлюз по-умолчанию). Когда интернет отключён, VPN-подключение по PPTP-туннелю остановлено, маршрутом по-умолчанию (default route) в таблице маршрутизации является маршрут на default gateway. Посмотреть маршрут по-умолчанию default route, указывающий на default gateway, можно при помощи команд:
Для доступности узлов с другой стороны туннеля, которые находятся за PPTP-сервером, иначе говоря, для установки связи с Интернетом, необходимо, чтобы маршрут по-умолчанию default route указывал на шлюз, отвечающий за доступность узлов за PPTP-сервером, то есть, на образующийся при VPN-подключении, интерфейс ppp0. Следующая команда удалит маршрут по-умолчанию default route, который указывает на default gateway:
затем нам понадобится создать новый маршрут по-умолчанию default route, но уже указывающий на шлюз, предоставляющий вам доступность узлов с другой стороны туннеля:
или вы также можете создать новый маршрут по-умолчанию default route, указывающий на интерфейс ppp0:
если установилось VPN-соединение, что можно проверить командой:
Для того, чтобы после каждого запуска и остановки VPN-подключения вам не приходилось вручную менять маршрут по-умолчанию default route, есть два решения:
- параметр defaultroute/replacedefaultroute
- скрипты в каталогах /etc/ppp/ip-up.d/ и /etc/ppp/ip-down.d/
Для этого в настройке pppd нужно прописывать параметр defaultroute. Проблема в том, что в некоторых релизах pppd отказывается замещать default route на новый default gateway, говоря при этом: will not replace defaultroute.
В таких случаях, можно добавить недокументированный параметр replacedefaultroute, благодаря которому, всякие манипуляции, с удалением маршрутов по-умолчанию default route на default gateway, становятся ненужными. Однако, этот параметр работает не во всех релизах pppd.
Когда устанавливается VPN-подключение по PPTP туннелю, маршрут по-умолчанию default route указывает на PPTP-сервер, доступный по интерфейсу ppp0. В связи с замещением этим маршрутом по-умолчанию предыдущего default route, система не знает, как добраться до PPTP-сервера, так как он недоступен, исходя из таблицы маршрутизации.
Поэтому маршрут до PPTP-сервера нужно прописать в таблице маршрутизации вручную. Следующая проблема заключается в том, что PPTP-серверов у каждого провайдера много, и их список (nslookup vpn.internet.beeline.ru) постоянно меняется. Выводы:
- Отслеживайте любые изменения в вашей таблице маршрутизации и вносите только тщательно проверенные и правильные маршруты.
- Используйте скрипты для автоматического управления маршрутами вместо добавления постоянных маршрутов.
Для использования автоматического управления маршрутами через скрипты, воспользуйтесь файлами, содержащими скрипты /etc/ppp/ip-up и /etc/ppp/ip-down
После того, как связь установлена — скрипт /etc/ppp/ip-up
Как только связь PPP установлена, pppd ищет /etc/ppp/ip-up. Если этот скрипт существует и является исполняемым, то pppd выполняет скрипт. Скрипт позволяет вам автоматизировать любые специальные команды маршрутизации, которые могут вам понадобиться, и любые другие действия, которые вы хотите выполнить при активации соединения PPP.
Файл всего лишь является shell скриптом, и он может делать всё, что может делать shell скрипт (то есть фактически всё что вы захотите). Например, вы можете заставить sendmail послать исходящую почту, стоящую в очереди. Точно так же, вы можете вставить команды в скрипт ip-up для проверки почты (используя POP), ожидающей вашей проверки в вашем почтовом ящике.
Имеются следующие ограничения на /etc/ppp/ip-up:
Для усиления защиты он выполняется в преднамеренно ограниченном окружении. Это означает, что вы должны указывать полный путь к запускаемым файлам внутри скриптов и т.д. Технически /etc/ppp/ip-up — это программа, а не скрипт. Это означает, что он может быть всё таки выполнен — и следовательно, ему потребуется стандартный файл (#!/bin/bash) в начале первой строки скрипта, также он должен быть читаемым и исполняемым от пользователем root.
Если вы связываете две локальных сети, вы должны будете установить специфические маршруты к ‘посторонней’ локальной сети. Это легко сделать используя скрипт /etc/ppp/ip-up. Единственая трудность возникает, если ваша машина работает с несколькими PPP соединениями. Потому, что /etc/ppp/ip-up выполняется для КАЖДОГО ppp соединения, которое устанавливается, так что, вы должны тщательно проверить на правильность команды маршрутизации для определённого устанавливаемого соединения — и не выполнять их, когда устанавливается любое другое соединение.
После того, как связь завершена — скрипт /etc/ppp/ip-down
Вы можете создать скрипт, который будет выполняться, как только связь будет завершена. Он называется /etc/ppp/ip-down. Он может использоваться, чтобы отменить что-нибудь, что вы сделали в соответствующем скрипте /etc/ppp/ip-up. Например, вернуть прежние маршруты или правила iptables.
Помните, скрипт — это только стандартный скрипт bash и может использоваться так, чтобы автоматизировать ЛЮБУЮ функцию, которую нужно выполнять каждый раз, при установке соответствующего PPP соединения.
Использование
Тоннель VPN запускается командой pon:
Тоннель останавливается командой poff:
Автоматическое подключение тоннеля VPN при загрузке системы
Для автоматического подключения при загрузке следует добавить в /etc/network/interfaces следующую запись:
Если в локальной сети используется DHCP, то в некоторых случаях PPTP-соединение инициализируется еще до того, как были получены настройки от DHCP-сервера. В этом случае /etc/network/interfaces следует изменить таким образом, чтобы PPTP-соединение устанавливалось только после полной инициализации ethernet-соединения:
Известные проблемы и их решение
Если у вас в процессе использования «PPTP Client» возникнет проблема, то вполне возможно, что решение проблемы вы найдёте на страничке Руководства по диагностике «PPTP Client»
В большинстве случаев, новички, при запуске PPTP-подключения к провайдеру, для установки VPN-соединения с Интернет, столкнутся с проблемой маршрутизации, которая заключается в том, чтобы на момент активности PPTP-подключения, заменить старые маршруты на новые, а после завершения PPTP-подключения — заменить новые маршруты обратно на старые. Правильный выход из данной ситуации был описан выше, в разделе «Маршрутизация (Роутинг)». При настройке pppd, использование параметров defaultroute и replacedefaultroute не рекомендуется, во избежание возможных и никому не нужных проблем с маршрутами на машине.
Также, при возникновении проблем после переподключения PPTP-подключения (pon,poff,pon. ) можете добавить в скрипт /etc/ppp/ip-down следующее:
где eth0 — это интерфейс вашей сетевой карточки, через который, в таблице маршрутизации, доступен PPTP-сервер.
На практике, обычно, также вы можете заметить, просматривая, в процессе хода работы программы PPTP, файл /var/log/syslog, что он переполнен сообщениями типа
от программы PPTP.
Комментарий разработчика доступен по ссылке buffering_out_of_order, а ниже приводится перевод:
буферизация «out-of-order» («не в обычном порядке») пакета
Признак: при работе pptp, появляется это сообщение, которое, возможно, связано и с любым другим событием:
Диагноз: это — нормальная ситуация. Множество сетевых соединений блокирует или меняет порядок следования пакетов в общем потоке пакетов — это обычная нормальная штатная ситуация как часть в их работе. Данное сообщение информирует вас о том, что пакет был потерян или у него был изменён порядок следования в общем потоке пакетов. Сетевая инфраструктура TCP (в модели OSI), которая находится выше этого уровня, ретранслирует потерянные данные.
(фраза «out-of-order» («не в обычном порядке») в этом контексте относится к последовательности пакетов, и не должна быть перепутана с использованием фразы в некоторых переводах на другие языки для предупреждения о неработоспособности общедоступного оборудования.)
Решение: если потери пакетов происходят на уровне выше, чем физический уровень (в модели OSI), проверьте физический уровень (в модели OSI) на наличие возможных проблем.
Вы можете также использовать возможность подсчёта статистики PPTP-соединения, для получения и понимания статистики смотрите руководство страниц man.
Собственно, если проблем на вашем физическом уровне — нет, это не исключает наличие проблем на физическом уровне PPTP-сервера, т.н. провайдера.
Чтобы запретить запись сообщений в лог syslog, раздумывая кто виноват — проблемы физического уровня провайдера или проблемы «PPTP Client» (в любом случае, не проблемы службы, реализующей протокол точка-точка, ppp), добавьте параметр-ключ —loglevel 0 (уровень записи в лог, 0=низкий, 1=по-умолчанию, 2=высокий) в запуск программы pptp интерфейсом псевдотерминала pty (файл «/etc/ppp/$TUNNEL»).
Параметр-ключ —timeout установит время для ожидания перед восстановлением пакетов в общем потоке (от 0.01 до 10 секунд). Добавление параметра-ключа —nobuffer позволит вам полностью отключить буферизацию и восстановление пакетов в общем потоке, при этом любое значение параметра-ключа —timeout будет проигнорировано.
Заметьте, что сообщений очень много, что увеличивает файл syslog до огромных размеров, а это значит, что сообщение, добавленное в файл syslog, пишется после удачной проверки каждого «out-of-order» («не в обычном порядке») пакета, и скорость VPN-соединения из-за этого снижается очень значительно, что не наблюдается при использовании, основанного на netgraph(4), аналога «PPTP Client» — mpd для операционной системы FreeBSD.
Универсального и единого решения для данной проблемы — нет, и если вас не устраивает текущая ситуация, то используйте альтернативы «PPTP Client» (в любом случае, не службы, реализующей протокол точка-точка, ppp), т.н. уточните, а использует ли VPN-сервер (vpn.internet.beeline.ru ), совместно с PPTP, протокол L2TP ?
И если ответ от техподдержки был — да, посмотрите описание настройки VPN-подключения по протоколу L2TP с помощью openl2tp — здесь, и с помощью демона xl2tpd — здесь.
Если у вас имеется какая-то другая проблема при работе с «PPTP Client», то вполне возможно, что решение проблемы вы найдёте на страничке Руководства по диагностике «PPTP Client»
Ссылки
netinstall — Сетевая установка с минимальным компакт-диском
Руководство APT — Добавление CD-ROM в файл sources.list
Клиент PPTP — Официальный сайт «Клиент PPTP», клиент Linux, FreeBSD, NetBSD и OpenBSD для протокола от Microsoft — Point-to-Point Tunneling Protocol, PPTP
Клиент PPTP — Руководство по использованию в Debian
Клиент PPTP — Руководство по диагностике «PPTP Client»
Источник