Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.08.2014, 23:09   #1
eatmycat
Junior Member
 
Регистрация: 04.08.2014
Сообщений: 2
Вес репутации: 0
eatmycat is an unknown quantity at this point
Question Openwrt pppoe подключение по запросу

Необходима функция Connect on demand через pppoe.
При вводе параметра Inactivity timeout соединение разрываеться.
Есть ли варианты решения?
OpenWrt Barrier Breaker 14.07-rc1 (svn-r10457) 3.10.44.
eatmycat вне форума   Ответить с цитированием
Старый 05.08.2014, 02:34   #2
Deoptim
Junior Member
 
Регистрация: 05.08.2014
Адрес: Харьков
Сообщений: 4
Вес репутации: 0
Deoptim is an unknown quantity at this point
По умолчанию Re: Openwrt pppoe подключение по запросу

http://wiki.openwrt.org/doc/uci/netw....over.ethernet
demand - Number of seconds to wait before closing the connection due to inactivity
Deoptim вне форума   Ответить с цитированием
Старый 05.08.2014, 08:15   #3
eatmycat
Junior Member
 
Регистрация: 04.08.2014
Сообщений: 2
Вес репутации: 0
eatmycat is an unknown quantity at this point
По умолчанию Re: Openwrt pppoe подключение по запросу

Цитата:
Сообщение от Deoptim Посмотреть сообщение
http://wiki.openwrt.org/doc/uci/netw....over.ethernet
demand - Number of seconds to wait before closing the connection due to inactivity
Right. But when you enter this value pppoe stops at all.
eatmycat вне форума   Ответить с цитированием
Старый 05.08.2014, 21:08   #4
Deoptim
Junior Member
 
Регистрация: 05.08.2014
Адрес: Харьков
Сообщений: 4
Вес репутации: 0
Deoptim is an unknown quantity at this point
По умолчанию Re: Openwrt pppoe подключение по запросу

https://dev.openwrt.org/ticket/12277

Добавлено:
Есть некоторые продвижения по этой теме...

Последний раз редактировалось Deoptim; 06.08.2014 в 01:28.
Deoptim вне форума   Ответить с цитированием
Старый 13.08.2014, 21:25   #5
Deoptim
Junior Member
 
Регистрация: 05.08.2014
Адрес: Харьков
Сообщений: 4
Вес репутации: 0
Deoptim is an unknown quantity at this point
По умолчанию Re: Openwrt pppoe подключение по запросу

Здравствуйте.
Ну вот немного разобрался в проблеме.
Имею pppoe на eth1:
Цитата:
Сообщение от /etc/config/network
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'

config interface 'lan'
option ifname 'eth0'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
list dns '8.8.8.8'
list dns '8.8.4.4'


config switch
option reset '1'
option enable_vlan '1'
option name 'switch0'

config switch_vlan
option vlan '1'
option ports '0 1 2 3 4'
option device 'switch0'

config interface 'wan'
option ifname 'eth1'
option proto 'dhcp'

config interface 'wan2'
option demand '180'
option ifname 'eth1'
option proto 'pppoe'
option username 'xxxxx'
option password 'xxxxx'
option keepalive '3'
Проблема в следующем, после перезагрузки роутера, не поднимается "PPPOE Discovery":
Цитата:
...
Sun Aug 10 150037 2014 daemon.notice netifd Interface 'wan2' is now down
Sun Aug 10 150037 2014 daemon.notice netifd Interface 'wan2' is setting up now
Sun Aug 10 150037 2014 daemon.info pppd[2927] Plugin rp-pppoe.so loaded.
Sun Aug 10 150037 2014 daemon.info pppd[2927] RP-PPPoE plugin version 3.8p compiled against pppd 2.4.6
Sun Aug 10 150037 2014 daemon.notice pppd[2927] pppd 2.4.6 started by root, uid 0
Sun Aug 10 150037 2014 daemon.info pppd[2927] Using interface pppoe-wan2
Sun Aug 10 150037 2014 daemon.notice pppd[2927] local IP address 10.64.64.64
Sun Aug 10 150037 2014 daemon.notice pppd[2927] remote IP address 10.112.112.112
...
Необходимо добавить dns сервер(а) для lan интерфейса, как сделано выше.
Также оставалась проблема с defaultroute - решение проблемы в скрипте /lib/netifd/proto/ppp.sh, где по умолчанию установлена опция nodefaultroute.
Цитата:
Примечание:
Добавление в /etc/config/network для wan2 интерфейса параметра option defaultroute '1' - ничего не меняет,
ибо в скрипте ppp.sh нет инструкций чтения значения данного параметра, как было это давным давно.
Необходимо немного откорректировать скрипт:
ДО:
Код:
...
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
}
...
Другая проблема остается, слетает defaultroute когда выполняется скрипт /lib/netifd/ppp-down.

