?

Log in

Previous Entry | Next Entry

L2TP сервер в Linux

Пришлось тут раскочегаривать L2TP сервер на линухе. Вот решил поделиться инфой.

Итак.

ОС: Linux SlackWare 11.0
Ядро: 2.6.16.43 (включена полная поддержка PPP)
PPPd: 2.4.4 (пересобран из слакварских исходников)

Общий план действий:
1) Установка l2tpd
2) Настройка l2tpd
3) Настройка pppd
4) Настройка роутингов и правил iptables (здесь упущено, тк не имеет отношения к настройке l2tpd)


--- (1) Установка L2TPd ---
Для организации L2TP сервера был выбран этот демон.
Скаченый оттуда демон содержит несколько синтаксических ошибок в коде, а так же одну логическую. Кому интересно -- могу рассказать какие.
Кто не хочет этим всем заморачиваться, могут скачать уже исправленные сырцы отсюда.
Собирается он как обычно: make
А вот ставиться он вручную. Никакого make install'a там нету. Но это не беда.
Копируем бинарник l2tpd в /usr/local/sbin, man'овские файлы из директории doc/ в соответствующие man разделы /usr/local/man/.
Далее создаём дерикторию /etc/l2tp/. Туда можно скопировать примеры конфигов из директории doc/ (чтоб всегда были под рукой).
Рекомендую так-же где-нить сохранить файл README, тк там написаны команды для демона.
На этом установку можно считать законченой.

--- (2) Настройка L2TPd ---
Так как нам нужен L2TP сервер, а не клиент, все настройки для клиента я опускаю (да я и не разбирался особо, как клиента настроить :) ).
Итого, нам надо получить L2TP туннель с аутентификацией в котором будет жить PPP трафик.

Конфигурационные файлы.

Основной конфигурационный файл для l2tpd
/etc/l2tp/l2tpd.conf
; секция глобальных параметров
[global]
; UDP-порт на котором слушаем
  port = 1701
; файл с секретами для аутентификации туннеля (не тутать с PPP аутентификацией)
  auth file = /etc/l2tp/l2tp-secrets
; разрешаем подключение клиентов (в терминологии протокола L2TP -- LAC(L2TP Access Concentrator)) с любых адресов
  access control = no
; задаём генератор случайных чисел (/dev/urandom)
  rand source = dev

; секция настроек сервера (в терминалогии протокола L2TP -- LNS(L2TP Network Server))
[lns default]
; разрешаем поднятие более чем одного туннеля между одними хостами
  exclusive = no
; диапазон IP адресов из которого будут выдаваться адреса для ip соединений внутри ppp
  ip range = 10.0.0.90-10.0.0.95
; использовать скрытые пары (см стандарт L2TP для более подробной информации что это такое)
  hidden bit = yes
; IP адрес точки (самого сервера) при ip соединении внутри ppp
  local ip = 10.0.0.254
; см стандарт (не разбирался что это такое)
  length bit = yes
; запрос аутентификации CHAP
  require chap = yes
; отклонене PAP
  refuse pap = yes
; не отклонять обоюдную аутентификацию хостов (при PPP соединении)
  refuse authentication = no
; обязать обоюдную аутентификацию хостов (при PPP соединении)
  require authentication = yes
; имя хоста для PPP аутентификации
  name = _my-host-name_
; это понятно :))
  ppp debug = yes
; файл с опциями для pppd
  pppoptfile = /etc/ppp/options.l2tpd
; см стандарт (не разбирался что это такое)
  flow bit = yes


Файл с секретами для атентификации L2TP туннеля
/etc/l2tp/l2tp-secrets
# Secrets for authenticating l2tp tunnels
# мы они секрет
_our-host_ _remote-host_ _tunnel-pass_

тут:
_our-host_ -- имя нашего хоста для аутентификации туннеля (если поставить *, то будет не важно)
_remote-host_ -- имя удалённого хоста для аутентификации туннеля (задаётся, но так же мб *)
_tunnel-pass_ -- :)) думаю, и так понятно


