Данная статья не претендует на полноту описания натроек VPN. Здесь описано решение конкретной задачи, и ни в коем случае не может являться панацеей.
В наличии есть оборудование ADSL которое работает только мостом. Т.е. вопросы маршрутизации, автоирзации и аккаунтинга она решать не может. Именно поэтому было принято решение пускать пользователей через VPN.
Исходные данные:
1. Сервер на базе OS Linux (что может быть прекрасней :) )
2. DSLAM ZyXEL IES-1000 с модулями ADSL
3. Было указание выделять пользователям сетки по 4 ip. У меня получилост 16 сетей по 4 адреса.
4. Сервисы каждого клиента должны быть видны из вне. Т.е. NAT мне не подходит
Устанавливаем pppd. Версию и способ установки можете выбрать сами. Я ставил из rpm версию 2.4.1
Устанавливаем pptpd. С ней заморочек не возникло. Установлена так же из rpm, версия pptpd-server-1.1.2
Правим файлы.
-----------
--------- /etc/pptpd.conf --------
#Указываем файл в котором будут настройки самого ppp соединения
options /etc/ppp/options.adsl
#Чтобы значть что происходит с pptpd включаем debug
debug
#Указываем на то что приниматься запрсы будут только на 192.168.0.3
listen 192.168.0.3
#В каком файлике хранится pid
pidfile /var/run/pptpd.pid
----------------------------------
этот файлик остался нетронутым. Его используют пользователи dial-up совместно с файлами вида options.ttyX
------------ options -------------
-detach
auth
login
proxyarp
modem
crtscts
lock
debug
----------------------------------
--------- options.adsl -----------
ipparam PoPToP
lock
mtu 1490
mru 1490
192.168.0.3:192.168.65
ms-dns 192.168.0.3
proxyarp
auth
-pap
+chap
ipcp-accept-local
ipcp-accept-remote
deflate 0
----------------------------------
Будем использовать CHAP аутентификацию. Заводить реальных пользователей в системе не имеет смысла.
--------- chap-secrets -----------
user * password 192.168.0.66
----------------------------------
Я хочу присваивать IP по именам, поэтому в файле chap-secrets указываю его явным образом. До подключения абонент настраивает свою сетевую карту, прописывая первый ip адрес из отведенной ему сети с маской этой сети, т.е.
ip 192.168.0.65
mask 255.255.255.252
gw 192.168.0.3
После подключения к серверу VPN ему отдается адрес 192.168.0.66 с маской 255.255.255.255
Далее мне нужно разобраться с маршрутизацией подсетей и выпускать пользователей за пределы своего сервера.
route add -net 192.168.0.64 netmask 255.255.255.252 eth0
route add -net 192.168.0.68 netmask 255.255.255.252 eth0
route add -net 192.168.0.72 netmask 255.255.255.252 eth0
....
route add -net 192.168.0.124 netmask 255.255.255.252 eth0
Теперь iptables
---------------
#Здесь позволяем нашим подсетям работать с pptpd и пропускаем протокол 47
iptables -A INPUT -p tcp -s 192.168.0.64/26 --sport 1024:65535 -d 192.168.0.3 --dport 1723 -j ACCEPT
iptables -A INPUT -p 47 -s 192.168.0.64/26 -d 192.168.0.3 -j ACCEPT
#Готовимся пропускать пользователей наружу и в их сторону. Здесь же считаем входящий/исходящий трафик
iptables -A FORWARD -i ppp+ -o eth0 -s 192.168.0.64/30 -d 0/0 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp+ -s 0/0 -d 192.168.0.64/30 -j ACCEPT
И так для каждой подсети, т.е. 16 раз :)
Вообще-то добавлять правила iptables можно в момент подключения пользователя. Так даже гибче получится. Пишется скрипт по вкусу. Запускается из /etc/ppp/auth-up. В этом же скрипте можете развить тему биллинга, хоть повременного, хоть по объему трафика.
Теперь настройка MS клиента.
----------------------------
Настройка виндового клиента не составляет особого труда. В Windows2000, например, создается VPN соединение с параметрами по умолчанию, а затем в свойствах соединения убирается галочка относительно шифрования данных.
PS: Эта статья написана скорее для того чтобы самому не забыть как делалось, ну и заодно, может, пригодится кому.
При создании данной статьи не пострадало ни одной клавиатуры.
Последние комментарии
10 лет 16 недель назад
10 лет 35 недель назад
10 лет 44 недели назад
10 лет 45 недель назад
11 лет 34 недели назад
11 лет 34 недели назад
11 лет 34 недели назад
11 лет 35 недель назад
11 лет 35 недель назад
11 лет 37 недель назад