Установка pptp-клиента. Для установки PPTP клиента под Linux

advertisement
1. Установка pptp-клиента.
Для установки PPTP клиента под Linux необходимо установить программу pptpclient, исходный код
которой можно скачать либо с сервера SourceForge, либо с ftp-сервера (файл pptp-linux1.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. Наберите команду
$ make
и из-под root'а
$ make install
для его установки.
2. Установка 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
$ cd linux/mppe
и запускаем скрипт, который пропатчит ядро на предмет MPPE
$ sh ./mppeinstall.sh /usr/src/linux
Подразумевается, что исходники Вашего ядра установлены.
Переходим в каталог ppp-2.4.2b3
$ cd ../../ppp-2.4.2b3
Конфигурируем, запускаем компиляцию
$ ./configure
$ make
и устанавливаем готовый pppd
$ make install
3. Компиляция ядра.
На предыдущем шаге на ядро был наложен патч, который добавляет в него 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
alias
alias
alias
alias
alias
alias
alias
/dev/ppp
char-major-108
tty-ldisc-3
tty-ldisc-14
ppp-compress-18
ppp-compress-21
ppp-compress-24
ppp-compress-26
ppp_generic
ppp_generic
ppp_async
ppp_synctty
ppp_mppe
bsd_comp
ppp_deflate
ppp_deflate
для ядра 2.2:
alias
alias
alias
alias
alias
tty-ldisc-3
ppp
ppp-compress-21
bsd_comp
ppp-compress-24
ppp_deflate
ppp-compress-26
ppp_deflate
ppp-compress-18 ppp_mppe
После этого надо перезагрузиться.
4. Настройка 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 надо прописать одну строку
ВАШ_ЛОГИН
*
ВАШ_ПАРОЛЬ
*
ВАШ_ЛОГИН и ВАШ_ПАРОЛЬ заменить, соответственно на логин и пароль. После чего выполнить
команду
$ chmod 400 chap-secrets
На этом настройка pppd закончена.
5. Настройка маршрутизации.
В /etc/ppp/options прописана одна из опций - defaultroute. Она предназначена для того, чтобы после
поднятия соединения pppd добавил в таблицу маршрутов дефолтный маршрут через pptpcоединение. Это не будет сделано, если в системе уже имеется маршрут по умолчанию. Поэтому
его надо удалить:
$ route del default
Но т.к. vpn-сервер находится за пределами локальной сети, то пакеты на него ходить не смогут,
поэтому надо поднять маршрут на vpn-сервер.
$ route add -net 80.252.133.118 netmask 255.255.255.224 gw <ваш_шлюз>
также надо поднять маршруты на dns-сервера
$ route add -net 80.252.134.85 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 80.252.134.85 netmask 255.255.255.252 gw <ваш_шлюз>
а во второй:
route add -net 80.252.134.85 netmask 255.255.255.252 gw <ваш_шлюз>
6. Установка соединения.
Запуск vpn-соединение производится с помощью команды
$ pptp <vpn-сервер>
В нашем случае:
$ pptp vpn.tmpk.net
Для сохранения постоянного соединения можно создать скрипт /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.tmpk.net >> $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
Download