24 авг. 2010 г.

Автопереподключение pppd в Ubuntu 10.04

Как вы наверное помните, ещё со времён Ubuntu 9.04 я не пользуюсь Network Manager'ом для настройки сетевых соединений на своем настольном компьютере.

Так продолжается и по сей день, даже не смотря на то, что в Ubuntu 10.04 повяилась поддержка PPTP что называется "из каробки". Ну просто не нужен мне лишний значок на панели и никакая его функциональность. :) Мне нужно, чтобы сеть и интернет просто всегда "были".

До сих пор всё было хорошо. Настраивал сеть классическим дебиановским способом через /etc/network/interfaces и файлы конфигурации ppp в /etc/ppp/peers/.

И вот, после обновления до 10.04 обнаруживаю досадную особенность: pppd перестал автоматически восстанавливать соединение после его разрыва. Долго было некогда разбираться, в чем проблема, но вот недавно я набрёл на этот спасительный пост: http://soapyfrogs.blogspot.com/2010/08/linux-ubuntu-1004-ppp-maxfail-and.html.

По ссылке говорится, что всё дело в неправильной работе подсистемы горячего подключения сетевых адаптеров. Очень знакомо. Несколькими постами ниже вы можете почитать как я боролся с этой "подсистемой" в 9.04. Тогда она работала через традиционный udev, теперь её переделали на новомодный Upstart.

Собственно, корень проблемы в том, что в Ubuntu PPP интерфейсы тоже считаются "на горячую подключенными". То есть, когда вдруг ppp-соединение разрывается, Upstart перехватывает это событие и честно убивает "больше ненужный" pppd, отвечавший за него. pppd ничего не остается как повиноваться... соответственно, восстанавливать подключение уже не кому.

Баг на ланчпаде уже висит и даже в нескольких вариантах: https://bugs.launchpad.net/ppp/+bug/578108

В качестве временного решения, если вам не нужно "горячее" подключение/отключение сетевых адаптеров, предлагается просто отключить соответствующую Upstart задачу путём переименования файла /etc/init/network-interface.conf в /etc/init/network-interface.conf.disabled.

Дополнение от 04.09.2010.

Как выяснилось, вышеприведенное "временное решение" приводит к не очень приятным последствиям, а именно: при загрузке автоматически не стартуют некоторые сервисы, в том числе и /etc/rc.local, а в ответ на команду runlevel система отвечает сомнительным unknown.

3 комментария:

  1. Вопрос очень актуален, не появилось ли другого решения проблемы?

    ОтветитьУдалить
  2. Нормального я пока не нашел.

    У себя пользуюсь таким костылём в /etc/init/network-interface.conf:

    post-stop script
    if [ "$INTERFACE" != ppp0 ]; then
    exec ifdown --allow auto $INTERFACE
    fi
    end script

    ОтветитьУдалить
  3. как-то пыталась освоить Ubuntu, но на долго меня не хватило, не моё это((

    ОтветитьУдалить