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