3 кнопки, котоpые потpясли DOS.

Unix Dos Linux Windows Os/2 Qnx Beos Gios Hard Etc Link Форум (тестовый режим) Гостевая Юмор Soft Связь
 
 
 

Настройка 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» и жмем подключение проходим авторизацию и регистрацию в сети. Собственно все, для теста можем пропинговать какой-нибудь компьютер внутри офиса.

 

© Krio, Xbyte, BooM
2004-2012

id-sign