The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Подключения к Internet Beeline (Corbina) в Debian GNU/Linux 6 по протоколу l2tp
Руководство по настройке подключения к провайдеру Beeline (Corbina) в Debian 6 по протоколу l2tp.

1. Локальное подключение: Ethernet 100Mb. Настройки по DHCP (локальный IP, маршруты, DNS серверы).

2. Подключение к Internet: по протоколу l2tp через сервер tp.internet.beeline.ru.


1.1. "Ловим" маршруты (у меня больше 30):

В связи с увлеченностью Beeline технологиями от MS придется подправить dhclient.conf, заменяем 

   option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

на

   option rfc3442-classless-static-routes code 249 = array of unsigned integer 8;
 
далее добавляем в секцию "request" опцию "static-routes", а в директорию
"/etc/dhcp/dhclient-exit-hooks.d/" скрипт (назовем его "static_routes"):

   RUN="yes"
   if [ "$RUN" = "yes" ]; then
        if [ "$new_static_routes" != "" ]; then
                if [ "$reason" = "BOUND" ] || [ "$reason" = "REBOOT" ]; then
                        my_static_routes=($new_static_routes)

                        for(( i=0; i < ${#my_static_routes[@]}; i=i+2 )); do
				/sbin/route add -host "${my_static_routes[$i]}" gw "${my_static_routes[$i+1]}"
                        done
                fi
        fi
   fi

В зтом скрипте я делаю допущение, что через опцию "static_routes" выдаются
маршруты только к хостам, не к сетям (для Beeline это верно).

Еще один нюанс - после поднятия интерфейса, в "dhclient.ethX.leases", у меня
остается адрес сервера dhcp недостижимый по протоколу dhcp.

Поэтому по истечению времени "renew" (у меня 3 дня) в log начинает сыпаться
сообщения о недосягаемости dhcp сервера.

Во избежании, добавим опцию: 

   supersede dhcp-server-identifier 255.255.255.255;

Получаем что-то типа:

   option rfc3442-classless-static-routes code 249 = array of unsigned integer 8;
   supersede dhcp-server-identifier 255.255.255.255;
   request subnet-mask, broadcast-address, time-offset, routers, static-routes,
	domain-name, domain-name-servers, domain-search, host-name,
	netbios-name-servers, netbios-scope, interface-mtu,
	rfc3442-classless-static-routes, ntp-servers;

1.2. Подымаем интерфейс. Подправляем маршруты.

Файл /etc/network/interfaces:

   iface ethX inet dhcp
      l2tpserv tp.internet.beeline.ru
      l2tpgw  10.xxx.xxx.xxx  # адрес шлюза - узнается экспериментально.

Прописываем маршруты к DNS и к tp.internet.beeline.ru.
Файл /etc/network/if-up.d/prel2tp: название может быть любое:

   #!/bin/sh
   BINROUTE=/sbin/route
   if [ "x$IF_L2TPSERV" != "x" -a "x$IF_L2TPGW" != "x" ]
   then
      for i in $(grep "^nameserver" /etc/resolv.conf | awk '{print $2}') ; do
         $BINROUTE add -host $i gw $IF_L2TPGW
      done
      $BINROUTE add -host $IF_L2TPSERV gw $IF_L2TPGW
   fi
   exit 0

2.1. openl2tp vs. xl2tpd.

openl2tp работает быстрее, ping (меньше и стабильней), но вечерами отваливается
и уже после этого не подымается до поздней ночи.
Еще пару раз при неудачной последовательности запуска вешал ядро. В общем сыроват.

xl2tpd(l2tpd) - ужасный код, но легко читается и правится, нагрузка на CPU (с
отключенным DEBUG 1-2 %), работает стабильно, при обрывах переподключается
самостоятельно, маленький. Мой выбор xl2tpd.

2.2. Настройка xl2tpd.

В процессе тестирования, мной обнаружены ошибки влияющие на стабильность.
Поэтому рекомендую пропатчить xl2tpd.

1. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=611829

2. Кого раздражает в "syslog" "write_packet: Resource temporarily
unavailable(11)". Также, заплатка уменьшает вероятность потери пакета.

Патч l2tp-offsetpad-error.patch:

   --- xl2tpd-1.2.7+dfsg.orig/network.c
   +++ xl2tpd-1.2.7+dfsg/network.c
   @@ -153,7 +153,7 @@ inline void fix_hdr (void *buf)
     {
         int len = 6;
         if (PSBIT (ver))
   -            len += 4;
   +            len += 2;
         if (PLBIT (ver))
             len += 2;
         if (PFBIT (ver))
   --- xl2tpd-1.2.7+dfsg.orig/control.c
   +++ xl2tpd-1.2.7+dfsg/control.c
   @@ -1299,7 +1299,7 @@ inline int check_payload (struct buffer
 			}
 		} */
         if (PSBIT (h->ver))
   -            ehlen += 4;         /* Offset information */
   +            ehlen += 2;         /* Offset information */
         if (PLBIT (h->ver))
             ehlen += h->length; /* include length if available */
         if (PVER (h->ver) != VER_L2TP)
   @@ -1365,7 +1365,7 @@ inline int expand_payload (struct buffer
     if (!PFBIT (h->ver))
         ehlen += 4;             /* Should have Ns and Nr too */
     if (!PSBIT (h->ver))
   -        ehlen += 4;             /* Offset information */
   +        ehlen += 2;             /* Offset information */
     if (ehlen)
     {
         /*
   @@ -1410,13 +1410,13 @@ inline int expand_payload (struct buffer
         {
             r++;
             new_hdr->o_size = *r;
   -            r++;
   -            new_hdr->o_pad = *r;
   +//            r++;
   +//            new_hdr->o_pad = *r;
         }
         else
         {
             new_hdr->o_size = 0;
   -            new_hdr->o_pad = 0;
   +//            new_hdr->o_pad = 0;
         }
     }
     else
   @@ -1548,8 +1548,9 @@ inline int write_packet (struct buffer *
     /*
      * Skip over header 
      */
   -    buf->start += sizeof (struct payload_hdr);
   -    buf->len -= sizeof (struct payload_hdr);
   +    _u16 offset = ((struct payload_hdr*)(buf->start))->o_size;  // For FIXME:
   +    buf->start += sizeof(struct payload_hdr) + offset;
   +    buf->len -= sizeof(struct payload_hdr) + offset;
 
     c->rx_pkts++;
     c->rx_bytes += buf->len;
   --- xl2tpd-1.2.7+dfsg.orig/call.c
   +++ xl2tpd-1.2.7+dfsg/call.c
   @@ -52,8 +52,8 @@ void add_payload_hdr (struct tunnel *t,
     buf->start -= sizeof (struct payload_hdr);
     buf->len += sizeof (struct payload_hdr);
     /* Account for no offset */
   -    buf->start += 4;
   -    buf->len -= 4;
   +    buf->start += 2;
   +    buf->len -= 2;
     if (!c->fbit && !c->ourfbit)
     {
         /* Forget about Ns and Nr fields then */
   --- xl2tpd-1.2.7+dfsg.orig/l2tp.h
   +++ xl2tpd-1.2.7+dfsg/l2tp.h
   @@ -82,7 +82,7 @@ struct payload_hdr
     _u16 Ns;                    /* Optional next sent */
     _u16 Nr;                    /* Optional next received */
     _u16 o_size;                /* Optional offset size */
   -    _u16 o_pad;                 /* Optional offset padding */
   +//    _u16 o_pad;                 /* Optional offset padding */
   } __attribute__((packed));
 
    #define NZL_TIMEOUT_DIVISOR 4   /* Divide TIMEOUT by this and


Патч http://ilyx.ru/xl2tpd/wr_pk-nolog-err11.patch:

   --- xl2tpd-1.2.7+dfsg.orig/control.c
   +++ xl2tpd-1.2.7+dfsg/control.c
   @@ -1636,15 +1637,14 @@ inline int write_packet (struct buffer *
     }
    #endif
 
   -    x = write (c->fd, wbuf, pos);
   -    if (x < pos)
   +    x = 0;
   +    while ( pos != 0 )
        {
   -      if (DEBUG)
   +      x = write (c->fd, wbuf+x, pos);
   +      if ( x < 0 ) {
   +        if ( errno != EINTR && errno != EAGAIN ) {
    	l2tp_log (LOG_WARNING, "%s: %s(%d)\n", __FUNCTION__, strerror  (errno),
    		  errno);
   -
   -        if (!(errno == EINTR) && !(errno == EAGAIN))
   -        {
             /*
                * I guess pppd died.  we'll pretend
                * everything ended normally
   @@ -1653,6 +1653,12 @@ inline int write_packet (struct buffer *
             c->fd = -1;
             return -EIO;
         }
   +        else {
   +	   x = 0;
   +          continue;
   +        }
   +      }
   +      pos = pos - x;
        }
        return 0;
    }

Ставим желательно пропатченный xl2tpd. Далее приведу свои файлы конфигураций.

xl2tpd.conf:

   [global]
   access control = yes
   [lac beeline]
   lns = tp.internet.beeline.ru
   redial = yes
   redial timeout = 20
   pppoptfile = /etc/ppp/options.xl2tpd
   autodial = yes
   flow bit = no

/etc/ppp/options.xl2tpd:

   asyncmap 0000
   mru 1460
   mtu 1460
   name xxxxxxxx
   noaccomp
   nopcomp
   novj
   novjccomp
   noauth
   nobsdcomp
   nodeflate
   noipx
   noauth
   nomp
   refuse-eap
   # refuse-chap
   refuse-pap
   # refuse-mschap
   # refuse-mschap-v2
   replacedefaultroute
   defaultroute
   ipparam l2tp
   unit 0

/etc/ppp/options:

   lcp-echo-failure 10
   lcp-echo-adaptive
   lcp-echo-interval 60

демон pppd читает оба файла(options.xl2tpd, options). Не забываем "chap-secrets".

Убираем маршрут к "tp.internet.beeline.ru" после старта "pppd" через созданный
туннель(спасибо Corbina(Beeline) за адрес l2tp сервера, совпадающий с адресом
второго конца туннеля).

/etc/ppp/ip-up.d/delroute:

   #!/bin/sh
   if [ "x$6" = "xl2tp" ]
   then
      route del -host $5 dev $1
   fi
   exit 0
     
В iptables, как минимум, нужно правило(если работаем как шлюз):

   $IPTABLES -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Ну теперь вроде бы все. Прописываем автостарт ethX или ifup ethX, затем
"/etc/init.d/xl2tpd start" или автостарт при загрузке.

Выключение тоже стандартно "/etc/init.d/xl2tpd stop" ifdown ethX.

PS. У меня работает без разрывов сутками, так как компьютер дома, раза два в
неделю выключаю. В общем доволен, хотя Beeline, мог бы сделать все по
прозрачней для конечного пользователя. Но видимо
не хотят. 

Патчи, сборку пакета для Debian 6 amd64 и оригинал руководства можно скачать здесь.
 
28.02.2011 , Автор: Ilya , Источник: http://ilyx.ru/xl2tpd/...
Ключи: l2tp, vpn, debian, linux, beeline, pptp / Лицензия: CC-BY
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / Туннелинг, VPN, VLAN

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, Po Ping Hui, 15:46, 28/02/2011 [ответить] [смотреть все]
  • +1 +/
    почему бы не прописать обе опции (121, 249)?
     
  • 1.2, StreSS.t, 16:21, 28/02/2011 [ответить] [смотреть все]
  • +/
    Спасибо автору. И патчик в debian отправил.
     
  • 1.3, inkvizitor68sl, 16:51, 28/02/2011 [ответить] [смотреть все]
  • +/
    Лол. Спасибо, я свой роутер настроил... И все маршруты прилетели.
    А саппорт у них ппц просто, да. "Ваш роутер не будет работать у нас", да.
     
  • 1.4, srgaz, 20:27, 28/02/2011 [ответить] [смотреть все]
  • +/
    Они купили кота в мешке, билайн там не причем
     
  • 1.5, PingOfDeath, 21:30, 28/02/2011 [ответить] [смотреть все]
  • +/
    Билайн после покупки тоже намудрил прикручивая собственный билинг, а по-поводу саппорта так там знающие люди и не задерживаются, принимать звонки по 12 часов подряд, еще и врать людям постоянно. надолго никого не хватит
     
     
  • 2.7, Аноним, 22:43, 28/02/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Вся ШПД-сеть билайна и купленных последние три года дочек построена на биллинге ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.8, PingOfDeath, 22:59, 28/02/2011 [^] [ответить] [смотреть все]  
  • +/
    ну так INAC да остался от корбины но вот при реализации взаимодействия со своими... весь текст скрыт [показать]
     
  • 3.9, PingOfDeath, 23:03, 28/02/2011 [^] [ответить] [смотреть все]  
  • +/
    и да кстати, как вы думаете зачем были сделаны логины вида 089 ххх хх хх где х ... весь текст скрыт [показать]
     
     
  • 4.10, Вова, 18:18, 01/03/2011 [^] [ответить] [смотреть все]  
  • +/
    по переходу под крыло билайна исчезла статистика, и изменилось поведение биллинг... весь текст скрыт [показать]
     
     
  • 5.16, Johnny__, 15:29, 05/03/2011 [^] [ответить] [смотреть все]  
  • +/
    С 2008 г , когда компании начали объединение, они эксплуатировали около 30 разл... весь текст скрыт [показать]
     
  • 5.19, PingOfDeath, 19:01, 05/03/2011 [^] [ответить] [смотреть все]  
  • +/
    здорово, а подумать головой и посчитать сколько получит оператор перейдя на ежем... весь текст скрыт [показать]
     
     
  • 6.22, Вова, 11:27, 07/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Вы не на тот коммент "ответили"? Или о чём вообще?
     
     
  • 7.23, PingOfDeath, 21:25, 07/03/2011 [^] [ответить] [смотреть все]  
  • +/
    на тот просто вы считаете что переход с посуточной оплаты на помесячную был выз... весь текст скрыт [показать]
     
     
  • 8.24, Вова, 21:37, 07/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Да если бы изменился только расчётный период То, что интерфейс изменился - тоже... весь текст скрыт [показать]
     
     
  • 9.25, Аноним, 00:14, 08/03/2011 [^] [ответить] [смотреть все]  
  • +/
    В билайне во всех купленных дочках с прошлого года осуществлена миграция ШПД-кли... весь текст скрыт [показать]
     
     
  • 10.26, Вова, 10:13, 08/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Домыслов тут ноль, статистика исчезла исчезла Тарификация ухудшилась Ухудшила... весь текст скрыт [показать]
     
     
  • 11.27, PingOfDeath, 10:21, 08/03/2011 [^] [ответить] [смотреть все]  
  • +/
    возможные причины изменения тарификации я вам уже написал, веб-изменили чтобы со... весь текст скрыт [показать]
     
     
  • 12.29, Вова, 10:36, 08/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Это случилось - в один прекрасный день пару лет назад То есть вечером - всё аке... весь текст скрыт [показать]
     
  • 11.28, PingOfDeath, 10:30, 08/03/2011 [^] [ответить] [смотреть все]  
  • +/
    а статистика была, есть и будет просто раньше давали посмотреть на данные по ка... весь текст скрыт [показать]
     
     
  • 12.30, Вова, 10:38, 08/03/2011 [^] [ответить] [смотреть все]  
  • +/
    п я и имею в виду помесячную статистику за прошлые месяцы, она тупо раз - и проп... весь текст скрыт [показать]
     
  • 2.11, hizel, 09:28, 02/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    экое незамутненное сознание, да да, весь мир желает вам зла - ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.17, PingOfDeath, 18:55, 05/03/2011 [^] [ответить] [смотреть все]  
  • +/
    у вас есть знакомые в корбине нет а у меня помимо 2 лет работы в саппорте, нач... весь текст скрыт [показать]
     
     
  • 4.20, hizel, 19:25, 05/03/2011 [^] [ответить] [смотреть все]  
  • +/
    ой, примите мои извинения, неправильно прочитал ваш пост что касается знакомых ... весь текст скрыт [показать]
     
  • 3.18, PingOfDeath, 18:56, 05/03/2011 [^] [ответить] [смотреть все]  
  • +/
    помимо 2-х лет работы еще и половина контакт листа бывшие и нынешние сотрудники ... весь текст скрыт [показать]
     
  • 1.13, gyouja, 15:14, 03/03/2011 [ответить] [смотреть все]  
  • +/
    > В зтом скрипте я делаю допущение, что через опцию
    > "static_routes" выдаются маршруты только к хостам,
    > не к сетям (для Beeline это верно).

    Используйте /sbin/ip route add вместо /sbin/route add -host, тогда не нужно будет делать подобных допущений.

     
  • 1.15, Paul Rufous, 23:39, 04/03/2011 [ответить] [смотреть все]  
  • +/
    По этому вики я елементарно настроил:
    http://ru.posix.wikia.com/wiki/PPTP
    У Вас почему-то до извращенности тяжело.
     
  • 1.21, koblin, 22:55, 05/03/2011 [ответить] [смотреть все]  
  • +/
    pptp настраивается проще и работает стабильно, хотя может кому пригодится
     
     
  • 2.31, Вова, 10:59, 08/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    pptp теряет пакеты и грузит систему, в отличие от l2tp Как раз на корбиновских... весь текст скрыт [показать] [показать ветку]
     
  • 1.32, Paul Rufous, 23:19, 10/03/2011 [ответить] [смотреть все]  
  • +/
    В вики как раз есть настройка vpn и l2tp + маршрутизация. Я конечно за l2tp.
     
  • 1.33, Fatalist, 19:50, 17/03/2011 [ответить] [смотреть все]  
  • +/
    >>$BINROUTE add -host $IF_L2TPSERV gw $IF_L2TPGW

    здесь я бы добавлял подсеть, а не хост, потому что при переподключении адрес tp.internet.beeline.ru может изменится, а маршрута до него не будет

     
     
  • 2.34, Author, 21:20, 22/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Можно конечно и сеть, Я об этом думал Но он не меняется А если поменяется, то ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.35, Fatalist, 15:46, 23/03/2011 [^] [ответить] [смотреть все]  
  • +/
    ну, при потери линка локальной сети и при последующим подключении впн, подключае... весь текст скрыт [показать]
     
     
  • 4.36, Author, 00:13, 24/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Попробуйте вместо tp.internet.beeline.ru IP адрес.
    У меня, например, он всегда статичен.


     
     
  • 5.37, Fatalist, 04:20, 24/03/2011 [^] [ответить] [смотреть все]  
  • +/
    ну как вариант
    сейчас интересно другое
    почему после этого
    xl2tpd[9185]: Host name lookup failed for tp.internet.beeline.ru.
    xl2tpd перестает пытаться подключиться, просто к машине нужен периодически доступ из вне, и очень обломно, когда интернет теряется
     
     
  • 6.39, Author, 15:34, 01/04/2011 [^] [ответить] [смотреть все]  
  • +/
    Попробуйте :
    http://homenet.beeline.ru/index.php?showtopic=192551

    copy:
    http://ilyx.ru/xl2tpd/xl2tpd_1.1.12_gethostbyname.patch.gz


     
     
  • 7.40, Fatalist, 09:31, 13/04/2011 [^] [ответить] [смотреть все]  
  • +/
    оо, спасибо, помогло
    дааа, программа та еще, 100500 патчей надо наложить, что работало :3
     
  • 1.41, Iskatel, 14:28, 23/05/2011 [ответить] [смотреть все]  
  • +/
    А где файл /etc/ppp/peers/beeline?
     
  • 1.42, Ubuntuman, 17:39, 12/06/2011 [ответить] [смотреть все]  
  • +/
    Хотелось бы все-таки узнать ответ на самый первый вопрос: почему бы не прописать обе опции (121, 249)?
     
     
  • 2.43, Вова, 11:34, 13/11/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    > Хотелось бы все-таки узнать ответ на самый первый вопрос: почему бы не
    > прописать обе опции (121, 249)?

    вобщем, конкретно в моём случае юзао мск для получения всей маршрутизации необходимо прописывать в /etc/dhcpcd.conf  
    option ms_classless_static_routes
    и в hook-скрипте добавлять сети из new_static_routes, как и у топикстартера. Все маршруты из new_ms_classless_static_routes добавит сам dhcpcd, придут ответы на обе опции.  В генте скрипты лежат не в /etc/, в /lib64/dhcpcd/.

     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor