Руководство по настройке подключения к провайдеру 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 и оригинал руководства можно скачать [[http://ilyx.ru/xl2tpd/ здесь]].
URL: http://ilyx.ru/xl2tpd/
Обсуждается: http://www.opennet.me/tips/info/2539.shtml
почему бы не прописать обе опции (121, 249)?
Спасибо автору. И патчик в debian отправил.
Лол. Спасибо, я свой роутер настроил... И все маршруты прилетели.
А саппорт у них ппц просто, да. "Ваш роутер не будет работать у нас", да.
Они купили кота в мешке, билайн там не причем
Билайн после покупки тоже намудрил прикручивая собственный билинг, а по-поводу саппорта так там знающие люди и не задерживаются, принимать звонки по 12 часов подряд, еще и врать людям постоянно. надолго никого не хватит
> Билайн после покупки тоже намудрил прикручивая собственный билинг, а по-поводу саппорта
> так там знающие люди и не задерживаются, принимать звонки по 12
> часов подряд, еще и врать людям постоянно. надолго никого не хватитВся ШПД-сеть билайна и купленных последние три года дочек построена на биллинге Корбины, это единая официальная платформа.
ну так INAC да остался от корбины но вот при реализации взаимодействия со своими платформами накосячили.
>> Билайн после покупки тоже намудрил прикручивая собственный билинг, а по-поводу саппорта
>> так там знающие люди и не задерживаются, принимать звонки по 12
>> часов подряд, еще и врать людям постоянно. надолго никого не хватит
> Вся ШПД-сеть билайна и купленных последние три года дочек построена на биллинге
> Корбины, это единая официальная платформа.и да кстати, как вы думаете зачем были сделаны логины вида 089 ххх хх хх (где х это любая цифра) ничего не напоминает?
вот такой вот плановый переход к объединенной платформе билинга
>>> Билайн после покупки тоже намудрил прикручивая собственный билинг, а по-поводу саппорта
>>> так там знающие люди и не задерживаются, принимать звонки по 12
>>> часов подряд, еще и врать людям постоянно. надолго никого не хватит
>> Вся ШПД-сеть билайна и купленных последние три года дочек построена на биллинге
>> Корбины, это единая официальная платформа.
> и да кстати, как вы думаете зачем были сделаны логины вида 089
> ххх хх хх (где х это любая цифра) ничего не напоминает?
> вот такой вот плановый переход к объединенной платформе билингапо переходу под крыло билайна исчезла статистика, и изменилось поведение биллинга (тарификация стала ежемесячной).
Имхо либо биллинг был крупно переписан, это маловероятно, либо перешли на другой биллинг, и так оно, скорее всего, и было. Я пользователь корбины/билайн со стажем.
"С 2008 г., когда компании начали объединение, они эксплуатировали около 30 различных биллинг-систем, в декабре 2009 г. мы начали работу по переводу наших подразделений на 5 биллинг-систем. В частности, наши ШПД-абоненты будут обслуживаться с помощью биллинга INAC. К лету 2010 г. работа по переходу на новые биллинг-системы и их синхронизация будет завершена", - сообщил Андрей Ковтонюк.
> по переходу под крыло билайна исчезла статистика, и изменилось поведение биллинга (тарификация
> стала ежемесячной).
> Имхо либо биллинг был крупно переписан, это маловероятно, либо перешли на другой
> биллинг, и так оно, скорее всего, и было. Я пользователь корбины/билайн
> со стажем.здорово, а подумать головой и посчитать сколько получит оператор перейдя на ежемесячное списание. особенно сделав месяц не по факту с 1-го по 1-е. а 30 дней. в корбине за сумму (стоимость тарифа*12) вы получали интернет в течении года. в билайне же за эту же сумму вы оплачиваете только 360 дней.
Вы не на тот коммент "ответили"? Или о чём вообще?
на тот. просто вы считаете что переход с посуточной оплаты на помесячную был вызван переходом на новый билинг. я же говорю что переход на такую систему может быть вызван финансовыми делами в ситуации с кор(би)лайном, в виде дополнительной платы в 1/6 или 1/5(в високосном году) от платы за месяц. в масштабах такой компании как билайн это огромные суммы
Да если бы изменился только расчётный период. То, что интерфейс изменился - тоже, надо полагать, из корысти было сделано? Если бы биллинг не менялся - то был бы просто переход с одного типа тарификации - на другой. Вся статистика и веб - не была бы тронута. А тут, по вашему, при переходе под крыло билайна статистику убрали, веб переписали, тарификацию изменили - но в пределах того же биллинга. А если голову включить (с)?
> крыло билайна статистику убрали, веб переписали, тарификацию изменили - но в
> пределах того же биллинга. А если голову включить (с)?В билайне во всех купленных дочках с прошлого года осуществлена миграция ШПД-клиентов на INAC и единую систему тарфиов. INAC - это биллинг, разработанный и поддерживаемый в Корбине. Всё остальное ваши домыслы, на основе изменившегося оформления web-интерфейса.
>> крыло билайна статистику убрали, веб переписали, тарификацию изменили - но в
>> пределах того же биллинга. А если голову включить (с)?
> В билайне во всех купленных дочках с прошлого года осуществлена миграция ШПД-клиентов
> на INAC и единую систему тарфиов. INAC - это биллинг, разработанный
> и поддерживаемый в Корбине. Всё остальное ваши домыслы, на основе изменившегося
> оформления web-интерфейса.Домыслов тут ноль, статистика исчезла? исчезла. Тарификация ухудшилась? Ухудшилась. Личный кабинет переписан? Переписан.
Я просто не мог предположить, что это совпадение. Выше я предполагал, что был задействован новый биллинг с меньшим удобством для клиента, это более логичное предположение, чем "ой это просто совпало".
возможные причины изменения тарификации я вам уже написал, веб-изменили чтобы соответствовал единому корпоративному стилю. исчезла статистика, так извините но провайдер сам решает что показывать клиенту а что нет, и переписывать билинг для этого не надо. достаточно просто убрать кусок кода из личного кабинета запрашивающий эту информацию
Это случилось - в один прекрасный день пару лет назад. То есть вечером - всё акей, на следующий день - новый кабинет, и даже, если мне не изменяет память, было сообщение об переходе на другой биллинг, хотя может и ошибаюсь. Надо бы новости почитать.
А то, что два процента билайн стал зажимать - я считаю, ерунда. Ведь одновременно с переходом был очередной "спуск" цен на деление, это в корбине было практически регулярно. Другое дело, что если у меня есть на счету 800 рублей, то меня отключают, так как плата за следующие 30 дней - 850, вот это реальный минус новой системы.
Новой системы тарификации в старом, по вашим словам, биллинге. Раньше, чтобы у меня был интернет "до понедельника", мне надо было закинуть в автомат полтинник, теперь - всю стоимость месяца. Я хочу оплатить без процентов, через яндекс-деньги и прикреплённую карточку, но для этого мне надо будет заплатить около сотни рублей держателям терминалов, так как для того, чтобы попасть в яндек-мани, мне опять таки нужен интернет, и получается - его надо оплачивать за месяц.
Резюме - у корбины было всё в порядке с этим биллингом, у билайна, в один момент, испортилось всё сразу.
а статистика была, есть и будет. просто раньше давали посмотреть на данные по каждой сессии, то теперь только суммарный за месяц. пару раз запрашивал через знакомых полную статистику. вполне возможно что она доступна для обычных людей в офисах за отдельную плату.
> а статистика была, есть и будет. просто раньше давали посмотреть на данные
> по каждой сессии, то теперь только суммарный за месяц. пару раз
> запрашивал через знакомых полную статистику. вполне возможно что она доступна для
> обычных людей в офисах за отдельную плату.п я и имею в виду помесячную статистику за прошлые месяцы, она тупо раз - и пропала по изменению биллинга.
>а по-поводу саппорта так там знающие люди и не задерживаются, принимать звонки по 12 часов подряд, еще и врать людям постоянно. надолго никого не хватитэкое незамутненное сознание, да да, весь мир желает вам зла :-)
у вас есть знакомые в корбине? нет. а у меня помимо 2 лет работы в саппорте, начиная с обычной телефонной поддержки заканчивая отделом подготовки персонала. и поверьте я знаю что говорю. лапша расходуется тоннами.
> у вас есть знакомые в корбине? нет. а у меня помимо 2
> лет работы в саппорте, начиная с обычной телефонной поддержки заканчивая отделом
> подготовки персонала. и поверьте я знаю что говорю. лапша расходуется тоннами.ой, примите мои извинения, неправильно прочитал ваш пост
что касается знакомых в корбине, то мне это не обязательно
тех. поддержка она везде одинаковая ;-)
>>а по-поводу саппорта так там знающие люди и не задерживаются, принимать звонки по 12 часов подряд, еще и врать людям постоянно. надолго никого не хватит
> экое незамутненное сознание, да да, весь мир желает вам зла :-)помимо 2-х лет работы еще и половина контакт листа бывшие и нынешние сотрудники пчелокорбины. и многие вещи я узнаю из первых уст
> В зтом скрипте я делаю допущение, что через опцию
> "static_routes" выдаются маршруты только к хостам,
> не к сетям (для Beeline это верно).Используйте /sbin/ip route add вместо /sbin/route add -host, тогда не нужно будет делать подобных допущений.
По этому вики я елементарно настроил:
http://ru.posix.wikia.com/wiki/PPTP
У Вас почему-то до извращенности тяжело.
pptp настраивается проще и работает стабильно, хотя может кому пригодится
.pptp теряет пакеты и грузит систему, в отличие от l2tp. Как раз на корбиновских толстых каналах это и начинает проявляться. Так что выбор протокола у топикстартера на 5.
В вики как раз есть настройка vpn и l2tp + маршрутизация. Я конечно за l2tp.
>>$BINROUTE add -host $IF_L2TPSERV gw $IF_L2TPGWздесь я бы добавлял подсеть, а не хост, потому что при переподключении адрес tp.internet.beeline.ru может изменится, а маршрута до него не будет
Можно конечно и сеть, Я об этом думал.
Но он не меняется. А если поменяется, то кто вам сказал что он
будет в той же сети. Мы при этом теряем доступ к этой сети через туннель.
А не всегда внешние IP адреса Corbina(Beeline) доступны по локальной сети.
Так что мы теряем часть Interneta.
При переподключении "ifdown/ifup" в случае перемены адреса "tp.internet.beeline.ru" .
ну, при потери линка локальной сети и при последующим подключении впн, подключается уже к другому серверу
а насчет потери интернета сервера в другой подсети, экспериментальным путем выяснено, что все сервера впн находятся в 85.21.0.0/24, так что не думаю что это большая проблема
в общем, это ерунда, тут обнаружилось другое, то ли баг, то ли фича, xl2tpd, если не может резолвить адрес по tp.internet.beeline.ru, перестает переподключаться, то есть просто завершает работу, приходится делать что то типа echo "c corbina" > /var/run/xl2tpd/l2tp-control, чтоб он подключился, вот эту проблему бы решить, потому что при потери линка сети, что лично у меня/билайна бывает часто, он перестает пытаться подключиться и весь смысл переподключения теряется
кстати, большое спасибо за способ получения локальных маршрутов по дхцп, долго я искал способ их получить
Попробуйте вместо tp.internet.beeline.ru IP адрес.
У меня, например, он всегда статичен.
ну как вариант
сейчас интересно другое
почему после этого
xl2tpd[9185]: Host name lookup failed for tp.internet.beeline.ru.
xl2tpd перестает пытаться подключиться, просто к машине нужен периодически доступ из вне, и очень обломно, когда интернет теряется
Попробуйте :
http://homenet.beeline.ru/index.php?showtopic=192551copy:
http://ilyx.ru/xl2tpd/xl2tpd_1.1.12_gethostbyname.patch.gz
оо, спасибо, помогло
дааа, программа та еще, 100500 патчей надо наложить, что работало :3
А где файл /etc/ppp/peers/beeline?
Хотелось бы все-таки узнать ответ на самый первый вопрос: почему бы не прописать обе опции (121, 249)?
> Хотелось бы все-таки узнать ответ на самый первый вопрос: почему бы не
> прописать обе опции (121, 249)?вобщем, конкретно в моём случае юзао мск для получения всей маршрутизации необходимо прописывать в /etc/dhcpcd.conf
option ms_classless_static_routes
и в hook-скрипте добавлять сети из new_static_routes, как и у топикстартера. Все маршруты из new_ms_classless_static_routes добавит сам dhcpcd, придут ответы на обе опции. В генте скрипты лежат не в /etc/, в /lib64/dhcpcd/.