Beeline подключение L2TP
-
Почитал на форуме несколько тем, так же читал мануалы на сайтах по подключению L2TP для билайна.
Я так понимаю, что существует настройка под старую версию pfsense, сам юзаю ПФ несколько дней.
Имею провайдеров 2 ком и билайн.В 2ком подключается без проблем по DHCP, а вот с билайном проблема с его L2TP.Pfsense стоит на VirtualBox, использую в качестве фаервола.Может счастливцы гуру расскажете желательно со скриншотами, как подключать?
И я не понимаю, где находится OPT1, все облазил и не нашел?
Так же непонятно в разных категориях можно подключить L2TP, в какой именно надо настраивать? -
Есть же целая ВЕТКА по Russian\Dual - подключениям :( Будьте внимательнее, пож-та.
-
А я так и не победил периодические падения туннеля… Буду пробовать Vyatta.
-
Я так понимаю, что существует настройка под старую версию pfsense
Нет. Если б было, я бы юзал.
Буду пробовать Vyatta
Лучше глянуть сперва voyage linux или redwall firewall. Виатта уж очень требовательна к ресурсам.
-
Я так понимаю, что существует настройка под старую версию pfsense
Нет. Если б было, я бы юзал.
Буду пробовать Vyatta
Лучше глянуть сперва voyage linux или redwall firewall. Виатта уж очень требовательна к ресурсам.
Хмм, думаю Вы правы. Сегодня ознакомлюсь с этими дистрибутивами.
-
Я думаю, что подключение билайну вызовет проблемы на любом дистрибутиве ввиду организации самой сети.
У меня все работает более 3х лет со статическим IP - проблем нет
На последнем экране шлюз "лежит" т.к. в данный момент кабель к билайну вынут
-
Я думаю, что подключение билайну вызовет проблемы на любом дистрибутиве
Мод моноволла и router os ничего про ваши раздумья не знают, а просто работают.
ввиду организации самой сети
А что не так с организацией сети?
-
Мод моноволла и router os ничего про ваши раздумья не знают, а просто работают.
Router OS подключается к Билайну с такими же, если не большими костылями, что и pfSense. Погуглив, можно оценить масштаб проблемы. И это не вина pfSense и Mikrotik. Еще раз повторяю, Билайн рассчитывает, что у конечного юзера стоит винда или какая-то дешевая поделка с Dual Access/Link Duo, которая грубо нарушает RFC3442, принимая по DHCP и (121)Classless route и (003)Router, хотя последний в присутствии первого должен быть проигнорирован. Любой дистрибутив следующий RFC столкнется с проблемами при подключении к Билайн хотя бы поэтому, не говоря о DNS-балансировке VPN серверов и прочем говне.
-
А что не так с организацией сети?
У меня есть второй провайдер, где по DHCP, в зависимости от тарифа, выдается серый/белый IP. Вне зависимости от этого существует локальная сеть. Вся маршрутизация и правильный подсчет стоимости трафика внутри провайдера. Билайн скинул все на пользователя. Раньше, когда безлимитных тарифов было мало, народ частенько поподал на бабки при обращении к локальным ресурсам т.к. неправильно настраивал железо (прописывание маршрутов).
-
Так, подводя итог. Как же бороться с l2tp и билайном? Я вот рассматриваю вариант поднятие роутера на голой FreeBSD. Про статик айпи, проблема не в самом WAN, у меня проблема именно в том, что отваливается l2tp…
-
И могу добавить, что LinkSys на OPENVRT, как и на штатной прошивке страдает тем же самым… При покупке нового роутера выбор стоял между ALIX D2 и Mikrotik какой не помню именно... Не прогадал ли я выбрав Alix?
-
Хммм. Мне вот какая мысль в голову пришла! Билайн торгуют своим оборудованием, адаптированным под их подключение, с их модифицированной ОС. Что если использовать его как транзит перед своим роутером? По идее нагрузки на него будет минимум, рисуя маршруты для одного устройства (нашего роутера), который в свою очередь будет маршрутизировать его уже по сети?
-
Хммм. Мне вот какая мысль в голову пришла! Билайн торгуют своим оборудованием, адаптированным под их подключение, с их модифицированной ОС. Что если использовать его как транзит перед своим роутером? По идее нагрузки на него будет минимум, рисуя маршруты для одного устройства (нашего роутера), который в свою очередь будет маршрутизировать его уже по сети?
У меня так стоит Dlink DI-804 перед Cisco RV042, все работает, но dlink (как и все дешевые роутеры) глючная штука.
Так, подводя итог. Как же бороться с l2tp и билайном? Я вот рассматриваю вариант поднятие роутера на голой FreeBSD. Про статик айпи, проблема не в самом WAN, у меня проблема именно в том, что отваливается l2tp…
Это фича билайна. Для физ. лиц VPN-сессия рвется раз в 3-5 дней (рекорд 350 часов). Для юр. лиц - раз в сутки (примерно в 2:00 - 3:00 по Москве). Ну и никто не отменял обычных косяков в сети. Раз было рвался VPN строго раз в 5 минут, покрутив свои железки понял что не у меня, вынес мозг поддержке - оказалось у них тупил свич и его нужно было перегрузить!
-
Не прогадал ли я выбрав Alix?
А на аликсе у вас что будет?
P.S. Если поставите роутер ос на аликс то нет, не прогадали :D -
Пардон за оффтоп.
По альтернативным прошивкам для аппаратных роутеров :
1. TomatoUSB (Shibby's mod) отлично работает с Билайном еще с 105-ой версии (сейчас последняя - 110-ая):
http://tomato.groov.pl/?page_id=78
[RELEASE] 105
….......
- xl2tpd: update to 1.3.1 + patches. Fix L2TP connections. Tested on Beeline-Russia by user @DollaR
….......2. OpenWRT работает с Билайном после небольших "плясок" :
http://forum.ixbt.com/topic.cgi?id=14:56710:4024#4024
-
Не прогадал ли я выбрав Alix?
А на аликсе у вас что будет?
P.S. Если поставите роутер ос на аликс то нет, не прогадали :DСейчас стоит pfSense, планирую вкрячить просто FreeBSD.
-
Ради интереса проверил как ведет себя pfSense при одновременном получении default route и classless route по DHCP. На радость клиентов Билайн, получает и то и другое без проблем в отличие от Mikrotik. Т.е. тоже в угоду любителей Russian-Dual-Access нарушает RFC))
Надо только отметить, что это лишь часть проблемы. У самого дома подключен Mikrotik к Билайну, но ни одна инструкция из инета не помогла. Все индивидуально, не смог помочь человеку из другого города - все не так как у меня.
Посему, надо смотреть какие адреса/маршруты/DNS получает клиент по DHCP и что меняется при подключении L2TP. Нет единого ответа на вопрос: как? Будет инфа - будет помощь -
Возможно, это решение :
http://forum.pfsense.org/index.php/topic,24734.msg265032.html#msg265032
-
Сегодня попробую сделать.
@ncat:Итак, похоже на то что проблема получения l2tp сервер по имени и его автоматического старта решена.
pfSense 2.0.1 nanobsd
Опишу все по порядку.
Понадобится вот что:- mc (с ним удобнее) или текстовый редактор
- установленный cron (System -> Packages -> cron)
**Что получилось:
- L2TP сервер получаем по имени
- добавляем маршрут (l2tp сервер становится виден из внутренней сети [актуально для интернета билайн])
- L2TP стартует сам и даже обновляет IP сервера при падении**
[Решение]
Для всех модификаций советую сделать копии
1) модифицируем /etc/inc/interfaces.inc
1.1 - function interface_ppps_configure($interface)
1.1.1 - раскомменчиваем строку $gateways[$pid] = gethostbyname ($gateways[$pid]);
1.1.2 - а также добавляем код помеченный /* ADDED -start- / - / ADDED -end- */
пункт 1.1.2 позволяет при получении IP l2tp сервера писать маршрут l2tp server - wan gateway. Так как l2tp сервер находится во внешней сети, без маршрута соединение с ним не будет подниматься (это очень любит интернет от билайна).
маршруты у него передаются, по ходу, 249 опциейвот как должно выглядеть:
if(!is_ipaddr($localips[$pid])){ log_error("Could not get a Local IP address for PPTP/L2TP link on {$port} in interfaces_ppps_configure. Using 0.0.0.0 ip!"); $localips[$pid] = "0.0.0.0"; } /* XXX: This needs to go away soon! [It's commented out!] */ /* Configure the gateway (remote IP ) */ if (!$g['booting'] && !is_ipaddr($gateways[$pid]) && is_hostname($gateways[$pid])) { /* XXX: Fix later */ $gateways[$pid] = gethostbyname($gateways[$pid]); if(!is_ipaddr($gateways[$pid])) { log_error("Could not get a valid Gateway IP from {$port} via DNS in interfaces_ppps_configure."); return 0; } } if(!is_ipaddr($gateways[$pid])){ log_error("Could not get a PPTP/L2TP Remote IP address from {$dhcp_gateway} for {$gway} in interfaces_ppps_configure."); return 0; } /* ADDED -start- */ //$parent_gw = get_interface_gateway($port); $wanif = get_real_wan_interface(); $parent_gw = file_get_contents("/tmp/{$wanif}_router"); mwexec("route add -host {$gateways[$pid]} {$parent_gw}"); /* ADDED -end- */ pfSense_ngctl_attach(".", $port); break; case "ppp":
i: По поводу пунктов 1.2 и 1.3 не уверен, приносят ли они пользу, но на всякий случай. Эти изменения предложены Micky на 4-й странице http://forum.pfsense.org/index.php/topic,25465.15.html
к слову, и 1.1.2 предложено им, хотя в том виде не работало…1.2 - function interface_bring_down($interface = "wan", $destroy = false)
$int_list = get_configured_interface_list_by_realif(); if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) { foreach ($config['ppps']['ppp'] as $pppid => $ppp) { if ($ppp['type'] == 'pptp' || $ppp['type'] == 'l2tp') { $ports = explode(',',$ppp['ports']); foreach($ports as $pid => $port){ if ($port == $interface) { interface_bring_down($int_list[$ppp['if']]); } } } } }
местоположение:
function interface_bring_down($interface = "wan", $destroy = false) { global $config, $g; if (!isset($config['interfaces'][$interface])) return; $ifcfg = $config['interfaces'][$interface]; $realif = get_real_interface($interface); /* ADDED -start- */ $int_list = get_configured_interface_list_by_realif(); if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) { foreach ($config['ppps']['ppp'] as $pppid => $ppp) { if ($ppp['type'] == 'pptp' || $ppp['type'] == 'l2tp') { $ports = explode(',',$ppp['ports']); foreach($ports as $pid => $port){ if ($port == $interface) { interface_bring_down($int_list[$ppp['if']]); } } } } } /* ADDED -end- */ switch ($ifcfg['ipaddr']) { case "ppp": case "pppoe": case "pptp": case "l2tp": if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) {
1.3 - function interface_dhcp_configure($interface = "wan")
$int_list = get_configured_interface_list_by_realif(); if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) { foreach ($config['ppps']['ppp'] as $pppid => $ppp) { if ($ppp['type'] == 'pptp' || $ppp['type'] == 'l2tp') { $ports = explode(',',$ppp['ports']); foreach($ports as $pid => $port){ if ($port == $interface) { interface_ppps_configure($int_list[$ppp['if']]); } } } } }
местоположение (в конце):
fwrite($fd, $dhclientconf); fclose($fd); /* bring wan interface up before starting dhclient */ if($wanif) interfaces_bring_up($wanif); else log_error("Could not bring up {$wanif} interface in interface_dhcp_configure()"); /* fire up dhclient */ mwexec("/sbin/dhclient -c {$g['varetc_path']}/dhclient_{$interface}.conf {$wanif} > {$g['tmp_path']}/{$wanif}_output > {$g['tmp_path']}/{$wanif}_error_output"); /* ADDED -start- */ $int_list = get_configured_interface_list_by_realif(); if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) { foreach ($config['ppps']['ppp'] as $pppid => $ppp) { if ($ppp['type'] == 'pptp' || $ppp['type'] == 'l2tp') { $ports = explode(',',$ppp['ports']); foreach($ports as $pid => $port){ if ($port == $interface) { interface_ppps_configure($int_list[$ppp['if']]); } } } } } /* ADDED -end- */ return 0; }
i: теперь перед стартом мы получаем l2tp адрес сервера по имени (полученный через DNS IP записывается в конфигурацию mpd5.
Получили две проблемы:- сам интерфейс не стартует
- надо переконфигурировать l2tp соединение, если, например, l2tp сервер стал недоступным. Пример: оборвался WAN и L2TP, через некоторое время WAN поднимается, а L2TP продолжает стучаться на старый IP, хотя можно было бы получить и новый.
Эти проблемы и будем решать ниже
2) создаем два файла в /usr/scripts/ (папку scripts придется создать)
2.1 - файл start-keeper.sh#! /bin/sh ######################################################################################### # # # This file starts mpd-keeper unless it is not already started. # # Before using make sure you put your variables at /usr/sctipts/mpd-keeper # # # ######################################################################################### res=$(ps -A | grep -w '[m]pd-keeper') if [ ! "$res" ] then echo "Starting mpd-keeper" | logger /usr/bin/nice -n20 /usr/scripts/mpd-keeper fi
2.2 - файл mpd-keeper
##### VARIABLES ##### # wan is your WAN interface network port name. Can be viewed at pfsense welcome screen. wan='re0' # l2tp is your l2tp network port name (also can be viewed in Webconfigurator -> Status -> Interfaces -> l2tp interface header l2tp='l2tp0' # pid can be found in /var/run should looks same. This file creates when your l2tp is up. pid='l2tp_opt1.pid' # repeat time for this script (in seconds) repeat_time='5' # time to wait for bringing l2tp connection up (in seconds) l2tpup_time='60' ##### CODE ##### while [ 1 -eq 1 ] do if [ ! -f /tmp/${l2tp}up ] then if [ -f /var/run/$pid ] then # If l2tp connection is down (no IP) and mpd5 for this connection is running we kill mpd # to be able to change connection settings, specifically l2tp peer. # Because if (for example) l2tp peer is down we can get different l2tp peer IP using hostname. res2=$(cat /var/run/$pid) echo "l2tp is down - killing mpd5" | logger kill $res2 fi fi sleep 1 res1=$(ifconfig $wan | grep status | cut -d : -f 2) if [ ! -f /var/run/$pid ] then if [ "$res1" = " active" ] then # If wan connection is active and there is no l2tp over it, we start l2tp connection. echo "wan is active - starting l2tp connection" | logger /etc/rc.linkup $l2tp start # L2TP connection needs some time to come up. # Without sleep it seems that mpd5 will be killed before it has a chance # to connect to l2tp server (if repeat_time is less than ~30) sleep $l2tpup_time else #echo "wan is not active. l2tp cannot start" | logger fi fi sleep $repeat_time done
опишу переменные, которые надо установить в соответствии с Вашей системой
wan - название вашего интерфейса WAN, которые показывается при приветственном окне в pfsense
wan='re0'
l2tp - имя вашего интерфейса L2TP (показывается в Webconfigurator -> Status -> Interfaces -> l2tp interface header)
l2tp='l2tp0'
pid может быть найден /var/run выглядеть должен примерно также. Файл создается когда соединение l2tp поднято.
pid='l2tp_opt1.pid'
интервал повтора скрипта (в секундах)
repeat_time='5'
время в течении которого ожидаем поднятия интерфейса (в секундах) (за короткое время mpd может не успеть дозвониться и установить связь - он будет выключен этим же скриптом)
l2tpup_time='60'
2.3 - делаем созданные файлы исполняемыми командой chmod 755 filename (я вот не помнил наизусть как)
3) настраиваем cron (Services -> cron)
minute */1
hour *
mday *
month *
wday *
who root
command /bin/sh /usr/scripts/start-keeper.shВроде все :)
Спасибо: Steve (stephenw10), Micky, Evgeny.
P.S.: мой первый "общественный"
скриптнабор скриптов; в FreeBSD новичок, то же самое относится к сетевым технологиям. Если есть какие-либо ошибки или дополенения - с удовольствием исправлю\дополню. -
1.2, 1.3 вроде не нужны =)
заодно добавьте в interfaces.inc в функцию interface_dhcp_configure($interface = "wan")
вот эту строчкуrequest option-249, option option-121, rfc3442-classless-static-routes, ntp-servers, domain-name-servers, classless-routes, routers, subnet-mask;
в фрагмент
interface "{$wanif}" { request option-249, option option-121, rfc3442-classless-static-routes, ntp-servers, domain-name-servers, classless-routes, routers, subnet-mask; timeout 60; retry 1; select-timeout 0; initial-interval 1; {$dhclientconf_hostname} script "/sbin/dhclient-script"; }
чтобы получилось примерно следующее:
function interface_dhcp_configure($interface = "wan") { global $config, $g; $wancfg = $config['interfaces'][$interface]; if (empty($wancfg)) $wancfg = array(); /* generate dhclient_wan.conf */ $fd = fopen("{$g['varetc_path']}/dhclient_{$interface}.conf", "w"); if (!$fd) { printf("Error: cannot open dhclient_{$interface}.conf in interfaces_wan_dhcp_configure() for writing.\n"); return 1; } if ($wancfg['dhcphostname']) { $dhclientconf_hostname = "send dhcp-client-identifier \"{$wancfg['dhcphostname']}\";\n"; $dhclientconf_hostname .= "\tsend host-name \"{$wancfg['dhcphostname']}\";\n"; } else { $dhclientconf_hostname = ""; } $wanif = get_real_interface($interface); if (empty($wanif)) { log_error("Invalid interface \"{$interface}\" in interface_dhcp_configure()"); return 0; } $dhclientconf = ""; $dhclientconf .= <<<eod<br>interface "{$wanif}" { request option-249, option option-121, rfc3442-classless-static-routes, ntp-servers, domain-name-servers, classless-routes, routers, subnet-mask; timeout 60; retry 1; select-timeout 0; initial-interval 1; {$dhclientconf_hostname} script "/sbin/dhclient-script"; } EOD;</eod<br>
код кривоват, на некоторых опциях ошибки, но у вас появится возможность получить немножко :D маршрутов от Билайна по dhcp