LINUX.ORG.RU
ФорумAdmin

Slackware, pppd. Соединения наглухо виснут.


0

1

Slackware 13, ядро ванильное.
ppp 2.4.4, rp-pppoe-3.10.
Линуксовый комп работает в роли роутера, раздает локалку и инет двум домашним компам через айпитаблес-маскардинг.
Проблема следующая: после нескольких недель непрерывной работы несколько раз замечал, что соединения повисают. Проблема возникала пока только пару раз, но сегодня доставила немало нервов пользователям, пока меня не было.
Симптомы: ни с сервака, ни с клиентов не пингуется ничего. Ни по айпишнику, ни по имени. ifconfig показывает, что значения принято/передано байт на pppX не меняются, т.е по pppX ничего не отправляется и ничего не принимается, соединения подняты.
Соединений два, одно для инета, второе для локалки местного провайдера.
Поднимаются след. образом:
#!/bin/sh
/sbin/ip link set eth1 up
/usr/sbin/pppd pty \
«/usr/sbin/pppoe -p /var/run/pppoelocal.pid -I eth1 -T 80 -U -m 1412» \
file /etc/ppp/optionlocal.pppoe


#!/bin/sh
sleep 5
# зачем тут нужен sleep уже не помню, но вроде при одновременном поднятии двух интерфейсов при старте системы иногда происходил конфликт.
/sbin/ip link set eth1 up
/usr/sbin/pppd pty \
«/usr/sbin/pppoe -p /var/run/pppoe.pid -I eth1 -T 80 -U -m 1412» \
file /etc/ppp/option.pppoe

optionlocal.pppoe:
noipdefault
#defaultroute
#replacedefaultroute
hide-password
#lcp-echo-interval 30
#lcp-echo-failure 4
noauth
persist
noipv6
mtu 1492
noproxyarp
maxfail 0
#holdoff 20
plugin rp-pppoe.so eth1
user «user/local»
#usepeerdns
unit 1

option.pppoe:
noipdefault
defaultroute
#replacedefaultroute
hide-password
#lcp-echo-interval 30
#lcp-echo-failure 4
noauth
persist
mtu 1492
noproxyarp
maxfail 0
plugin rp-pppoe.so eth1
noipv6
#holdoff 20
user «user»
usepeerdns
unit 0
#nodetach

Сегодня чисто случайно удалось повторить ситуацию.
При работающих сетевых интерфейсах pppX (которые идут через eth1) выдернул кабель из сетевухи eth1. К моему удивлению, через 10 минут не упали ни ppp, ни eth. Все интерфейсы остались висеть, но счетчики пакетов замерли (что и понятно).
Вставил назад кабель-пинги не идут, интерфейсы висят, интернета нет.
killall pppd, стартуем опять pppd и все работает.
Не понимаю почему при вытащенном кабеле интерфейсы (причем все) остаются в состоянии up. Мне казалось, должны опускаться.
Задача: заставить падать интерфейс при выдергивании кабеля, а позже разрулить запуск/убивание pppd через if-up if-down.

P.S:
Начало http://www.linux.org.ru/forum/admin/5329467
Новая тема т.к «многа букаф», и все на неверном пути.


Сначала они запрещают lcp-echo-failure и lcp-echo-interval, и потом задают вопросы... Неужто man не читают???

Nastishka ★★★★★
()
Ответ на: комментарий от Nastishka

Спасибо, действительно. Все проще чем казалось.
Но все-таки, предположим, что я намеренно вынул кабель из сервака.
Через например 30 секунд pppd «замечает» что соединения висят и начинает их переподнимать. В это время сетевой кабель вытащен. Т.к число «переподъемов» не ограничено, то только напрасно забиваются логи.
Поэтому все таки хотелось бы понять, как можно опускать интерфейс при отсутствии кабеля, а также есть ли в слаке if-up и if-down скрипты (как в дебиане).

IR0N
() автор топика
Ответ на: комментарий от IR0N

Иначе говоря, нужно какое-то событие, к которому можно привязаться для запуска/остановки pppd.

IR0N
() автор топика
Ответ на: комментарий от IR0N

>Но все-таки, предположим, что я намеренно вынул кабель из сервака.
Через например 30 секунд pppd «замечает» что соединения висят и начинает их переподнимать. В это время сетевой кабель вытащен. Т.к число «переподъемов» не ограничено, то только напрасно забиваются логи.

