LINUX.ORG.RU
ФорумAdmin

Я случайно dhclient

 ,


0

1

запустил без параметров, на момент запуска были интерфейсы 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

★★★★★

А у меня какая-то коробочка от асуса стоит. А на ней и дхцп, и автоподнятие сети, и вообще по сути я в неё только имя-пароль для прова вбивал.

PolarFox ★★★★★
()

но если честно я не ожидал, что dhclient с дефолтным конфингом и отсутствием каких-либо настроек вообще способен сломать всю сеть за просто так. если у кого-нибудь есть догадки, в чем может быть проблема - расскажите...

У нормальных людей принято думать прежде чем совершить какое-то действие.

The names of the network interfaces that dhclient should attempt to configure may be specified on the command line. If no interface names are specified on the command line dhclient will normally identify all network interfaces, eliminating non-broadcast interfaces if possible, and attempt to configure each interface.

stave ★★★★★
()

Точно случайно? Может ты целенаправленно к этому шёл, стремился, и в итоге таки стал dhclient?

false ★★★★★
()

когда вы случайно iptables -A INPUT -j DROP или еще чего, то при отсутствии сети - система должна ее либо попытаться восстановить, либо радикально ребутнуться

А еще нужно обмотать ethernet кабель фольгой и набросить 220 вольт , чтобы случайно его не выдернуть

goingUp ★★★★★
()

Страшно будет жить в мире, где сервера сразу шатдаунят после потери сети...

comp00 ★★★★
()

такой «скрипт» давно написан, называется monit :)

psv1967 ★★★★★
()

потом, как доберусь до компьютера физически

будь мужиком - просканируй сеть и найди свой сервак

zolden ★★★★★
()

Просто удивительно. Программа сделала то, что от неё требовалось.

Black_Shadow ★★★★★
()

Здравствуйте, я представляю техническую поддержку ISC. Вы случайно что dhclient?

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

Ну, вообще, поведение по-умолчанию глупое. Задача «поднять dhcp на всех интерфейсах вообще» встречается очень редко. Случайное нажатие enter или пустая переменная вместо интерфейса из-за ошибки в скрипте - гораздо чаще. Лучше было бы иметь специальный ключ, какой-нибудь "-А", а при запуске без параметров просто материться.

selivan ★★★
()

Ваще с dhcp на удаленной машине лучше не баловаться, а держать статический адрес, особенно, если нету на нее ipmi/ilo

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

Ты часто запускаешь dhclient ручками? А за 16 лет в линуксах ни разу его не запускал. Даже в LFS (точнее, BLFS) этого не требуется (хотя и упоминается). А вообще, это тяжёлое наследие первых юниксов, когда за терминалом сидели люди с головой, а лишний вывод был нежелателен (устройство вывода запросто могло быть принтером), отсюда молчаливость традиционных утилит. Это сейчас команд столько, что все не упомнишь, да и прокладка между стулом и монитором не очень к этому стремится, поэтому при старте команды без ключей принято выводить краткую справку (и я одобряю именно такой подход).

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

Бывает, например временно перецепил виртуалку с internal на nat.

selivan ★★★
()

запустил без параметров, на момент запуска были интерфейсы lo0, eth0, ppp0 и wlan0, в конфиге все закомментировано окромя двух строчек request и require, а он мне взял и всю сеть обвалил.

Не сиди под рутом. dhclient, запущенный не от рута, без параметров и с пустым конфигом, говорит «RTNETLINK answers: Operation not permitted». Состояние сетевых интерфейсов при этом не меняется.

dexpl ★★★★★
()
Последнее исправление: dexpl (всего исправлений: 1)

Да Вы прям вотчдог изобрели.

ktulhu666 ☆☆☆
()

Старая админская примета - «Удаленная настройка роутера - к дороге.»

Сам пару раз оказывался в пдобной ситуации, и очень хотел такой скрипт, после второго раза выработал привычку перепроверять по 10 раз опасные команды вроде ifconfig|iptables|dhclient и сверять как оно сработает при ТЕКУЩЕЙ конфигурации, также хорошенько раскидывать мозгами над route и /etc/network/interfaces. Сейчас привычка закоренела и не подводит (тьфу-тьфу). Очень рекомендую.

chenger ★★
()

Зря это в админ переместили, этому в толксах самое место imho.
Сегодня случайно dhcliect, завтра init 1, а послезавтра что - format c ?
Теперь, что всю документацию надо случайно ?

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

У нормальных людей принято думать прежде чем совершить какое-то действие.

А откуда ты знаешь, что принято у нормальных людей? Соседи по палате рассказали?

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