[sisyphus] Работа с PPP в /etc/net

Yura Zotov =?iso-8859-1?q?yz_=CE=C1_altlinux=2Eru?=
Вт Авг 30 06:50:29 MSD 2005


On Mon, Aug 29, 2005 at 01:38:37PM +0400, Denis Ovsienko wrote:
> > Вопросы и предложения авторам etcnet.
> > 
> > Зачем в опциях pppd используется параметр unit?
> Чтобы можно было создать каталог /etc/net/ifaces/ppp20 и быть уверенным, что
> интерфейс будет называться так же.
> 
> > Было бы удобнее использовать параметр linkname. Если присваивать
> > ему значение, равное имени интерфейса, то конфигурировать
> > интерфейсы становится приятнее. В этом случае pppd создаёт
> > pid-файл с именем pppd-linkname.pid. Поэтому вы всегда знаете
> > каком интерфейсу он принадлежит. Поскольку ppp интерфейсы
> А так pppd создаёт файл /var/run/<имя>.pid и я знаю, какому интерфейсу он
> (файл) принадлежит. См. скрипт destroy-ppp.
> 
> > виртуальные, при конфигурации удобнее назначать им какие-то
> > осмысленные имена, например по имени провайдера, к которому
> > устанавливается соединение.
> То есть в такой схеме администратор системы видит ppp20, а конфигурировать
> должен isp15?
> 
> > На мой взгляд, требуется внести минимальные изменения в скрипты.
> > Если вас устраивает, могу сделать их сам...
> Покажите вашу редакцию.
>

Я тут провёл исследования... Результаты таковы:

1. Два соединения с одинаковым значением параметра unit нормально
   устанавливаются, и одно из них получает unit не
   соответствующий указанному в команде. pid-файлы соответствуют
   реальным unit-ам.

2. Два соединения с одинаковым значением параметра linkname
   нормально устанавливаются. Каждому соответствует pid-файл с
   именем вида pppX.pid. Соединение, запущенное позднее, затирает
   информацию о предыдущем соединении в файле ppp-linkname.pid.

Ясно, что всё плохо. Например, если в etcnet настроен интерфейс
ppp0, а пользователь уже установил соединение ppp0 при помощи
kppp, например, по etcnet перестаёт адекватно работать. Так как,
во-первых, не запускает своё соединение, во-вторых, без лишних
слов может убить пользовательское соединение, если попросят.

Поэтому, надо как-то навести соответствие между настроенными
PPP-интерфейсами etcnet и установленными PPP-соединениями. Для
этого нам нужно заранее обладать некоторой информацией, которая
будет верна как до установки соединения, так и после. Поскольку
pppd не генерирует сам нечто уникальное, которое он мог бы нам
сообщить, то мы вынуждены сгенерировать это сами, и придумать
некоторый механизм хранения этой информации. Остаётся только
надеяться на то, что пользователь в порыве безумия не разломает
этот механизм. :-)

Например:

PIDFILE=`mktemp /var/run/ppp-XXXXXXXX.pid` || exit 1
LINKNAME=`echo $TMPFILE | awk --re-interval '// { match( $0, "[[:alnum:]]{6,}", q ); print q[0] }'`
pppd ... linkname $LINKNAME
ln -s /var/run/$PIDFILE /var/run/etcnet/$NAME

или типа того. Криво, конечно. Если не нравится, я не
настаиваю...

--
Юрий А. Зотов




Подробная информация о списке рассылки Sisyphus