поднятие l2tp на ng интерфейсе

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
EARL
мл. сержант
Сообщения: 85
Зарегистрирован: 2010-05-24 9:05:18
Откуда: Тамбов

поднятие l2tp на ng интерфейсе

Непрочитанное сообщение EARL » 2010-10-04 13:48:13

Имеется подключение к провайдеру через pppoe. Настроено посредством mpd5. При подключении провайдер выдает белый IP (X.X.X.X). Необходимо на этом IP поднять сервер L2TP. Вот конфиг:

Код: Выделить всё

startup:
        set user admin admin admin
        set console self 0.0.0.0 23
        set console open
default:
        load isp_pppoe
        load l2tp_server
isp_pppoe:
        create bundle static B1
        set iface idle 0
        set iface enable tcpmssfix
        set ipcp yes vjcomp
        set iface up-script "/usr/local/etc/mpd5/pppoe-up.sh"
        set iface down-script "/usr/local/etc/mpd5/pppoe-down.sh"
        create link static L1 pppoe
        set link action bundle B1
        set link yes acfcomp protocomp
        set link keep-alive 10 60
        set link max-redial 0
        set auth authname "***"
        set auth password "***"
        set pppoe iface rl1
        set pppoe service ""
        open
l2tp_server:
        create bundle template B2
        set iface idle 1800
        set iface enable tcpmssfix
        set iface up-script "/usr/local/etc/mpd5/l2tp-up.sh"
        set iface down-script "/usr/local/etc/mpd5/l2tp-down.sh"
        set ipcp yes vjcomp
        set ipcp ranges 172.16.1.1 172.16.1.0/24
        set bundle enable compression
        set ccp yes mppc
        set mppc yes e40
        set mppc yes e128
        set mppc yes stateless
        create link template L2 l2tp
        set link action bundle B2
        set link yes acfcomp protocomp
        set link no pap chap
        set link enable chap chap-msv1 chap-msv2 chap-md5
        set link keep-alive 10 60
        set l2tp self X.X.X.X
        set link enable incoming
Т.к. на подключение и выдачу провайдером белого IP адреса X.X.X.X уходит некоторое время L2TP обламывается в привязки к IP, который машина еще не получила. Приходится каждый раз телнетом заходить в консоль mpd и писать там:

Код: Выделить всё

        set l2tp self X.X.X.X
        set link enable incoming
В логах mpd5 видно вот что:

Код: Выделить всё

Oct  3 18:54:57 excluzive mpd: Multi-link PPP daemon for FreeBSD
Oct  3 18:54:57 excluzive mpd:
Oct  3 18:54:57 excluzive mpd: process 1579 started, version 5.5 (root@excluzive.ws 23:51 27-Feb-2010)
Oct  3 18:54:57 excluzive mpd: CONSOLE: listening on 0.0.0.0 23
Oct  3 18:54:57 excluzive mpd: [B1] Bundle: Interface ng0 created
Oct  3 18:54:57 excluzive mpd: L2TP: bind: Can't assign requested address
Oct  3 18:54:57 excluzive mpd: [L1] Link: OPEN event
Oct  3 18:54:57 excluzive mpd: [L1] LCP: Open event
Причем если PPTP нормально умеет привязываться, а с L2TP такая вот проблема. У кого какие идеи как всё таки заставить L2TP корректно стартовать?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35267
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: поднятие l2tp на ng интерфейсе

Непрочитанное сообщение Alex Keda » 2010-10-10 14:16:49

интересно, на какой адрес он ломится...
дебажность побольше сделать нельзя?
Убей их всех! Бог потом рассортирует...

Аватара пользователя
EARL
мл. сержант
Сообщения: 85
Зарегистрирован: 2010-05-24 9:05:18
Откуда: Тамбов

Re: поднятие l2tp на ng интерфейсе

Непрочитанное сообщение EARL » 2010-10-10 14:48:26

Alex Keda писал(а):интересно, на какой адрес он ломится...
не совсем понял, что вы имеете в виду, т.к. с pppoe проблем нет - оно устанавливается, а вот l2tp сервер уже не запускается.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35267
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: поднятие l2tp на ng интерфейсе

Непрочитанное сообщение Alex Keda » 2010-10-10 14:58:27

Код: Выделить всё

Oct  3 18:54:57 excluzive mpd: L2TP: bind: Can't assign requested address
Убей их всех! Бог потом рассортирует...

Аватара пользователя
EARL
мл. сержант
Сообщения: 85
Зарегистрирован: 2010-05-24 9:05:18
Откуда: Тамбов

Re: поднятие l2tp на ng интерфейсе

Непрочитанное сообщение EARL » 2010-10-10 15:09:05

это потому что в конфиге у меня адрес L2TP сервера указан тот, что выдает мне провайдер, а на момент запуска mpd сессия pppoe еще не установлена и адрес этот мне еще никто не выдал.

Аватара пользователя
EARL
мл. сержант
Сообщения: 85
Зарегистрирован: 2010-05-24 9:05:18
Откуда: Тамбов

Re: поднятие l2tp на ng интерфейсе

Непрочитанное сообщение EARL » 2010-11-25 19:31:55

Попробовал изменить строчку в конфиге на

Код: Выделить всё

        set l2tp self 0.0.0.0
Тут вроде всё хорошо. L2TP слушает на всех интерфейсах. Коннекты идут, сессии поднимаются и всё хорошо вроде. Но имеются проблемы в установке сессий с некоторых сетей, лежащих за соседним роутером.
Логическая схема сети:
Диаграмма1.png
R1 - мой сервер
R2 - соседний сервер
ISP1 - провайдер 1
ISP2 - провайдер 2

Провайдеры ISP1 и ISP2 имеют между собой пиринг. Серверы R1 и R2 соединены между собой через gif интерфейс. Таблицы роутеров:

R1

Код: Выделить всё

Destination        Gateway            Flags    Refs      Use  Netif Expire
default            10.0.0.8           UG1         0  9109437   ng0
10.0.0.8           link#13            UH          0        0   ng0
78.X.X.0/17        192.168.135.5      UG1         0  1408823   gif0
91.X.X.1           link#13            UHS         0    24190   lo0
192.168.135.5      link#11            UH          0    21727   gif0
192.168.135.6      link#11            UHS         0        0   lo0
R2

Код: Выделить всё

Destination        Gateway            Flags    Refs      Use  Netif Expire
default            78.X.X.82          UG1         0  9109437   ngX
78.X.X.82          link#10            UH          0        0   ngX
78.X.X.1           link#8             UHS         0    24190   lo0
192.168.135.6      link#12            UH          0    21727   gif0
192.168.135.5      link#12            UHS         0        0   lo0
В случае когда коннекты идут из ISP1 всё в порядке, но если пытаться поднять сессию из сети ISP2, то сессия не поднимается. Поснифал tcpdump'ом и вижу как пакеты прилетают на ng0 [91.X.X.1] интерфейс, а обртано летят через gif0 [192.168.135.6]. В качестве фаервола стоит pf.

Код: Выделить всё

if="ng0"
ip="91.X.X.1"
gw="10.0.0.8"

nat on $if from !<net_me> -> ($if)

pass out quick on $if

pass in quick on $if reply-to ($if $gw) inet proto { tcp, udp } to $if port 53                  # dns
pass in quick on $if reply-to ($if $gw) inet proto tcp to $if port 80                           # http
pass in quick on $if reply-to ($if $gw) inet proto tcp to $if port 25                           # smtp
pass in quick on $if reply-to ($if $gw) inet proto tcp to $if port 110                          # pop3
pass in quick on $if reply-to ($if $gw) inet proto udp from <net_free> to $if port 1701  # l2tp
pass in quick on $if reply-to ($if $gw) inet proto icmp to $if                                  # icmp
В табличке net_free указаны адреса сетей обоих ISP, а в табличке net_me указаны все ip адреса интерфейсов сервера.

Получается правила reply-to тут не срабатывают.

Аватара пользователя
EARL
мл. сержант
Сообщения: 85
Зарегистрирован: 2010-05-24 9:05:18
Откуда: Тамбов

Re: поднятие l2tp на ng интерфейсе

Непрочитанное сообщение EARL » 2010-12-30 11:18:04

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

Код: Выделить всё

        set l2tp self 127.0.0.1
Дальше в правилах pf делаем редирект на 127.0.0.1

Код: Выделить всё

if="ng0"
ip="91.X.X.1"
gw="10.0.0.8"

nat on $if from !<net_me> -> ($if)

rdr on $if inet proto udp from to ($if) port 1701 tag ext_if1 -> 127.0.0.1
pass in quick on $if reply-to ($if $gw) tagged ext_if1

pass out quick on $if

pass in quick on $if reply-to ($if $gw) inet proto { tcp, udp } to $if port 53                  # dns
pass in quick on $if reply-to ($if $gw) inet proto tcp to $if port 80                           # http
pass in quick on $if reply-to ($if $gw) inet proto tcp to $if port 25                           # smtp
pass in quick on $if reply-to ($if $gw) inet proto tcp to $if port 110                          # pop3
#pass in quick on $if reply-to ($if $gw) inet proto udp from <net_free> to $if port 1701  # l2tp
pass in quick on $if reply-to ($if $gw) inet proto icmp to $if                                  # icmp
Всё. Теперь коннекты из любых сетей принимаются на внешем интерфейсе независимо от маршрутов имеющихся в таблице маршрутизации.