Для создания VPN-соединения в linux'e надо установить PPTP-клиента (PPTP - Point to Point Tunneling Protocol)
и pppd - демона PPP (PPP - Point to Point Protocol) c поддержкой MPPE (MPPE - Microsoft Point-To-Point Encryption).
Установка pptp-клиента.
Для установки PPTP клиента под Linux необходимо установить программу
pptpclient,
исходный код которой можно скачать либо с сервера
SourceForge,
либо с нашего ftp-сервера (файл
pptp-linux-1.5.0.tar.gz). Для RPM-based систем - файл
pptp-linux-1.5.0-1.i386.rpm - уже скомпилированный, либо
pptp-linux-1.5.0-1.src.rpm - в исходниках.
Для установки бинарного пакета руководствуйтесь документацией на Ваш пакетный менеджер.
Для установки из исходных текстов распакуйте архив следующими командами:
$ tar -xzvf pptp-linux-1.3.1.tar.gz
$ cd pptp-linux-1.3.1
|
Для сборки pptp Вам понадобятся программы gcc и make. Наберите команду
и из-под root'а
для его установки.
Установка PPPD.
Скачиваем два файла: ppp-2.4.2+mppe.tar.gz
и ppp-2.4.2b3.tar.gz.
В первом есть mppe-патчи для ядра. А второй - просто посвежее. Распаковываем первый.
$ tar -xzvf ppp-2.4.2+mppe.tar.gz
$ cd ppp-2.4.2
|
переходим в каталог linux
и запускаем скрипт, который пропатчит ядро на предмет MPPE
$ sh ./mppeinstall.sh /usr/src/linux
|
Подразумевается, что исходники Вашего ядра установлены.
Переходим в каталог ppp-2.4.2b3
Конфигурируем, запускаем компиляцию
и устанавливаем готовый pppd
Компиляция ядра.
На предыдущем шаге на ядро был наложен патч, который добавляет в него MPPE.
Теперь надо задействовать этот патч.
$ cd /usr/src/linux
$ make menuconfig
|
в разделе "Network device support" надо включить поддержку PPP - "PPP (point-to-point) support".
Если у Вас ядро 2.2.х, то этого достаточно, если же ядро 2.4.х, то надо
также отметить пункты "PPP Deflate compression", "PPP BSD-Compress compression",
"PPP MPPE compression (encryption)". Вы можете включить указанную поддержку как в
виде модулей, так и внедрить в ядро. После этого выполнить
$ make dep
$ make
$ make modules && make modules_install
$ make install
|
Если поддержка ppp и mppe была включена в виде модулей, то в файл
/etc/modules.conf (или /etc/conf.modules - зависит от дистрибутива) надо добавить строки:
для ядра 2.4:
alias /dev/ppp ppp_generic
alias char-major-108 ppp_generic
alias tty-ldisc-3 ppp_async
alias tty-ldisc-14 ppp_synctty
alias ppp-compress-18 ppp_mppe
alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate
|
для ядра 2.2:
alias tty-ldisc-3 ppp
alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate
alias ppp-compress-18 ppp_mppe
|
После этого надо перезагрузиться.
Настройка PPPD.
Файлы настроек pppd находятся в каталоге /etc/ppp.
файл /etc/ppp/options
local
lock
nodetach
mtu 1512
mru 1512
require-mppe-40
require-mppe-128
require-mppe
lcp-echo-interval 30
lcp-echo-failure 5
require-mschap-v2
refuse-pap
refuse-chap
refuse-mschap
refuse-eap
defaultroute
user ВАШ_ЛОГИН
noauth
|
Вместо ВАШ_ЛОГИН надо вписать свой логин для авторизации на vpn-сервере.
В файл chap-secrets надо прописать одну строку
ВАШ_ЛОГИН и ВАШ_ПАРОЛЬ заменить, соответственно на логин и пароль. После чего
выполнить команду
На этом настройка pppd закончена.
Настройка маршрутизации.
В /etc/ppp/options прописана одна из опций - defaultroute. Она предназначена для того,
чтобы после поднятия соединения pppd добавил в таблицу маршрутов дефолтный маршрут
через pptp-cоединение. Это не будет сделано, если в системе уже имеется маршрут
по умолчанию. Поэтому его надо удалить:
Но т.к. vpn-сервер находится за пределами локальной сети, то пакеты на него
ходить не смогут, поэтому надо поднять маршрут на vpn-сервер.
$ route add -net 192.168.55.32 netmask 255.255.255.224 gw <ваш_шлюз>
|
также надо поднять маршруты на dns-сервера
$ route add -net 79.134.0.0 netmask 255.255.255.252 gw <ваш_шлюз>
|
Чтобы эти маршруты поднимались сразу после загрузки системы, их надо прописать в
стартовы скрипты или конфигурационные файлы (зависит от используемого дистрибутива).
Остается одна проблема - после установки vpn-соединения надо удалить маршрут
на dns-сервера, а после отключения соединения - вновь поднять его. Если этого не сделать,
то во время сеанса Вам будет надоступны почтовый сервер mgn.ru, ftp-сервер.
Поэтому воспользуемся возможностями pppd - после поднятия IP поверх ppp-линка он выполняет
скрипт /etc/ppp/ip-up, а по окончании связи - /etc/ppp/ip-down.
в первый скрипт добавим строки:
route del -net 79.134.0.0 netmask 255.255.255.252 gw <ваш_шлюз>
|
а во второй:
route add -net 79.134.0.0 netmask 255.255.255.252 gw <ваш_шлюз>
|
Установка соединения.
Запуск vpn-соединение производится с помощью команды
В нашем случае:
Для сохранения постоянного соединения можно создать скрипт /usr/local/bin/pptp-run:
#!/bin/bash
LOG="/var/log/pptp-run.log"
while true; do
echo -e "\n========================\n`date`" >> $LOG
/usr/sbin/pptp vpn.mgn.ru >> $LOG
sleep 20;
done
|
Этот скрипт будет запускать vpn-соединение на vpn.mgn.ru. В случае неудачи или
разрыва связи будет делать паузу 20 с и повторять попытку.
А чтобы он запускался автоматически после загрузки компьютера достаточно
подгружать этот скрипт из стартовых скриптов. Для RedHat-подобной системы можно использовать
скрипт /etc/rc.d/init.d/pptp-client:
#!/bin/sh
#
# pptp-client Start pptp-client
#
#
# chkconfig: 2345 30 99
# description: PPTP client
#
# Source function library.
. /etc/rc.d/init.d/functions
[ -f /usr/sbin/pptp -a -f /usr/local/bin/pptp-run ] || exit 0
RETVAL=0
# See how we were called.
case "$1" in
start)
echo -n "Starting system pptp-client: "
# we don't want the MARK ticks
nohup /usr/local/bin/pptp-run >/dev/null 2>&1 &
success
RETVAL=$?
echo
;;
stop)
echo -n "Shutting down system pptp-client: "
killproc pppd
killproc pptp-run
killproc pptp
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/pptp-client
;;
status)
status pptp
RETVAL=$?
;;
restart|reload)
$0 stop
$0 start
RETVAL=$?
;;
*)
echo "Usage: pptp-client {start|stop|status|restart}"
exit 1
esac
exit $RETVAL
|
При возникновении проблем - звоните в нашу службу технической
поддержки по телефону 212-474, либо пишите на
support@mgn.ru
Вернуться к выбору настроек программного обеспечения.
|