для этого и служат lcp-echo

как можно опускать интерфейс при отсутствии кабеля


сам отвалится )

а также есть ли в слаке if-up и if-down скрипты


да, можете создать соответственно скрипты на bash

/etc/ppp/ip-up
/etc/ppp/ip-down

только не забудьте задать там PATH в скрипте нормальный )

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

сам отвалится )

Это когда же интересно? Я ради интереса сча дёрну кабель, но 10 минут точно держится и гадит в логи.
Мне нужно для eth0. Точнее для eth1.
про /etc/ppp/ip-up вашу тему почитал уже.

IR0N
() автор топика
Ответ на: комментарий от IR0N

>Это когда же интересно?

при превышении lcp-echo-failure * lcp-echo-interval

lcp-echo-interval 30
lcp-echo-failure 4

30 * 4 = 120 cек.

для eth* у слаки скриптов нет, к сожалению. /etc/ppp/ip-[up|down] запускает pppd



Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Не, я наверно не так выразился.
Хочу при выдергивании кабеля из сетевухи делать killall pppd, а при вставке кабеля обратно-запускать скрипты.
В дебиане при выдергивании кабеля eth падал.
Также у него были скрипты if-up для eth.
Думал и здесь есть подобное.

IR0N
() автор топика
Ответ на: комментарий от Sylvia

для eth* у слаки скриптов нет, к сожалению. /etc/ppp/ip-[up|down] запускает pppd

Йопт, это же слака, там они пишутся руками в инит сриптах

wlan ★★
()
Ответ на: комментарий от Komintern

и когда оно научилось отслеживать состояние «link down» ?

а «link up» ? уже после того как скрипты были однократно выполнены при загрузке ?

Sylvia ★★★★★
()
Ответ на: комментарий от Komintern

там есть скрипты

/etc/network/if-[up|down].d/

так что возможно что и отслеживает, в том месте где у меня остался дебиан я уже проверить не могу )

В любом случае ТС-у нужно отслеживать состояние подключения кабеля, раз ему его вынимают ) так что ifplugd ему ставить придется и скрипты писать соответственно, /etc/rc.d/rc.inet1 и 2 его в этом плане не устроят.


Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Что-то у меня дебиан с пппое-севиром, но при вытаскивании кабеля там нихрена ничего не происходит.

ping чото там в крон засунуть? главное чтобы не побанили =]

wlan ★★
()
Ответ на: комментарий от wlan

отнюдь нет,
ifplugd может кильнуть pppd не дожидаясь таймаута,
ну и что самое главное, насколько я поняла, кабель у ТС вынимается надолго, имеет смысл останавливать pppoe-start/pppoe-connect через pppoe-stoop и перезапускать когда кабель заткнут, в принципе можно и не останавливать, а поставить лимитированное число попыток соединения,
если же лимит не задан (0) , то будет уйма мусора в логах от pppd (ТС это не устраивает)

Sylvia ★★★★★
()
Ответ на: комментарий от wlan

Вы себе противоречите, то говорите, что нужно ifplugd, то отваливается по таймауту LCP

Прочитай тему внимательно: по таймауту LCP отваливаются ppp-интерфейсы, а для «отваливания» eth-интерфейсов и полного выключения pppd по link down нужен ifplugd.

Deleted
()

rp-pppoe это набор скриптов для демона ppp ? Или что-то самостоятельное?

//Сам использую mpd5 для таких целей.

n1
()
Ответ на: комментарий от n1

набор скриптов + утилиты

pppoe-start
pppoe-connect
pppoe-stop

написаны на баше,

также инструмент для отладки сервисных сообщений pppoe


и утилиты для pppd в 2 вариантах
либо плагин (не ест процессор, но может работать несколько нестабильно) rp-pppoe.so (LINUX_PLUGIN=)
либо программа-насос данных pppoe (создает pty с которым будет общаться pppd, работает стабильно, но немного грузит процессор)

Sylvia ★★★★★
()
Ответ на: комментарий от n1

если учесть что LINUX_PLUGIN rp-pppoe.so также входит в состав pppd - принципиально нужно, но придется самостоятельно заниматься велосипедостроением и писать скрипты фактически аналогичного функционала. Зачем?

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

принципиально нужно -> принципиально можно

Sylvia ★★★★★
()
Ответ на: комментарий от Deleted

А блин, я чото пропустил момент с eth. Надо спать больше да

wlan ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.