Показаны сообщения с ярлыком l2tp. Показать все сообщения
Показаны сообщения с ярлыком l2tp. Показать все сообщения

среда, 29 апреля 2009 г.

Сервер l2tp на Linux с поддержкой RADIUS авторизации


Про настройку xl2tpd с клиентской стороны я уже писал тут, потому ограничусь только указанием принципиальных различий в конфигурации.
Опыты проводились на CentOS 5.3
Минимально необходимый /etc/xl2tpd/xl2tpd.conf в этом случае выглядит так:
[global]
access control = no
[lns default]
exclusive = no
ip range = 10.0.0.2-10.0.0.254
local ip = 10.0.0.1
require chap = yes
refuse pap = yes
require authentication = yes
pppoptfile = /etc/ppp/options.xl2tpd
Особенно надо обратить внимание на опцию require authentication = yes - без нее к RADIUS-серверу обращений не будет.
Минимально необходимое содержимое файла /etc/ppp/options.xl2tpd такое:
mtu 1410
mru 1410

nodefaultroute

lock

auth

plugin radius.so
plugin radattr.so
Чтобы номально работал radius-plugin к pppd должны сущестововать файлы в директории /etc/radiusclient. Их можно взять либо из SRPM ppp (поддиректория в каталоге BUILD: ppp-X.Y.Z/pppd/plugins/radius/etc) или установить пакет radiusclient.
В этой директории нужно подправить следующее: в файле /etc/radiusclient/servers
добавить строку, содержащую адрес RADIUS-сервера и пароль к нему:
127.0.0.1 mysecret
и тот же сервер указать в файле /etc/radiusclient/radiusclient.conf:
authserver 127.0.0.1
acctserver 127.0.0.1

Если этот файл брался из SRPM, то в нем нужно подправить еще пути к другим файлам конфигуриции клиента - все они почему-то предполагаются в /usr/local/etc/radiusclient

P.S. такой же файл options (только с прибавлением опций: +chap -pap) и те же настройки radiusclient работоспособны и при настройке демона протокола PPTP - pptpd (только он, кажется, уже немножко устарел ;)
Еще один необходимый для него файл /etc/pptpd.conf выглядит и вовсе примитивно:
option /etc/ppp/options.pptpd
localip 10.0.0.1
remoteip 10.0.0.2-254

среда, 15 октября 2008 г.

Настройка vpn-туннеля по протоколу L2TP в Linux



Дано: Mandriva 2008.1, маршрутизатор Cisco 7200 серии, терминирующий туннели и поддерживающий протокол L2TP, нужно поднять туннель по этому протоколу без поддержки IPSec.
Пусть: адрес Cisco 172.16.0.1, мой шлюз по умолчанию (до поднятия туннеля) 10.0.0.1, имя пользователя vpn_user, пароль vpn_secret (в дальнейшем эти значения в командах и конфигах заменять на реальные).
Перед тем как начнем - два важных пункта подготовки.
Первое.
Маршрут до терминатора vpn должен существовать как до, так и после поднятия туннеля (когда у нас изменится маршрут по умолчанию), потому необходимо прописать его явно:
# route add -host 172.16.0.1 gw 10.0.0.1
Так как в будущем это должно работать при загрузке, то надо либо добавить эту строку в файл /etc/rc.local (грубый вариант, который будет работать в любом Linux), либо (для Mandriva и RedHat-like) добавить строку
172.16.0.1/32 via 10.0.0.1
в файл /etc/sysconfig/network-scripts/route-eth0 (если у вас несколько сетевух, то возможно будет не eth0)
Еще один вариант (точно работает в Mandriva и рекомендуется Mandriva Wiki) - файл называется /etc/sysconfig/network-scripts/eth0.route (UPD: имя route-eth0 тоже работает) и синтакис у него такой:
ADDRESS0=172.16.0.1
NETMASK0=255.255.255.255
GATEWAY0=10.0.0.1
(если маршрут - не первый в фале, то вместо 0 будет 1, 2 и т. д.)
Для других популярных Linux действуем примерно так (прочитано в сети, не тестировалось):
В debian-like (*buntu, etc):
в файле /etc/network/interfaces
в раздел
iface eth0 inet static
добавить строку
<символ табуляции>post-up route add -host 172.16.0.1 gw 10.0.0.1
В OpenSUSE файл называется /etc/sysconfig/network/ifroute-eth0
и синтаксис строк в нем такой:
172.16.0.1 10.0.0.1 32
И второе. Для того, чтобы туннель мог быть успешно установлен, необходимо разрешить прохождение пакетов протокола UDP между портами 1701 терминатора vpn и нашего компьютера в обоих направлениях. Т.е. если конфигурацией файрвола на прохождение пакетов UDP наложены какие-то ограничения (а они у разумного администратора должны быть наложены), то должны быть добавлены примерно такие два правила:
# iptables -A INPUT -p udp -s 172.16.0.1 --sport 1701 --dport 1701 -j ACCEPT
# iptables -A OUTPUT -p udp -d 172.16.0.1 --sport 1701 --dport 1701 -j ACCEPT
Теперь начинаем собственно строить VPN. Входящий в репозиторий Mandriva пакет l2tpd у меня не завелся, потому ставил его форк xl2tpd (брать тут - есть tar.gz и srpm - кому что больше нравится). Версия у меня была 1.2.0-1. Собираем, ставим, пишем конфиг демона (файл /etc/xl2pd/xl2tpd.conf):
[lac c7200]
name = vpn_user
require chap = yes

require pap = no
lns = 172.16.0.1
redial = yes
require authentication = no
ppp debug = no
pppoptfile = /etc/ppp/options.xl2tpd
autodial = yes
hidden bit = no
flow bit = yes
length bit = yes

Опции pppd как видно из прошлого файла, пишем в /etc/ppp/options.xl2tpd:
unit 0
name vpn_user
ipparam l2tp_vpn
connect /bin/true
mru 1460
mtu 1460
noauth
persist
maxfail 0
nopcomp
noaccomp

имя и пароль добавляем в /etc/ppp/chap-secrets:
vpn_user * vpn_secret

И - для поднятия маршрутизации (т.к. pppd не умеет при запуске перзаписать существующий маршрут по умолчанию) пишем такой скрипт /etc/ppp/ip-up.local:
#!/bin/sh

# переменная $6 - это ipparam,
# заданный нами в /etc/ppp/options.xl2tpd
if [ "$6" = "l2tp_vpn" ]
then
route delete default
route add default ppp0
fi

а для обратного отката - скрипт /etc/ppp/ip-down.local:
#!/bin/sh
route delete default
route add default 10.0.0.1

(не забыть, что эти два файла должны быть исполняемыми)
Если при выключенном vpn шлюз по умолчанию Вам не нужен (все равно никуда не пущают ;), то можно вместо таких жестоких путей просто добавить строку:
defaultroute
в файл /etc/ppp/options.xl2tpd
Запускаться наш vpn будет командой:
# /etc/init.d/xl2tpd start
Осталось заметить в скобках, что в ту же мандриву входит модуль ядра pppol2tp. Так вот его в данной конфигурации загружать не надо. xl2tpd вроде должен уметь с ним работать, но у меня не заработал. Возможно, что-то не то с версиями ядра и демона.