Реализация, серверная часть
Реализация данного решения сводится к настройке ПО на сервере доступа и клиентской части - VPN адаптера на компьютере клиента под управлением Windows или Linux.
Для успешной настройки Вам понадобится несколько установочных пакетов:
PoPToP (Point to Point Tunelling Protocol daemon) доступен на
http://www.poptop.org
PPP (Point to Point Protocol daemon) входит в состав любой уважающего себя дистрибутива Linux
Дистрибутив Windows 98 или выше
http://www.microsoft.com
В первую очередь необходимо обратить внимание, что решение работает по протоколу PPP (точка - точка) и, как следствие, необходима поддержка этого протокола на уровне ядра той ОС, которую Вы применяете. Если при загрузке ОС Вы увидите строчку похожую на
PPP line discipline registered, это говорит о том, что поддержка PPP включена в ядро, в противном случае обратитесь к документу, описывающему процедуру конфигурации ядра, The Linux Kernel HOWTO, который доступен, например,здесь (
http://www.ibiblio.org/mdw/HOWTO/Kernel-HOWTO.html). Установив пакет pptpd необходимо сконфигурировать его таким образом, чтобы демон pptpd принимал запросы на установление туннеля от клиентской части и передавал управление модулю pppd который непосредственно и занимается обслуживанием передачи данных по виртуальному каналу. Конфигурируется pptpd с помощью конфигурационного файла pptpd.conf, который располагается в директории /etc. Ниже мы приводим пример файла конфигурации, который применяем на нашем тестовом стенде:
############################################################
# Sample PoPToP configuration file
# for PoPToP version 1.1.3
############################################################
# TAG: speed
# Specifies the speed for the PPP daemon to talk at.
speed 115200
# TAG: option
# Specifies the location of the PPP options file.
# By default PPP looks in '/etc/ppp/options'
option /etc/ppp/options.VPN
# TAG: debug
# Turns on (more) debugging to syslog
debug
Основной директивой является options, она указывает, какой файл опций передается демону pppd обслуживающему виртуальный канал в качестве основного файла конфигурации. После редактирования pptpd.conf необходимо запустить на исполнение pptpd командой /etc/rc.d/init.d/pptpd start (Для Linux), если Вы используете не Linux то смотрите документацию по Вашей ОС.
Все остальное конфигурирование проводится путем изменения файлов настройки pppd, а именно: /etc/ppp/options, /etc/ppp/options.VPN. Мы приводим здесь полное содержимое этих файлов, в случае если Вам требуется специфичная настройка демона pppd обратитесь к документации на демон pppd.
# /etc/ppp/options
lock
# /etc/ppp/options.VPN
## turn pppd syslog debugging on
debug ## change 'servername' to whatever you specify as your server name in chap-secrets
name gateway.companyname.ru
#mtu 576
auth
require-pap
refuse-chap
login
ms-dns 192.168.0.1
proxyarp
192.168.0.1:
При организации виртуального канала необходимо использовать адреса, отличные от тех, которые используются в опорной IP сети. Например, на стенде мы используем адреса 192.168.0.0/24 на всех сетевых адаптерах, компьютеров, входящих в его состав. Однако для организации канала применяются адреса сети 192.168.1.0/24, которые маскируются сервером доступа вовне адресом внешнего интерфейса. Каждому клиенту необходимо выдавать адрес который не будет использоваться другими клиентами, для этого мы определяем статическую адресацию для каждого клиента в файле /etc/ppp/pap-secrets. Соответственно аутентификация пользователей проводится средствами pppd с использованием протокола PAP (Password Authentication Protocol).
# /etc/ppp/pap-secrets
# Secrets for authentication using PAP
# client server secret IP addresses
register * "enetaccess" 192.168.1.2
Первый и третий параметр задают учетную запись и пароль, которые будут использоваться клиентом при доступе к интернет. Последний параметр задает IP адрес, который будет выдан клиенту, при установлении связи (handshake). Вставьте необходимые строчки для каждого клиента, которому Вы будете предоставлять доступ в интернет, обращая внимание на то, что IP адреса не должны повторяться. Как видно в данном случае, пароли хранятся на диске в виде открытого текста, что нехорошо даже в том случае, если у данного файла грамотно установлены атрибуты доступа, однако в наших условиях тестового стенда это оправдано. Избежать хранения паролей в виде plaintext, можно скомпилировав (сконфигурировав) pppd таким образом, чтобы учетная запись и пароль брались из общей БД учетных записей Linux (директива login в options.VPN)
Изменив все три файла конфигурации pppd, система готова к тому, чтобы принять запрос на установление виртуального канала от клиента.
P.S. Настройка клиентской части была расписана на этом форуме LKR.