(закрыто) правильный рестарт net.eth при рестарте net.ppp

Получаю дома инет от жёлтополосатого оператора. Работает нормально и боле-менее стабильно.
Получаем адрес по dhcp на net.eth1 поверх чего поднимаем net.ppp1 (pppoe). Всё работает и рестартует когда надо. Однако возникают проблемы при наличии проблем с электричеством в районе.
Свитч, который у меня в доме работает боле-менее стабильно (видимо ups новый), а вот вышестоящий иногда перезагружается.
Т.о. на нём теряется информация о моём интерфейсе net.eth1 и, насколько я понимаю, срабатывает что-то вроде anti-spoofing и он отказывается принимать от меня данные и поднимать pppoe т.к. этому маку этот ip не давали. Рестарт net.eth1 восстанавливает работу.
С точки зрения моей машины, net.eth1 рестартовать не надо, т.к. линк не падал.

Посоветуйте, как "правильно" детектировать подобную ситуацию и рестартовать не только net.ppp1, но и net.eth1.

PS: Собственно тесты ставить сложно, не взламывать же подстанцию (ломом) для организации пропажи электроэнергии в районе.

UPD: Наверное можно с эмитировать путём ручного выставления ip на net.eth1, но не пробовал.

Использую такой конфиг

config_eth0=null
config_ppp0="ppp"
link_ppp0="eth0"
plugins_ppp0="pppoe"
username_ppp0='******'
password_ppp0='******'
pppd_ppp0=(
       "defaultroute"
       "usepeerdns"
       "holdoff 3"
       "child-timeout 60"
       "lcp-echo-interval 15"
       "lcp-echo-failure 3"
       noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp
)
depend_ppp0() {
    need net.eth0
}

И? Не вижу в этом конфиге

И?
Не вижу в этом конфиге решения. Он позволяет рестартовать net.ppp1 при рестарте net.eth1. Мне нужно немного другое.

ЗЫЖ приблизительно такое уже написано.

Если в /etc/conf.d/net к

Если в /etc/conf.d/net к опциям pppd_ppp1 добавить persist для автоматической переустановки соединения и к этому добавить функцию preup()

pppd_ppp1=( "какие то опции" "persist" )

preup() {
if [ "${IFACE}" = "ppp1" ]; then
        перезапуск eth1
fi
return 0
}

то получится именно то что вам надо

Можно попробовать, но тут

Можно попробовать, но тут есть опасность ухода в рекурсию. Т.к. на рестарт net.eth1 будет инициирован рестарт net.ppp1.
Проверю.

Не должно быть, так как к

Не должно быть, так как к моменту перезапуска eth1 интерфейс ppp1 будет отключен. Но лучше вам все же проверить
Конечно можно еще попробовать postdown(). То есть перезапускать интерфейс eth1 после того как ppp1 отключится

В рекурсию не уходит, но

В рекурсию не уходит, но летят правила роутинга и iptable :-(
postdown не правильно, он же не будет срабатывать, если интерфейс не смог подняться. К тому же боюсь там будут аналогичные проблемы.

Так используйте postup() для

Так используйте postup() для перезапуска iptables

Угу, только не перезапуска, а

Угу, только не перезапуска, а формирования заново. И аналогичный скрипт для роутинга.
Может тогда проще свои init скрипты написать будет.

кроме как скормить cron

кроме как скормить cron аля

#!/bin/bash      
TEST_SERVER="www.ya.ru"
RESTART_DEV="eth1"

if ping -c 3 ${TEST_SERVER} &> /dev/null
        then    echo "Connect - Ok"
        else    echo "Connect - Down";
                /etc/init.d/net.${RESTART_DEV} restart;
fi

Ничего не приходит в голову.

net-dialup/diald

net-dialup/diald

Посмотрел его конфигурацию.

Посмотрел его конфигурацию. Не понял как он мне может помочь.
На сколько я понял, он будет управлять ppp, а мне eth рестортавать надо и то не всегда по хорошему.

Вы сами можете настроить что

Вы сами можете настроить что он будет контролировать и перезапускать!.. ;)

Не надо же понимать буквально, я все время думал, что сюда приходят люди, которые думают или хотя бы очень хотят этому научиться...

Идея этого тулса очень проста - контролировать связь с удаленной точкой (любой по вашему выбору) и, если связь пропадает - инициировать поднятие запасного канала.
И все.
Разумеется, это все можно реализовать через доморощенные скрипты, как и большинство (под)систем в *НИКС-мире... :)

Не осознал этого. Ещё раз

Не осознал этого. Ещё раз посмотрю его конфиги.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".