При телефонном дозвоне модемы клиентского хоста и сервера устанавливают соединения, после чего на сервере управление передается демону pppd. Параметры запуска pppd при модемном соединении содержатся в общем файле опций PPP etc/ppp/options. Его настройки подробно освещены в описании конфигурации Dialin-сервера Протокол PPP системе сервера-роутера используется для реализации VPN-серверовв связке с PPTP. pppd отвечает за поднятие канала после того, как демон pptpd ловит PPTP-запрос клиента. Таким образом опции PPP- и PPTP-демонов тесно связаны; для каждого VPN-сервера pptpdпредусмотрены индивидуальные параметры запуска pppd.
Параметры запуска демона pppd etc/ppp/options.pptpd Файл содержит опции запуска pppd, общие для всех экземпляров pptpd.
Имя локальной системы, используемое при аутентификации
name pptpd
Запретить клиенту аутентификацию по CHAP, MS-CHAP и PAP
refuse-pap
refuse-chap
refuse-mschap
Запросить у клиента аутентификацию по MS-CHAP v2
require-mschap-v2
Запросить у клиента шифрование данных по MPPE
require-mppe-128
Включить Proxyarp; Указание серверу добавлять запись о VPN-клиенте в ARP-таблицу, подменяя его MAC-адрес своим
proxyarp
Создать блокирующий файл UUCP-типа для псевдо-терминала
lock
Отключить BSD-компрессию
nobsdcomp
Отключить логирование
nologfd
etc/ppp/server_name.pptpd Для каждого экземпляра VPN-сервера создается отдельный конфигурационный файл, содержащий индивидуальные опции запуска pppd. В случае совпадения замещают значения аналогичных параметров из общего конфигурационного файла options.pptpd.
Пример: конфигурационный файл для pppd, запускаемого VPN-сервером "knet"* (подключение к ЕСП):
#etc/ppp/knet.pptpd
Адрес DNS-сервера для MS-Windows-клиентов
ms-dns 10.0.0.1
Все байты со значениями 0x00-0x1F будут передаваться как два байта
asyncmap FFFFFFFF Не соглашаться на аутентификацию по CHAP, MS-CHAP и PAP
refuse-chap
refuse-pap
refuse-mschap
Запросить у клиента аутентификацию по MS-CHAP v2
require-mschap-v2 Имя локальной системы, используемое при аутентификации
name knet
Включить Proxyarp
proxyarp Максимальное число последовательных неудачных попыток соединения (после первой неудачи завершить процесс)
maxfail 1
Эта опция передает pppd сигнал на отключение, если после 30 LCP эхо-запросов не было ни одного верного LCP эхо-ответа
lcp-echo-failure 30
Эта опция заставляет pppd посылать фрэймы LCP эхо-запросов каждые 5 секунд
lcp-echo-interval 5
Запросить у клиента шифрование данных по MPPE
require-mppe-40
Параметр (в данном случае имя pptpd-экземпляра), передающийся скрипту ip-up
ipparam "knet"
Подключение плагина RADIUS-сервера для аутентификации через LDAP
plugin /usr/lib/pppd/2.4.3/radius.so
Указание расположения конфигурационного файла RADIUS-клиента
radius-config-file /etc/radiusclient/radiusclient.conf Имя сервера доступа к сети (NAS)- указывается имя соответствующего VPN-сервера; параметр, передаваемый RADIUS-серверу
avpair NAS-Identifier=knet
*Остальные файлы вида server_name.pptpd настраиваются аналогичным образом (см. параметры в таблице VPN-серверов.
Скрипты, выполняющиеся при поднятии канала (pppd+ddns+iptables)
/etc/ppp/ip-up #!/bin/bash
run-parts /etc/ppp/ip-up.d --arg="$1" --arg="$2" --arg="$3" --arg="$4" --arg="$5
/etc/ppp/ip-down #!/bin/bash
run-parts /etc/ppp/ip-down.d --arg="$1" --arg="$2" --arg="$3" --arg="$4" --arg="
/etc/ppp/ip-up.d/ddns Скрипт добавляет запись о подключившемся клиенте в таблицу DNS-сервера. IP-адресу ppp-интерфейса клиента сопоставляется символьное имя вида login.server_name.auditory.ru (Имя.Фамилия.VPN-сервер.auditory.ru). (соответственно скрипт /etc/ppp/ip-down.d/ddns удаляет запись из таблицы при разрыве соединения)
#!/bin/bash
#$1 -- имя интерфейса, например, ppp0
client_interface=$1;
#$5 -- адрес удалённого клиента
client_address=$5;
ipparam=$6
[ -r /etc/ppp/updown-settings.d/$ipparam ] || exit 0
. /etc/ppp/updown-settings.d/$ipparam
key=`cat /etc/bind/keys/${zone_name}-update.key | grep secret | cut -d "\"" -f 2
echo -e "server ${dns_address}\nkey ${zone_name}-update-key ${key}\nupdate add "
`radwho | grep $client_address | cut -d " " -f 2`".${zone_name}.auditory.ru. 1 A
`echo $client_address | cut -d "." -f 4`"."`echo $client_address | cut -d "." -f
"."`echo $client_address | cut -d "." -f 2`"."`echo $client_address | cut -d "."
`radwho | grep $client_address | cut -d " " -f 2`".${zone_name}.auditory.ru.\nse
/etc/ppp/ip-up.d/firewall Скрипт добавляет правила обработки пакетов с ppp-интерфейса подключившегося клиента в таблицы файерволла. Разрешаются ping-запросы от клиента к сети назначения, передача пакетов от клиента в сеть назначения и обратно, в случае необходимости включается NAT (соответственно скрипт /etc/ppp/ip-down.d/firewall удаляет правила из таблицы при разрыве соединения)
#$1 -- имя интерфейса, например, ppp0
client_interface=$1;
#$5 -- адрес удалённого клиента
client_address=$5;
ipparam=$6
[ -r /etc/ppp/updown-settings.d/$ipparam ] || exit 0
. /etc/ppp/updown-settings.d/$ipparam
#Добавляем правила для фаервола, связанные с маршрутизацией в нужную сеть
/sbin/iptables -A INPUT -p icmp -i $client_interface -s $client_address -d $network_addr
/sbin/iptables -A FORWARD -i $client_interface -s $client_address -d $network_address -j
/sbin/iptables -A FORWARD -o $client_interface -s $network_address -d $client_address -j
if [[ $nat_enabled == "yes" ]] >
then
/sbin/iptables -A FORWARD -i $client_interface -o $nat_interface -s $client_address
/sbin/iptables -A FORWARD -i $nat_interface -o $client_interface -d $client_address
/sbin/iptables -t nat -A POSTROUTING -o $nat_interface -s $client_address -j SNAT --
fi
etc/ppp/updown-settings.d/server_name Параметры для скриптов из ip-up.d и ip-down.d.
Пример: установки для VPN-соединения "knet"* (подключение к ЕСП):
#etc/ppp/updown-settings.d/knet
network_interface="eth0";
network_address="10.0.0.0/21";
nat_enabled="no";
nat_interface="vlan10";
nat_ip_address="80.250.162.178";
dns_address="10.0.0.1";
zone_name="knet";
* Остальные сервера настраиваются аналогично со следующими параметрами:
Переменные параметры для разных VPN-серверов
server_name
| network_interface
| network_address
| nat_en
| nat_int
| nat_ip
| dns_address
| zone_name
| knet
| eth0
| 10.0.0.0/21
| no
| vlan10
| 80.250.162.178
| 10.0.0.1
| knet
| knet.510
| vlan1
| 192.168.201.0/24
| no
|
|
| 192.168.201.1
| 501
| knet.502
| vlan2
| 192.168.202.0/24
| no
|
|
| 192.168.202.1
| 502
| knet.503
| vlan3
| 192.168.203.0/24
| no
|
|
| 192.168.203.1
| 503
| knet.504
| vlan4
| 192.168.204.0/24
| no
|
|
| 192.168.204.1
| 504
| knet.505
| vlan5
| 192.168.205.0/24
| no
|
|
| 192.168.205.1
| 505
| knet.506
| vlan6
| 192.168.206.0/24
| no
|
|
| 192.168.206.1
| 506
| knet.507
| vlan7
| 192.168.207.0/24
| no
|
|
| 192.168.207.1
| 507
| knet.504-v
| vlan8
| 192.168.208.0/24
| no
|
|
| 192.168.208.1
| 504-v
| knet.225
| vlan9
| 192.168.209.0/24
| no
|
|
| 192.168.209.1
| 225
| knet.wi-fi
| vlan11
| 192.168.211.0/24
| no
|
|
| 192.168.211.1
| wi-fi
| wi-fi
| vlan13
| 192.168.213.0/24
| yes
| vlan10
| 80.250.162.179
| 192.168.213.1
| vpn.wi-fi
| 225
| eth0
| 10.0.0.0/21
| yes
| vlan10
| 80.250.162.178
| 10.0.0.1
| knet
| 503
| eth0
| 10.0.0.0/21
| yes
| vlan10
| 80.250.162.178
| 10.0.0.1
| knet
| 504
| eth0
| 10.0.0.0/21
| yes
| vlan10
| 80.250.162.178
| 10.0.0.1
| knet
| Примечание: Включение функции NAT определяет возможность выхода в Интернет через шлюз МИЭМ, поэтому для всех внешних подключений к ЕСП (knet) или подсетям ЛВС (knet.*) трансляция адресов отключена.
!!! Параметры настройки см. в таблице VPN-серверов
!!! Файлы, содержащие опции запуска соответствующих демонов pppd, см. в разделе PPP.
PPTP
The Point to Point Tunneling Protocol (PPTP) - используется для установки VPN-каналов поверх любой - локальной или глобальной - сети. Он предоставляет удаленным пользователям безопасный доступ к корпоративной сети при наличие выхода в Интернет, а внутри ЛВС может обеспечить широкие возможности разделения доступа и защиты информации. PPTP использует модель "клиент-сервер" для установки VPN-каналов, причем, клиентская часть протокола поддерживается большинством ОС Microsoft. Легкость установки - дополнительное преимущество PPTP перед другими VPN-технологиями.
PPTP-сервер, интегрированный в сервер-роутер, обеспечивает:
Географически независимый доступ авторизованных клиентов к ЕСП кафедры посредством VPN-соединения.
Удаленный доступ к подсетям ЛВС для администрации и службы техподдержки.
Создаёт записи о подключившихся клиентах в соответствующих зонах DNS и удаляет их по завершении сессии.
В качестве программной реализации используется пакет Poptop (http://poptop.org).
Poptop - это бесплатный PPTP-сервер для Linux, первое решение, позволяющее устанавливать соединения между PPTP-клиентами и Linux-серверами. Это позволяет объединить преимущества ОС Microsoft и Linux в рамках одной ЛВС.
Возможности Poptop:
Microsoft-совеместимая аутентификация и шифрование (MSCHAPv2, MPPE 40 - 128 bit RC4)
Поддержка нескольких клиентских соединений
Прозрачная интеграция в сетевое пространство Microsoft (LDAP, SAMBA) с использованием плагина RADIUS
Поддержка Windows 95/98/Me/NT/2000/XP PPTP-клиентов
Поддержка Linux PPTP-клиентов
pptpd - демон, являющийся менеджером многих [[[PPP]]-соединений:
Отвечает за VPN-соединения
Создаёт записи в таблице маршрутизации
Может осуществлять ретрансляцию широковещательных пакетов
На сервере-роутере запущено 15 экземпляров VPN-серверов для VPN-подключение к разным подсетям ЛВС кафедры.
Параметры запуска демона pptpd etc/pptpd.conf Файл содержит опции запуска, общие для всех экземпляров pptpd.
Указание расположения файла опций, общих для всех pppd, запущенных pptpd
option /etc/ppp/options.pptpd
Использовать wtmp для записи времени установки и разрыва соединения клиентами
logwtmp
etc/initd.d/pptpd
#!/sbin/runscript
Файл содержит параметры для загрузочных скриптов всех всех экземпляров pptpd.
depend() {
need iptables dns
user radius
parallel yes
}
SERVER_NAME=${myservice#pptpd}
PPTPD_NAME="pptpd"${SERVER_NAME}
PPTPCTRL_NAME="pptpctrl"${SERVER_NAME}
BCRELAY_NAME="bcrelay"${SERVER_NAME}
PPPD_NAME="pppd"${SERVER_NAME}
start() {
ebegin "Starting "$PPTPD_NAME
start-stop-daemon --name ${PPTPD_NAME:0:15} --start --quiet --exec /usr/sbin/$PPTPD_NAME -- ${PPTPD_OPTS}
eend $?
}
stop() {
ebegin "Stopping "$PPTPD_NAME
start-stop-daemon --name ${PPTPD_NAME:0:15} --stop --quiet --pidfile /var/run/${PPTPD_NAME}.pid
result=$?
start-stop-daemon --name ${PPTPCTRL_NAME:0:15} --stop --quiet --oknodo
result=$(( $result + $? ))
start-stop-daemon --name ${BCRELAY_NAME:0:15} --stop --quiet --oknodo
result=$(( $result + $? ))
start-stop-daemon --name ${PPPD_NAME:0:15} --stop --quiet --oknodo
result=$(( $result + $? ))
eend $result
}
/etc/pptp/server_name.conf В конфигурационном файле определяются пространства внутриканальных IP-адресов, назначаемых серверу и клиентам, интерфейс, прослушиваемый pptpd, указываются файлы с параметрами запуска соответствующего демона pppd.
Для каждого экземпляра VPN-сервера создается отдельный конфигурационный файл.
Пример: конфигурационный файл для VPN-сервера "knet"* (подключение к ЕСП):
#/etc/pptp/knet.conf
Путь к соответствующему демону pppd
ppp /usr/sbin/pppd.knet
Указание расположения файла опций PPP (содерж. параметры запуска pppd)
option /etc/ppp/knet.pptpd
Не предоставлять назначение IP-адреса клиенту PPP
noipparam
Интерфейс, "прослушиваемый" pptpd (VPN-сервером)
listen 80.250.162.178
Локальный IP-адрес (ppp-интерфейс сервера)
localip 10.0.0.1
Диапазон IP-адресов для удаленных клиентов (ppp-интерфейс клиента)
remoteip 10.0.6.0-254
*Остальные VPN-сервера настраиваются аналогичным образом.
!!! Параметры настройки см. в таблице VPN-серверов
!!! Файлы, содержащие опции запуска соответствующих демонов pppd, см. в разделе PPP. ARP
Связь между уровнем сетевого интерфейса и сетевым.
Address Resolution Protocol (ARP) — протокол разрешения адресов — предназначен для преобразования IP-адресов (адресов сетевого уровня) в MAC-адреса (адреса канального уровня) в сетях TCP/IP. Он определён в RFC 826.
Отображение выполняется только для отправляемых IP-пакетов, так как только в момент отправки создаются заголовки IP и Ethernet.
|