На этом настройку l2tpd можно считать законченой.

--- (3) Настройка PPPd ---

Файл с опциями для pppd
/etc/ppp/options.l2tpd
  mtu 1410
  mru 1410

  lcp-echo-interval 3
  lcp-echo-failure 8

  logfile /var/log/pppd

  nodeflate
  noproxyarp

  lock

Описывать опции pppd не буду. Кому интересно -- man pppd =))

Файл с CHAP паролями и тп
/etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
_uname_ _my-host-name_ _upass_ _ip-address_

_uname_ -- имя пользователя
_my-host-name_ -- имя самого хоста (см файл /etc/l2tp/l2tpd.conf)
_upass_ -- пароль
_ip-address_ -- ip адрес, который будет выдан на ip соединение внутри ppp (если поставить *, то адрес будет взят из пула (см файл /etc/l2tp/l2tpd.conf))

За сим настройку pppd считаем законченой.


Как я уже писал выше, вдаваться в настройки роутинга и фаервола я не буду, тк это выходить за рассмотрение настроек L2TP сервера.

Запускать l2tpd можно в двух режимах. В режиме демона (тогда он будет весь вывод писать в логи) и в интерактивном режиме (с опцией -D). Тогда он не отваливается от консоли и весь вывод пишет на неё. Оч полезно для отладки.

Нектрую полезную информацию можно почерпнуть в man l2tpd и в man l2tpd.conf.

--- Ссылки ---
Полную информацию о протоколе можно посмотреть в соответствующем RFC 2661.
Немного на русском лежит ТУТ.
Общую инфу о туннелях можно прочитать ТУТ.
Ещё про L2TP от ciscoТУТ и ТУТ.

Если вдруг-кто найдёт какие неточности или ошибки -- сразу камментите!!!

Comments

( 3 comments — Leave a comment )
(Anonymous)
Jan. 8th, 2009 11:52 am (UTC)
Не пашет и не могу понять почему
Сделал как написано с статье запустил вроди все ок - без ошибок
-------------
[root@node1 ~]# /usr/local/l2tpd-0.69/sbin/l2tpd_v2 -D -c /etc/l2tp/l2tp_v2.conf -s /etc/l2tp/l2tp-secrets
This binary does not support kernel L2TP.
l2tpd version 0.69 started on node1 PID:4817
Written by Mark Spencer, Copyright (C) 1998, Adtran, Inc.
Forked by Scott Balmos and David Stipp, (C) 2001
Inhereted by Jeff McAdams, (C) 2002
Linux version 2.6.18-92.el5 on a i686, port 1701
---------------
Все слушается по при попытке соединиться с винды (создал новое VPN соединение, по протоколу l2tp) ничего не работает, похоже даже не доходит ничго до самого демона l2tpd так как в дебагинге пусто.
Ошибка на стороне XP
---------------------
Error 792: The L2TP connection attempt failed because security
negotiation timed out.
---------------------
Подскажите что не так настроенно - где какую галку нажать или как подключиться к этому VNP серверу???
bugubudji
Feb. 27th, 2009 08:36 pm (UTC)
Скажу сразу, что я клиента настраивал только для роутеров Cisco и как ведёт себя винда -- даже понятия не имею.
Единственное, что знаю про винду, так это то, что в ней L2TP не живёт отдельно от IPSec. Помнится, где-то даже выкладывали скрипт, который отрубает IPSec в винде (какое-то шаманство с реестром).
Возможно, ошибка именно в этом, тк никакого IPSec туннеля, естественное, не поднимается.
ruerick
Jul. 15th, 2013 10:21 am (UTC)
"исправленныл сырцов" не вижу, сервер недоступен.
сам l2tpd с тех пор не развивается. Что можно на сегодняшний день найти подходящего для слаки?
Интересует сам l2tp, без всяческой обвески.
( 3 comments — Leave a comment )

Profile

nanomachine
nanomachines
nanomachines

Latest Month

March 2012
S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031
Powered by LiveJournal.com
Designed by Tiffany Chow