Настройка 
			VPN сервера с нуля на Debian Linux (pptpd).
			Основная задача: 
			есть офисная сеть которая соединена с миром посредством сервера, 
			нужно обеспечить чтобы сотрудники которые находятся на выезде или 
			работают из дома, получили возможность безопасно подключиться к 
			офисной сети, пользоваться ресурсами офисной сети (сетевые паки и 
			т.д.), собственно чтобы компьютер удаленного сотрудника стал частью 
			офисной сети, что и обеспечивает технология VPN (Virtual Private 
			Network — виртуальная частная сеть). Также требуется поддержка 
			шифрования в MS Windowsю Способов реализации несколько, я выбрал на 
			базе Debian Linux, и pptpd.
			Итак начнем с установки Debian 
			Linux, последняя стабильная версия на момент написания статьи 
			"Debian 3.1 r4" нам будет достаточно первого диска. Остальное можно 
			скачать.
			
			Выставляем в БИОСе загрузку с компакт диска, вставляем диск и при 
			появлении первого приглашения: "Press F1 for help, or ENTER to 
			boot:" нажимаем ENTER.
			Следующий этап это выбор языка, оставляем все как есть по умолчанию 
			English (У кого с английским проблема могут выбрать что-нибудь 
			другое). Выбираем страну Other а там Ukraine (кто откуда). Раскладку 
			оставляем по умолчанию American English (также на любителя).
			
			Далее нам предложат настроить сетевой интерфейс, если вы желаете это 
			сделать познее то пропускаем ежели желаем сразу, то выбираем ту 
			сетевую которая имеет выход в Интернет и после попытки найти DHCP 
			ежели у вас такого не имеется пробуем настроить сетевую в ручную 
			"Configure network manually" 
			IP address: 192.168.1.100 (эта сетевая у нас будет считаться 
			внешней).
			Netmask: 255.255.255.0 (оставляем без изменений, но это уже в 
			зависимости от вашей ситуации).
			
			Gateway: 192.168.1.1 (Подставляем сюда ваш Шлюз если имеется 
			таковой).
			Name server addresses: 192.168.1.1 (Ну и DNS сервер).
			Hostname: vpn (ну или что там вам больше нравиться).
			Domain name: (Чего нет того нет, пропускаем).
			Далее нам предлагают разбить диск. Не мудрствую долго выбираем 
			"Erase entire disk: XXXXXXXXXXXXXXXXXX" тем самым разрешаем 
			переразбить весь диск автоматически и далее выбираем "All files in 
			one partition" далее жмем "Finish partitioning and write changes to 
			disk" а затем выбираем "Yes". После чего произойдет переразбивка 
			диска и начнется установка базовой системы. Затем нам предложат 
			установить GRUB и мы жмем "Yes". У нас выйдет диск мы его забираем и 
			жмем на "Continue" будущий сервер уходит на перезагрузку.
			Итак первый запуск и постустановочная настройка жмем ОК. Настройка 
			часовой зоны пропускаем NO, а потом ОК на том что поумолчанию (Кому 
			интересно могут повозиться). Затем нас просят дважды ввести пароль 
			для пользователя root. Затем идет создание нового пользователя, 
			можете конечно пропустить но если вы еще и установите Графическую 
			среду то лучше создать такого пользователя так как в настройках по 
			умолчанию запрещается вход под рутом в графическую оболочку.
			
			Далее нам предлагают выбрать источник установки, выбираем cdrom, и 
			вставляем первый диск после анализа отвечаем No мол у нас только 
			один диск или если есть в наличии другие вставляем и другие диски. И 
			если у вас есть подключение к Интернет то будет сделана проверка 
			насчет обновлений безопасности далее нам предлагают выбрать 
			дополнительное программное обеспечение, мы пропускаем доставим 
			познее ничего не выбрав жмем ОК далее если таки подключение к 
			Интернету есть идет скачивание обновлений безопасности, и собственно 
			продолжается установка. Во время установки нас спросят что делать с 
			Exim выбираем local delivery only если у вас нету других планов. И 
			вбиваем пользователя который будет получать почту для root и 
			postmaster и жмем ОК. Затем появиться финальное окно установки и 
			настройки где жмем ОК. И вас попросят ввести логин и пароль. Ура 
			система установлена.
			Итак нам нужно последнее стабильное ядро, на данный момент это 
			linux-2.6.19.1 (далее можете пошагово вбивать все команды которые 
			выделены ограничителями):
			-----------------------------------------
			cd /usr/src
			ftp ftp.kernel.org
			-----------------------------------------
			затем нам предлагают ввести имя вводим: anonymous
			и пароль вводим какой-нибудь e-Mail: phn@nm.ru
			так теперь мы видим:
			------------------------------------------
			Using binary mode to transfer files
			ftp>
			------------------------------------------
			далее пробуем получить ядро:
			------------------------------------------
			cd pub/linux/kernel/v2.6/
			get linux-2.6.19.1.tar.gz
			опять появляется 
			ftp>
			и вбиваем quit для выхода
			------------------------------------------
			И так у нас в каталоге /usr/src появился файл linux-2.6.19.1.tar.bz2
			распаковываем его
			------------------------------------------
			tar xfvz linux-2.6.19.1.tar.gz 
			------------------------------------------
			Создадим ссылку на нашу директорию с ядром:
			------------------------------------------
			ln -sf linux-2.6.19.1 linux
			------------------------------------------
			И переходим в каталог с нашим ядром:
			------------------------------------------
			cd linux
			------------------------------------------
			Но приступить к компиляции сразу не сможем, точнее сможем то только 
			используя make config но это долго и не удобно отвечать на все 
			вопросы, а при попытке запуска make menuconfig выбрасывает много 
			ошибок окончание у которых приблизительно вот такое: 
			------------------------------------------
			make[1]: *** [scripts/kconfig/lxdialog/checklist.o] Error 1
			make: *** [menuconfig] Error 2
			------------------------------------------
			причина в том что нужно установить libncurses5-dev
			итак вернемся в наш домашний каталог и скачаем недостающий пакет:
			------------------------------------------
			cd ~
			ftp ftp.de.debian.org
			Name (ftp.de.debian.org:root): anonymous
			Password: phn@nm.ru
			ftp> cd debian/pool/main/n/ncurses
			ftp> get libncurses5-dev_5.4-4_i386.deb
			ftp> quit
			------------------------------------------
			И устанавливаем:
			------------------------------------------
			dpkg -i libncurses5-dev_5.4-4_i386.deb
			------------------------------------------
			Возвращаемся в директорию с исподниками ядра и начинаем 
			конфигурирование:
			------------------------------------------
			cd /usr/src/linux
			make menuconfig
			------------------------------------------
			И настраиваем поддержку шифрования совместимую с MS WINDOWS идем в:
			... 
			Device Driver --->
			Networking device support --->
			и ставим <M> PPP MPPE compression (encription) (EXPERIMENTAL) (NEW)
			...
			А также проверяем чтобы стояло <M> в:
			...
			Criptographic options --->
			...
			<M> SHA1 digest algorithm
			...
			<M> ARC4 cipher algorithm
			...
			Жмем несколько раз ESC для выхода и 
			на запрос о сохранении новой конфигурации жмем <Yes>.
			Далее уже компиляция и установка нового ядра (запасаемся терпением):
			------------------------------------------
			make dep 
			make clean 
			make bzImage 
			make modules 
			make modules_install
			------------------------------------------
			Дале подготовим все для того чтобы система загружалась с нового 
			ядра:
			------------------------------------------
			cp System.map /boot/System.map-2.6.19.1 
			cp arch/i386/boot/bzImage /boot/bzImage-2.6.19.1 
			------------------------------------------
			Также нам нужно создать RAM-диск для загрузки для этого:
			------------------------------------------ 
			cd /boot
			mkinitrd -o /boot/initrd-2.6.19.1 2.6.19.1
			------------------------------------------
			И так мы имеем три файла необходимых для загрузки нашей системы:
			bzImage-2.6.19.1
			System.map-2.6.19.1
			initrd-2.6.19.1
			осталось их прописать в систему но так чтобы была возможность 
			загрузить систему и из старого ядра на случай неудачной 
			конфигурации, для этого нужно отредактировать один файл 
			/boot/grub/menu.list для этого воспользуемся утилитой vi (это 
			стандарт и это нужно знать хоть и не удобно по первой):
			------------------------------------------
			vi /boot/grub/menu.lst
			Вот эту часть файла:
			------------------------------------------
			## ## End Default Options ##
			title Debian GNU/Linux, kernel 
			2.4.27-2-386
			root (hd0,0)
			kernel /boot/vmlinuz-2.4.27-2-386 root=/dev/hda1 ro
			initrd /boot/initrd.img-2.4.27-2-386
			savedefault
			boot
			title Debian GNU/Linux, kernel 
			2.4.27-2-386 (recovery mode)
			root (hd0,0)
			kernel /boot/vmlinuz-2.4.27-2-386 root=/dev/hda1 ro single
			initrd /boot/initrd.img-2.4.27-2-386
			savedefault
			boot
			### END DEBIAN AUTOMAGIC KERNELS 
			LIST
			------------------------------------------
			Меняем чтобы она выглядела следующим образом (а точнее добавляем 
			новый пункт меню который будет грузиться автоматически):
			------------------------------------------
			## ## End Default Options ##
			title Debian GNU/Linux, kernel 2.6.19.1
			root (hd0,0)
			kernel /boot/bzImage-2.6.19.1 root=/dev/hda1 ro
			initrd /boot/initrd-2.6.19.1
			savedefault
			boot
			title Debian GNU/Linux, kernel 
			2.4.27-2-386
			root (hd0,0)
			kernel /boot/vmlinuz-2.4.27-2-386 root=/dev/hda1 ro
			initrd /boot/initrd.img-2.4.27-2-386
			savedefault
			boot
			title Debian GNU/Linux, kernel 
			2.4.27-2-386 (recovery mode)
			root (hd0,0)
			kernel /boot/vmlinuz-2.4.27-2-386 root=/dev/hda1 ro single
			initrd /boot/initrd.img-2.4.27-2-386
			savedefault
			boot
			### END DEBIAN AUTOMAGIC KERNELS 
			LIST
			------------------------------------------
			Для тех кто не знаком с текстовым редактором vi приведу короткую 
			справку:
			Стрелками с клавиатуры перемещаем курсор вперед, вниз, влево, 
			вправо.
			Подведя курсор в нужное место нажимаем клавишу "i" и тем самым 
			переходим в режим редактирования, и вбиваем новый текст.
			
			Если что-то введете неправильно то для того чтобы удалить нужно 
			нажать ESC чем вы перенесетесь в обычный режим и подведя курсор к 
			неправильным символа нажмите клавишу "d" а затем стрелочку в том 
			направлении в котором вы хотите что-то стереть например вперед чтобы 
			стереть символ перед курсором, для того чтобы вернуться в режим 
			редактирования жмем снова клавишу "i", двойное нажатие "d" стирает 
			строку.
			
			Для сохранения и выхода нужно нажать ESC затем ":" а затем написать 
			"wq!" этим вы сохраните изменения и выйдете из редактора.
			В редакторе vi есть очень много функций но этого минимума вам буде 
			достаточно, если интересно больше то набираем "man vi".
			
			Набираем reboot и смотрим как загрузилась система.
			У меня все загрузилось, если у вас нет то вы или ошиблись или я 
			допустил опечатку :).
			Теперь нам необходимо установить 
			pptpd:
			---------------------------------------
			ftp ftp.de.debian.org
			вводим имя и пароль как ранее
			cd debian/pool/main/p/pptpd/
			get pptpd_1.2.1-4_i386.deb
			quit
			--------------------------------------- 
			И устанавливаем:
			---------------------------------------
			dpkg -i pptpd_1.2.1-4_i386.deb
			---------------------------------------
			Перед тем как перейти к настройке pptpd нам нужно настроить нашу 
			вторую сетевую карту которая у нас внутренняя.
			---------------------------------------
			vi /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
			# The primary network interface
			auto eth0
			iface eth0 inet static
			address 192.168.1.100
			netmask 255.255.255.0
			network 192.168.1.0
			broadcast 192.168.1.255
			gateway 192.168.1.1
			# dns-* options are implemented by the resolvconf package, if 
			installed
			dns-nameservers 192.168.1.1
			----------------------------------------------------------------------
			Добавляем в конец файла следующее:
			----------------------------------------------------------------------
			auto eth1
			iface eth1 inet static
			address 10.0.0.1
			netmask 255.255.255.0
			network 10.0.0.0
			broadcast 10.0.0.255
			----------------------------------------------------------------------
			перегружаемся и если с обоими сетевыми все в порядке начинаем 
			настраивать pptpd а точнее меняем следующие файлы на такую 
			конфигурацию:
			/etc/pptpd.conf
			------------------------------- 
			option /etc/ppp/pptpd-options
			localip 10.0.0.1-10
			remoteip 10.0.0.11-20
			-------------------------------
			Хотелось бы объяснить данную конфигурацию так как у каждого она 
			будет своя. «localip 10.0.0.1-10» — здесь мы говорим в каком 
			диапазоне сервер может взять себе IP-adress а «remoteip 
			10.0.0.11-20» — здесь мы говорим в каком диапазоне будет выдан 
			IP-adress для компьютера который будет подключаться. Номы должны 
			учитывать что компьютера в офисной сети должны быть в том же 
			диапазоне 10.0.0.xxx но не должны совпадать с тем диапазоном который 
			выдается для сервера и для удаленных машин.
 
			Зададим логин и пароль для 
			авторизации:
			/etc/ppp/chap-secrets
			-------------------------------
			# Secrets for authentication using CHAP
			# client server secret IP address
			www.phn.nm.ru pptpd phn.nm.ru *
			-------------------------------
			/etc/ppp/pptpd-options
			-------------------------------
			lock
			debug
			name pptpd
			nodefaultroute
			require-mschap-v2
			require-mppe-128
			proxyarp
			-------------------------------
			В файл /etc/modules.conf добавили 
			строчку:
			---------------------------------
			alias ppp-compress-18 ppp_mppe_mppc
			---------------------------------
			Ну и конечно же должен быть включен 
			форвардинг:
			-------------------------------------
			echo 1 > /proc/sys/net/ipv4/ip_forward
			-------------------------------------
			Чтобы это делалось автоматом добавим 
			эту строчку в скрипит запуска демона pptpd например вот так:
			----------------------------------
			vi /etc/init.d/pptpd
			----------------------------------------
			#!/bin/sh
			# Copyright Rene Mayrhofer, Gibraltar, 1999
			# This script is distibuted under the GPL
			PATH=/bin:/usr/bin:/sbin:/usr/sbin
			DAEMON=/usr/sbin/pptpd
			PIDFILE=/var/run/pptpd.pid
			FLAGS="defaults 50"
			case "$1" in
			start)
			echo -n "Starting PPTP Daemon: "
			#!!!!!!!! Вот сюда добавляем нашу 
			сточку
			echo 1 > /proc/sys/net/ipv4/ip_forward
			#!!!!!!! Вот сюда добавляем нашу сточку
			start-stop-daemon --start --quiet --pidfile 
			$PIDFILE --exec $DAEMON \
			-- < /dev/null > /dev/null
			echo "pptpd."
			;;
			stop)
			echo -n "Stopping PPTP: "
			start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
			echo "pptpd."
			;;
			--------------------------------------
			Перегружаемся и переходим к 
			настройке удаленной Windows машины. Опишем пошагово это на базе 
			Windows XP Professional SP-2.
			Идем Пуск --> Настройка --> Панель управления --> Сетевые 
			подключения --> Мастер новых подключений. Жмем Далее выбираем 
			«Подключится к сети на рабочем месте» затем выбираем «Подключится к 
			виртуально частной сети» жмем Далее пишем произвольное имя для 
			подключения жмем Далее теперь вбиваем IP-address нашего сервера жмем 
			Далее ставим галочку «Добавить ярлык подключения на рабочий стол» 
			для удобства. Жмем Далее и вводим имя пользователя по нашей 
			конфигурации это «www.phn.nm.ru» и пароль это «phn.nm.ru» и жмем 
			подключение проходим авторизацию и регистрацию в сети. Собственно 
			все, для теста можем пропинговать какой-нибудь компьютер внутри 
			офиса.