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 (ok), 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 (ok), 09:28, 02/03/2011 [^] [ответить]     [к модератору]  
  • +/
    экое незамутненное сознание, да да, весь мир желает вам зла - ... весь текст скрыт [показать]
     
     
  • 3.17, PingOfDeath (?), 18:55, 05/03/2011 [^] [ответить]     [к модератору]  
  • +/
    у вас есть знакомые в корбине нет а у меня помимо 2 лет работы в саппорте, нач... весь текст скрыт [показать]
     
     
  • 4.20, hizel (ok), 19:25, 05/03/2011 [^] [ответить]    [к модератору]  
  • +/
    > у вас есть знакомые в корбине? нет. а у меня помимо 2
    > лет работы в саппорте, начиная с обычной телефонной поддержки заканчивая отделом
    > подготовки персонала. и поверьте я знаю что говорю. лапша расходуется тоннами.

    ой, примите мои извинения, неправильно прочитал ваш пост
    что касается знакомых в корбине, то мне это не обязательно
    тех. поддержка она везде одинаковая ;-)

     
  • 3.18, PingOfDeath (?), 18:56, 05/03/2011 [^] [ответить]    [к модератору]  
  • +/
    >>а по-поводу саппорта так там знающие люди и не задерживаются, принимать звонки по 12 часов подряд, еще и врать людям постоянно. надолго никого не хватит
    > экое незамутненное сознание, да да, весь мир желает вам зла :-)

    помимо 2-х лет работы еще и половина контакт листа бывшие и нынешние сотрудники пчелокорбины. и многие вещи я узнаю из первых уст

     
  • 1.13, gyouja (ok), 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 (ok), 22:55, 05/03/2011 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    pptp настраивается проще и работает стабильно, хотя может кому пригодится
     
     
  • 2.31, Вова (?), 10:59, 08/03/2011 [^] [ответить]    [к модератору]  
  • +/
    .pptp теряет пакеты и грузит систему, в отличие от l2tp. Как раз на корбиновских толстых каналах это и начинает проявляться. Так что выбор протокола у топикстартера на 5.
     
  • 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 [^] [ответить]    [к модератору]  
  • +/
    Можно конечно и сеть, Я об этом думал.
    Но он не меняется. А если поменяется, то кто вам сказал что он
    будет в той же сети. Мы при этом теряем доступ к этой сети через туннель.
    А не всегда внешние IP адреса Corbina(Beeline) доступны по локальной сети.
    Так что мы теряем часть Interneta.
    При переподключении "ifdown/ifup" в случае перемены адреса "tp.internet.beeline.ru" .

     
     
  • 3.35, Fatalist (?), 15:46, 23/03/2011 [^] [ответить]    [к модератору]  
  • +/
    ну, при потери линка локальной сети и при последующим подключении впн, подключается уже к другому серверу
    а насчет потери интернета сервера в другой подсети, экспериментальным путем выяснено, что все сервера впн находятся в 85.21.0.0/24, так что не думаю что это большая проблема
    в общем, это ерунда, тут обнаружилось другое, то ли баг, то ли фича, xl2tpd, если не может резолвить адрес по tp.internet.beeline.ru, перестает переподключаться, то есть просто завершает работу, приходится делать что то типа echo "c corbina" > /var/run/xl2tpd/l2tp-control, чтоб он подключился, вот эту проблему бы решить, потому что при потери линка сети, что лично у меня/билайна бывает часто, он перестает пытаться подключиться и весь смысл переподключения теряется
    кстати, большое спасибо за способ получения локальных маршрутов по дхцп, долго я искал способ их получить
     
     
  • 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-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor