Настройка VPN-соединения
VPN (с англ. Virtual Private Network) - Виртуальная Частная Сеть. Один из методов соединения компьютера или нескольких с сервером, предоставляющим доступ в интернет или другую сеть. Само соединение с помощью VPN может реализовываться с использованием различных средств сетевой безопасности (например, IPSec) и/или использования других протоколов (таких как IPX) и как правило с использованием средств сжатия данных (например, MS MPPE-MPPC для совместимости с клиентами использующих ОС Windows).
Содержание |
[править] Установка нужных программ
На практике чаще всего встречается ситуация, когда пользователь имеет доступ в локальную провайдерскую сеть, но для выхода в интернет ему необходимо воспользоваться VPN-соединением, использующим PPTP-протокол. Следовательно, для установления данного соединения нам необходимо установить на нашу систему пакеты ppp и pptpclient:
Также нужно убедиться, что ядро собрано должным образом:
| Конфигурация ядра Linux: Необходимые настройки ядра |
Device Drivers --->
[*] Network device support --->
<M> PPP (point-to-point protocol) support
[*] PPP multilink support (EXPERIMENTAL)
[*] PPP filtering
<M> PPP support for async serial ports
<M> PPP support for sync tty ports
<M> PPP Deflate compression
<M> PPP BSD-Compress compression
<M> PPP MPPE compression (encryption) (EXPERIMENTAL)
<M> PPP over Ethernet (EXPERIMENTAL)
<M> PPP over L2TP (EXPERIMENTAL)
|
[править] Настройки подключения
Все настройки хранятся в традиционном файле /etc/conf.d/net. Предположим, что у вас есть сетевой интерфейс eth0, который получает все необходимые настройки по DHCP. Тогда параметры подключения будут следующими:
# Настройки интерфейса для DHCP
config_eth0=( "dhcp" )
# Настроки для PPP
config_ppp0=( "ppp" )
# 10.8.0.1 - IP-адрес провайдерского сервера авторизации
link_ppp0="pty 'pptp 10.8.0.1 --nolaunchpppd --nobuffer'"
# Логин и пароль для выхода в интернет
username_ppp0='login'
password_ppp0='password'
# Различные настройки PPP-сессии, подробнее см. ниже
# Эти настройки минимально необходимые
# Важный момент - при опции defaultroute не должно быть маршрута по умолчанию,
# иначе во время подключения маршрут не будет заменен
pppd_ppp0=(
lock
nodeflate
defaultroute
nobsdcomp
persist
logfile /var/log/pptp-client.log
)
# Не запускать интерфейс без eth0
depend_ppp0() {
need net.eth0
}... pppd_ppp0=( lock nodeflate nobsdcomp require-mppe-128 require-mschap-v2 refuse-eap persist noauth ) ...
Убедитесь также, что до серверов аутентификации есть маршрут через ваш оконечный провайдерский маршрутизатор (проверяется по команде route -n), если их нет, то добавьте:
...
# Подставьте свои значения
# 10.50.50.1 - ближайший провайдерский шлюз
config_eth0=( "10.50.50.2 netmask 255.255.255.0 brd 10.50.50.255" )
routes_eth0=(
"10.8.0.1 via 10.50.50.1"
)
...Теперь остается сделать ссылку на net.lo для запуска ppp0:
[править] Опции pppd
- nobsdcomp: Выключаем протокол передачи данных (сжатия) bsdcomp, можно и включить его (убрать частицу «no»)
- nodeflate: Еще один протокол передачи данных (сжатия), можно и включить его (убрать частицу «no»)
- require-mppe: Включаем требование использования mppe-mppc (начиная с версии ядра 2.6.13 и выше, данную опцию обычно можно закомментировать в случае, когда не требуется поддержка mppe-mppc)
- mtu 1000: Устанавливаем значение MTU (может лежать в пределах от 128 до 16384)
- mru 1000: Устанавливаем значение MRU (может лежать в пределах от 128 до 16384)
- lcp-echo-failure 10: Эта опция передает pppd сигнал на отключение, если после 10 LCP эхо-запросов не было ни одного верного LCP эхо-ответа.
- lcp-echo-interval 10: Эта опция заставляет pppd посылать фреймы LCP эхо-запросов каждые 10 секунд.
- nomppe: Отключаем MPPE (Microsoft Point to Point Encryption)
- nomppc: Отключаем MPPC (Microsoft Point to Point Compression)
- persist: После разрыва соединения попытаться заново подключиться.
- require-chap или refuse-chap: Требовать от сервера или отвергать от сервера аутентификацию с помощью CHAP.
- require-mschap или refuse-mschap: Требовать от сервера или отвергать от сервера аутентификацию с помощью MS-CHAP.
- require-mschap-v2 или refuse-mschap-v2: Требовать от сервера или отвергать от сервера аутентификацию с помощью MS-CHAPv2. Обычно необходимо включить данную опцию, если сервер работает под ОС Windows(TM).
- require-pap или refuse-pap: Требовать от сервера или отвергать от сервера аутентификацию с помощью PAP (Password Authentication Protocol). Уточните у вашего провайдера (администратора сети), какой метод аутентификации используется на вашем сервере (Обычно CHAP (MS-CHAPv2), но иногда может быть и PAP).
- xonxoff: Используем программный контроль (XON/XOFF) приемо-передачи данных. Встречается крайне редко, когда необходимо активировать данную функцию.
- cdtrcts: Используем нестандартный аппаратный контроль (DTR/CTS) приемо-передачи данных. Встречается крайне редко, когда необходимо активировать данную функцию.
- passive: Данная опция включает «пассивный» режим слежения за соединением, иными словами, если в течении длительного времени не приходит корректный LCP-ответ от сервера, то все равно ожидаем, когда он придет. Если данная опция не задана, произойдет разъединение после указанных значений в опциях lcp-echo-failure N и lcp-echo-interval N.
- crtscts или noctrcts: Включаем или выключаем режим приема-передачи данных RTS/CTS.
- updetach: При использовании этого параметра pppd «отсоединит» вывод от текущего терминала как только ppp-соединение успешно установится.
- idle 3600: Время ожидания (в секундах), после которого произойдет рассоединение, если за этот промежуток времени не было ни одного запроса/ответа на/от сервера.
- debug: Вывод отладочной информации в stdout.
- dump: Выводит на экран все опции, которые передаются демону pppd, а также указывается из каких файлов эти опции даны.
- defaultroute: Указывает pppd, что данное соединение должно использоваться по умолчанию в таблице роутинга ядра. Работает в том случае, если изначально в таблице роутинга ядра не задан маршрут для destination "default". В противном случае выводится строка о невозможности изменения имеющегося роутинга для «default».
[править] Запуск и остановка соединения
Запуск производится следующим образом (все делается под пользователем root):
Остановка так:
При желании net.ppp0 можно поставить в автозапуск:
[править] Несколько VPN-подключений
Чисто технически ничто не мешает настроить интерфейсы ppp1, ppp2 и так далее. Единственное, что здесь критично - это правильная маршрутизация.