Решение:
Цитата:
Сообщение от /lib/netifd/ppp-down
#!/bin/sh
PPP_IPPARAM="$6"

. /lib/netifd/netifd-proto.sh
proto_init_update "$IFNAME" 0
proto_send_update "$PPP_IPPARAM"
route add default gw "$IPREMOTE"

[ -d /etc/ppp/ip-down.d ] && {
for SCRIPT in /etc/ppp/ip-down.d/*
do
[ -x "$SCRIPT" ] && "$SCRIPT" "$@"
done
}
Deoptim вне форума   Ответить с цитированием
Старый 29.05.2017, 23:32   #6
levksm
Junior Member
 
Регистрация: 02.05.2017
Сообщений: 1
Вес репутации: 0
levksm is an unknown quantity at this point
По умолчанию Openwrt pppoe подключение по запросу

Добрый день.
У меня похожая проблема, с той разницей,
что соединение в роутере 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'
2. /etc/ppp/options
Код:
#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
	Остальные параметры я не трогал, они стояли "по умолчанию".
3. /lib/netifid/proto/ppp.sh. Продвинутая версия кусочка кода из кода "ПОСЛЕ"
Код:
if [ "${demand:-0}" -gt 0 ]; then
  demand="precompiled-active-filter /etc/ppp/filter demand nopersist idle $demand defaultroute"
else
  demand="nodefaultroute persist"
fi
И тогда все работает, как надо! Вся загвоздка (для меня и моего примера) была в этом параметре nopersist.
Не буду здесь умничать, т.к. давал выше ссылку на документацию по pppd (хотя в документации нет конкретных
советов для конкретных примеров, общие черты работы параметров и рекомендации по их совместному
использованию, или, наоборот, несовместному). Но такая мощная документация - это сила,
т.к. совет про параметр "nopersist" я почерпнул именно из этой документации
(ни на одном из технических форумов не встречал ссылок на этот параметр), и решил проверить работу
интерфейса с ним.
С этим параметром (nopersist) в нужное время и в нужном месте все прекрасно закольцовывается и
получаем желаемо-работающий алгоритм, экономию электричества и ресурсов оборудования, а также моральное
удовлетворение от результата.
Еще замечу, что скрипт ppp-down в моем примере не проявил своего влияния на поведение процесса ppp.

P.S.
1. При ожидании в режиме "простоя", когда связи с провайдером нет, "просачиваются" какие-то непонятные (для меня)
байты, и происходит опять соединение с провайдером, чего по логике быть не должно.
За это у демона pppd отвечает параметр active-filter. Так что буду дальше думать, как решить эту проблему или,
возможно, есть какие-то другие, "более правильные" фильтры.
2. Не ожидал, что форматирование этого сообщения вызовет у меня такие трудности.
Нет никакой возможности делать отступы в тексте сообщения. Параметр[INDENT] - это неудобно,
если мне надо сделать многоступенчатый текст, т.к. этот параметр генерирует также пропуск строк.
Плюс, при наличии большого количества BB-кодов, исходный текст становится нечитабельным.
[url] - выделить синим цветом - не получилось.
Ну это, конечно, мое субъективное мнение, просто хотел отформатировать получше.
levksm вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 13:37. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика