Настройка VPN-соединения

Материал из Gentoo Linux Wiki
Перейти к: навигация, поиск

VPN (с англ. Virtual Private Network) - Виртуальная Частная Сеть. Один из методов соединения компьютера или нескольких с сервером, предоставляющим доступ в интернет или другую сеть. Само соединение с помощью VPN может реализовываться с использованием различных средств сетевой безопасности (например, IPSec) и/или использования других протоколов (таких как IPX) и как правило с использованием средств сжатия данных (например, MS MPPE-MPPC для совместимости с клиентами использующих ОС Windows).

Содержание

[править] Установка нужных программ

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

USE="dhcp" emerge 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. Тогда параметры подключения будут следующими:

Файл: /etc/conf.d/net
# Настройки интерфейса для 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
}
На заметку: Для подключения по VPN к Windows 2003 Server использовались опции:
Файл: /etc/conf.d/net
...

pppd_ppp0=(
	lock
	nodeflate
	nobsdcomp
	require-mppe-128
	require-mschap-v2
	refuse-eap
	persist
	noauth
)

...

Убедитесь также, что до серверов аутентификации есть маршрут через ваш оконечный провайдерский маршрутизатор (проверяется по команде route -n), если их нет, то добавьте:

Файл: /etc/conf.d/net
...
# Подставьте свои значения
# 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:

ln -s /etc/init.d/net.lo /etc/init.d/net.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):

/etc/init.d/net.ppp0 start

Остановка так:

/etc/init.d/net.ppp0 stop

При желании net.ppp0 можно поставить в автозапуск:

rc-update add net.ppp0 default

[править] Несколько VPN-подключений

Чисто технически ничто не мешает настроить интерфейсы ppp1, ppp2 и так далее. Единственное, что здесь критично - это правильная маршрутизация.

поддержка по wiki