Wednesday 22 October 2008

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

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

Для настройки vpn подключения необходимо иметь в ядре поддержку PPTP, также необходимо установить пакеты pptpclient, ppp.

Сначала необходимо сконфигурировать сетевой интерфейс, в Debian это делается очень просто в файле /etc/network/interfaces.

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

iface eth0 inet dhcp #означает что ip адресс, адресса dns серверов и маршруты получаем от dhcp сервера
post-up /etc/routes #скрипт, который выполняется после поднятия интерфейса, очень полено если dhcp выдаёт кривые маршруты
auto eth0



файл /etc/ppp/peers/prov содержит параметры конкретного подключения


persist
pty "pptp 10.129.10.2 --nolaunchpppd" # адрес vpn сервера
#pty "/usr/sbin/pppoe -I eth0 -T 80 -C prov_name" # В случае использоваия PPPoE все настройки отличаются только этой строчкой
name # здесь писать свой логин
ipparam prov
file /etc/ppp/options.pptp



файл /etc/ppp/options.pptp содержит опции работы ppptp демона


# Использовать pppX в качестве шлюза по умолчанию
defaultroute

# Использовать вместо шлюза по умолчанию
replacedefaultroute

# Не использовать сжатие
nodeflate

# Не использовать BSD сжатие
nobsdcomp


# Запрашивать аутентификацию перед отправкой или приёмом пакетов
#auth

# Использовать аппаратный контроль потока данных ( RTS/CTS) через последовательный порт.
crtscts

# Использовать аппаратный контроль потока данных ( RTS/CTS) через последовательный порт.
#xonxoff

# Определяет последовательность прерывания подключения
#escape 11,13,ff


# Блокировать устройство после запуска pppd
lock

# Не показывать пароль при использовании PAP аутентификации(включено по умолчанию)
hide-password

# Показывать пароль при использовании PAP аутентификации
#show-password

# Установить значение MRU [Maximum Receive Unit] определяет размер (в байтах) максимального блока, который может быть принят на канальном уровне коммуникационного протокола. pppd
# Минимальное значение MRU равно 128. Значение по умолчанию 1500.
# Значение 296 рекомендуется для медленных подключений (40 байт для TCP/IP заголовка + 256 байт данных).
mru 1500Option nopredictor added. It defines if predictor corrector algorithm is used or not. Option noconviter added. It skips convergence double checking in ...

# Установить значение маски подсети
netmask 255.255.255.0

# При наличии интерфеса с заданным ip адрессом pppd будет пытаться использовать этот адрес, параметр noipdefault пресекает эти попытки
noipdefault

# При включенном параметре pppd после неудачной попытки подключения будет ожидать подключения с другой стороны
#passive

# С этой опцией pppd начнёт передавать свои пакеты только после получения пакета от удалённой системы
# используется при подключении к медленным системам
#silent


# Оставаться в терминале, иначе pppd станет фоновым процессом
#-detach


# Выводить отладочную информацию
#debug

# Добавлять имя домена к имени кмпьютера
#domain

# Включить вывод отладочной информации драйвера PPP уровня ядра
#kdebug n

# Установить значение MTU [Maximum Transmit Unit] используется для определения максимального размера блока (в байтах), который может быть передан на канальном уровне коммуникационного протокола.. Unless the peer
mtu 1492

# Установить имя машины
#name

# Использовать в качестве name hostname, перезаписывает опцию name
#usehostname

# Задать имя удалённой системы для аутентификации
#remotename

# Добавить в ншу таблицу соответствия физических и ip адрессов ip адресс удалённой машины, ассоциированный
# с физическим адрессом нашей сетевой карты (не использовать если сервер находится в другом сегменте сети)
#proxyarp

noproxyarp

# Отключить протоколы IPXCP и IPX.
#noipx

# Не переподключаться в случае разрыва, задано по умолчанию
#nopersist

# Переподключаться в случае разрыва
persist

# Выключить pppd после неудачных попыток подключения
maxfail 2

# Инициализировать соединение только по требованию, например когда приходят пакеты.
# С этой опцией, удалённый IP должен быть задан
#demand

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

# Время которое нужно ждать перед повторным подключением после разрыва связи
holdoff 10

# Задержка в миллисекундах после выполнения подключения до начала передачи пакетов
#connect-delay

# Позволяет задать фильтр, показывающий какие пакеты считать траффиком, а какие нет
# фильтр по дефолту tcpdump считает траффиком все пакеты
#active-filter



Осталось записать в /etc/ppp/chap-secrets логин и пароль и можно подключаться командой pppd call prov

No comments: