![]() |
![]() |
#1 |
Junior Member
Регистрация: 04.08.2014
Сообщений: 2
Вес репутации: 0 ![]() |
![]()
Необходима функция Connect on demand через pppoe.
При вводе параметра Inactivity timeout соединение разрываеться. Есть ли варианты решения? OpenWrt Barrier Breaker 14.07-rc1 (svn-r10457) 3.10.44. |
![]() |
![]() |
![]() |
#2 |
Junior Member
Регистрация: 05.08.2014
Адрес: Харьков
Сообщений: 4
Вес репутации: 0 ![]() |
![]()
http://wiki.openwrt.org/doc/uci/netw....over.ethernet
demand - Number of seconds to wait before closing the connection due to inactivity |
![]() |
![]() |
![]() |
#3 | |
Junior Member
Регистрация: 04.08.2014
Сообщений: 2
Вес репутации: 0 ![]() |
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#4 |
Junior Member
Регистрация: 05.08.2014
Адрес: Харьков
Сообщений: 4
Вес репутации: 0 ![]() |
![]() Последний раз редактировалось Deoptim; 06.08.2014 в 01:28. |
![]() |
![]() |
![]() |
#5 | ||||
Junior Member
Регистрация: 05.08.2014
Адрес: Харьков
Сообщений: 4
Вес репутации: 0 ![]() |
![]()
Здравствуйте.
Ну вот немного разобрался в проблеме. Имею pppoe на eth1: Цитата:
Цитата:
Также оставалась проблема с defaultroute - решение проблемы в скрипте /lib/netifd/proto/ppp.sh, где по умолчанию установлена опция nodefaultroute. Цитата:
ДО: Код:
... ppp_generic_setup() { local config="$1"; shift json_get_vars ipv6 demand keepalive username password pppd_options pppname [ "$ipv6" = 1 ] || ipv6="" if [ "${demand:-0}" -gt 0 ]; then demand="precompiled-active-filter /etc/ppp/filter demand idle $demand" else demand="persist" fi [ "${keepalive:-0}" -lt 1 ] && keepalive="" [ -n "$mtu" ] || json_get_var mtu mtu [ -n "$pppname" ] || pppname="${proto:-ppp}-$config" local interval="${keepalive##*[, ]}" [ "$interval" != "$keepalive" ] || interval=5 [ -n "$connect" ] || json_get_var connect connect [ -n "$disconnect" ] || json_get_var disconnect disconnect proto_run_command "$config" /usr/sbin/pppd \ nodetach ipparam "$config" \ ifname "$pppname" \ ${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} \ ${ipv6:++ipv6} \ nodefaultroute \ usepeerdns \ $demand maxfail 1 \ ${username:+user "$username" password "$password"} \ ${connect:+connect "$connect"} \ ${disconnect:+disconnect "$disconnect"} \ ip-up-script /lib/netifd/ppp-up \ ipv6-up-script /lib/netifd/ppp-up \ ip-down-script /lib/netifd/ppp-down \ ipv6-down-script /lib/netifd/ppp-down \ ${mtu:+mtu $mtu mru $mtu} \ "$@" $pppd_options } ... Код:
... ppp_generic_setup() { local config="$1"; shift json_get_vars ipv6 demand keepalive username password pppd_options pppname [ "$ipv6" = 1 ] || ipv6="" if [ "${demand:-0}" -gt 0 ]; then demand="precompiled-active-filter /etc/ppp/filter defaultroute demand idle $demand" else demand="nodefaultroute persist" fi [ "${keepalive:-0}" -lt 1 ] && keepalive="" [ -n "$mtu" ] || json_get_var mtu mtu [ -n "$pppname" ] || pppname="${proto:-ppp}-$config" local interval="${keepalive##*[, ]}" [ "$interval" != "$keepalive" ] || interval=5 [ -n "$connect" ] || json_get_var connect connect [ -n "$disconnect" ] || json_get_var disconnect disconnect proto_run_command "$config" /usr/sbin/pppd \ nodetach ipparam "$config" \ ifname "$pppname" \ ${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} \ ${ipv6:++ipv6} \ usepeerdns \ $demand maxfail 1 \ ${username:+user "$username" password "$password"} \ ${connect:+connect "$connect"} \ ${disconnect:+disconnect "$disconnect"} \ ip-up-script /lib/netifd/ppp-up \ ipv6-up-script /lib/netifd/ppp-up \ ip-down-script /lib/netifd/ppp-down \ ipv6-down-script /lib/netifd/ppp-down \ ${mtu:+mtu $mtu mru $mtu} \ "$@" $pppd_options } ... Решение: Цитата:
|
||||
![]() |
![]() |
![]() |
#6 |
Junior Member
Регистрация: 02.05.2017
Сообщений: 1
Вес репутации: 0 ![]() |
![]()
Добрый день.
У меня похожая проблема, с той разницей, что соединение в роутере Tp-Link MR3220 V1.2 по ppp через 3g модем. Простой и очевидный алгоритм. Хочу работать на ноутбуке в интернете(через роутер),ну и работаю. А потом отвлекся(или закончил) и не работаю 3-5 минут (интернет-соединение простаивает), соединение 3g модема с провайдером прерывается. Никто ведь не знает (в общем случае), насколько пауза затянется. Пауза закончилась, нажал на клавиши, соединение восстановилось. Уж думал, что не смогу решить эту "простую проблему": Интернет по запросу с ноутбука. Перекопал много форумов Интернета, но 100%-ного решения не нашел. И я бы, возможно, и не искал бы решения для OpenWrt, но на родной прошивке от TP-Link'а этот алгоритм реализован и работает! В OpenWrt даже поле специальное есть в Web-интерфейсе, но ... не работает. Пришлось углублять знания, т.к. в Linux'е я - чайник. Но сегодня неожиданно получилось. (Неожиданно для меня, а так, конечно, закономерно, я ведь работал и искал решение.) Видимо, накопились кое-какие знания, и количество перешло в качество. Помогла ваша тема, другие форумы, конечно, тоже, и документация по ppp: http://manpages.ylsoftware.com/ru/pppd.8.html. Решение: 1. /etc/config/network: Код:
config interface 'wan' option ipv6 '0' # этот параметр тоже где-то на форумах подсказали, # иначе этот интерфейс wan с параметром demand не работает, # т.к. ему нужны ip-адреса 6-й версии... option demand '180' # стандартный параметр (количество секунд простоя соединения # до разрыва связи), можно устанавливать и из web-интерфейса Luci, # но тогда первый параметр пропадает. # Выше этот параметр автор темы уже выделял. option _orig_ifname 'ppp0' option _orig_bridge 'false' option proto '3g' option device '/dev/ttyUSB0' option service 'umts_only' option apn '...............' # apn вашего провайдера option dialnumber '*99#' # Возможно, у вашего провайдера может быть другой номер. option delegate '0' Код:
#debug logfile /dev/null noipdefault # нужный параметр в моем случае(3g). Наш провайдер выдаст нам настоящий IP адрес # вместо представленного ниже локального (192.168.1.1). # Да, также важно подчеркнуть, что при каждом новом соединении # провайдер дает нам (в общем случае) разные IP-адреса, поэтому # мы не можем в настройках соединения прописать постоянный (static) # IP адрес. 192.168.1.1:10.64.64.64 # [временный] локальный и удаленный IP-адреса. # Нужны для начала работы интерфейса в режиме Demand Idle NNN, # а также для начала каждого нового цикла после разрыва соединения при простое. # 192.168.1.1 - это IP адрес роутера. У вас может быть чуть другой. noaccomp nopcomp nocrtscts lock # maxfail 0 ipcp-accept-local # При указании этого параметра pppd будет принимать локальный IP-адрес, # предложенный провайдером, даже если локальный IP-адрес был явно указан. #(Дословно из доки. Ссылка выше). lcp-echo-failure 5 lcp-echo-interval 1 Остальные параметры я не трогал, они стояли "по умолчанию". Код:
if [ "${demand:-0}" -gt 0 ]; then demand="precompiled-active-filter /etc/ppp/filter demand nopersist idle $demand defaultroute" else demand="nodefaultroute persist" fi Не буду здесь умничать, т.к. давал выше ссылку на документацию по pppd (хотя в документации нет конкретных советов для конкретных примеров, общие черты работы параметров и рекомендации по их совместному использованию, или, наоборот, несовместному). Но такая мощная документация - это сила, т.к. совет про параметр "nopersist" я почерпнул именно из этой документации (ни на одном из технических форумов не встречал ссылок на этот параметр), и решил проверить работу интерфейса с ним. С этим параметром (nopersist) в нужное время и в нужном месте все прекрасно закольцовывается и получаем желаемо-работающий алгоритм, экономию электричества и ресурсов оборудования, а также моральное удовлетворение от результата. Еще замечу, что скрипт ppp-down в моем примере не проявил своего влияния на поведение процесса ppp. P.S. 1. При ожидании в режиме "простоя", когда связи с провайдером нет, "просачиваются" какие-то непонятные (для меня) байты, и происходит опять соединение с провайдером, чего по логике быть не должно. За это у демона pppd отвечает параметр active-filter. Так что буду дальше думать, как решить эту проблему или, возможно, есть какие-то другие, "более правильные" фильтры. 2. Не ожидал, что форматирование этого сообщения вызовет у меня такие трудности. Нет никакой возможности делать отступы в тексте сообщения. Параметр[INDENT] - это неудобно, если мне надо сделать многоступенчатый текст, т.к. этот параметр генерирует также пропуск строк. Плюс, при наличии большого количества BB-кодов, исходный текст становится нечитабельным. [url] - выделить синим цветом - не получилось. Ну это, конечно, мое субъективное мнение, просто хотел отформатировать получше. |
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|