запустил без параметров, на момент запуска были интерфейсы lo0, eth0, ppp0 и wlan0, в конфиге все закомментировано окромя двух строчек request и require, а он мне взял и всю сеть обвалил. теперь достучаться до компьютера не могу, ни пингами, ни по ssh.
потом, как доберусь до компьютера физически - проблему решу, но если честно я не ожидал, что dhclient с дефолтным конфингом и отсутствием каких-либо настроек вообще способен сломать всю сеть за просто так. если у кого-нибудь есть догадки, в чем может быть проблема - расскажите...
ощщем, чтобы избежать впредь подобных случаев, когда вы случайно iptables -A INPUT -j DROP или еще чего, то при отсутствии сети - система должна ее либо попытаться восстановить, либо радикально ребутнуться.
в связи сетим предлагаю общим разумом наваять скриптик, какие действия рекомендуется совершать.
у меня получилось так:
#!/bin/bash
UPLINK_IS_DOWN="0"
UPLINK_eth0="FALSE"
UPLINK_ppp0="FALSE"
UPLINK_HTTP="FALSE"
UPLINK_ICMP="FALSE"
inet() {
if wget -O - google.com >/dev/null 2>&1; then
UPLINK_HTTP="TRUE"
return 1
fi
if ping -w 10 8.8.8.8 >/dev/null 2>&1; then
UPLINK_ICMP="TRUE"
return 1
fi
return 0
}
main() {
if pidof -x "uplink.sh" >/dev/null 2>&1; then
return 0
fi
while inet; do
case "$UPLINK_IS_DOWN" in
"0"|"2")
/etc/init.d/network restart
;;
"8")
/sbin/reboot
;;
esac
(( UPLINK_IS_DOWN++ ))
done
}
main "$@"
скрипт должен выполняться по крону, каждую минуту (защита от повторного запуска есть, только назовите правильно uplink.sh). пробует wget'ом скачать страничку, если возникла какая-то проблема например с DNS и оно не определяется, то пробует пинговать IP. если и тут неудача, то перезапускает сеть. ждет еще один раз, и пробует перезапустить сеть снова. на восьмой раз выполняется перезагрузка.
ТУДУ: добавить варианты для определения доступа к сети, например проверять $? код выполнения ip link show eth0 - есть ли такой интерфейс вообще, а может сеть просто не запущена и ее надо запустить. то есть, переменные нам будут подсказывать, на каком этапе случается облом с сетью и в зависимости от этого уже скрипт попытается сделать что-то...
ну и плюс, номер попытки, при которой сеть все еще отсутстует нам тоже поможет, так например перезагрузка системы только уже как крайний случай.
вот. чтобы вы добавили в скрипт? и какие ваши идеи чекать доступ к интернету и чинить его, если отвалится?
ой, только не говорите что за вас это делает роутер. вот когда вам даже роутер не потребуется перезагружать - а он это будет делать сам, чего я пытаюсь добиться от скрипта, а в идеале - чтобы пробовал чинить сеть сам, вот тогда и можно будет спокойно закинуть ПК в кладовку и забыть про него.
алсо не забываем, что провайдер тоже может проводить технические работы, вам лень настраивать dhcp, а ip указан вручную, и всякие pppd вам тоже лень разбираться-настраивать для восстановления сети. тогда как гараздо проще и радикальнее всю сеть перезапустить: но для этого нужно корректно определить проблему, по которой сеть недоступна.
Перемещено stave из talks