Помогите - pppd не устанавливает маршрут по умолчанию

Автор: user123 Дата: 29.07.2003 19:51 Всем привет. Помогите, пожалуйста, решить проблему с dialup-соединением в Linux. Я его использую как резервный канал связи, когда не работает основной канал (через локальную сеть).

Настроил ppp-соединение, все в общем-то работает, но только pppd не ставит маршрут по умолчанию, может быть, потому что таковой уже прописан на eth0. (В параметрах pppd опция defaultroute есть.)

Если вручную сказать "route add default dev ppp0", то искомый второй маршрут по умолчанию (на ppp0) появляется. Поскольку метрика у него оказывается меньше, чем у первого маршрута, то пакеты идут через ppp0, когда он есть, а когда нет - то через eth0.

Если добавить команду route add... в скрипт ppp-on, она не срабатывает. Система используется как шлюз для сети, и там X Window нет, пользуюсь базовой функциональностью пакета ppp для установления соединения - скриптами ppp-on и т.д. Смотрел в PPP-HowTo - там написано, что когда маршрут по умолчанию уже есть (например, на eth0), то pppd еще один не создаст. В то же время, никаких конкретных рекомендаций о решении проблемы я там не нашел.

Был бы признателен за подсказку, как добиться автоматической установки маршрута по умолчанию на ppp0?

Спасибо за помощь.
Re: Помогите - pppd не устанавливает маршрут по умолчанию 29.07.2003 19:57Light > Был бы признателен за подсказку, как добиться
> автоматической установки маршрута по умолчанию на ppp0?
Незнаю! Но есть идея!
Пишеш скрипт с премерно следующем содержанием:
---
#!/bin/sh

ifconfig ppp0 up
route add default dev ppp0
---
Помойму довольно просто:-)
Re: Помогите - pppd не устанавливает маршрут по умолчанию 29.07.2003 21:35user123 Спасибо, Light, но вот что получается.
Если сказать "ifconfig ppp0 up" до установки связи, то будет
ppp0: Unknown interface: no such device
и маршрут добавить не удастся.

Хорошо бы добавить маршрут уже после установления соединения. Я, например, вызываю pppd не в фоновом режиме:
exec /usr/sbin/pppd -detach debug lock modem crtscts /dev/ttyS2 115200 \
asyncmap 20A0000 escape FF kdebug 0 $LOCAL_IP:$REMOTE_IP \
noipdefault netmask $NETMASK defaultroute hide-password connect $DIALER_SCRIPT

Это позволяет сделать параметр -detach. Если так делать, то в консоли можно будет видеть, как устанавливается соединение, что происходит и, что для меня самое важное, в любой момент отменить установление соединения нажатием Ctrl+C.

Я пытался добавлять команду /sbin/route add ... в скрипты ppp-on и ppp-on-dialer (это $DIALER_SCRIPT), но к успеху это не привело. Может быть, что-то неправильно сделал...

То есть если нет маршрута по умолчанию до вызова pppd, то он создает таковой без проблем.
У меня же уже есть маршрут по умолчанию (на eth0, основной канал). И вот когда у ethernet-провайдера сбой, я и хочу использовать dial-up как резервный канал. Можно, конечно, этот default удалить перед соединением по модему, но это не очень красивое решение.
Re: Помогите - pppd не устанавливает маршрут по умолчанию 29.07.2003 23:02Light Что-то мне сегодня всякие бредовые мысли в голову лезут:-)
Одна из них:
---
#!/bin/sh

s=`date +%s`

#Заводиш свой интерфейс
/usr/sbin/pppd -detach debug lock modem crtscts /dev/ttyS2 115200 \
asyncmap 20A0000 escape FF kdebug 0 $LOCAL_IP:$REMOTE_IP \
noipdefault netmask $NETMASK defaultroute hide-password connect \
$DIALER_SCRIPT 2>/tmp/$s&
if [ $? !=0 ]; then
echo "Болты, бла бла бла ..."
exit
fi
cat /tmp/$s
rm -f /tmp/$s
wait `pidof pppd`
kill -HUP `pidof pppd`
echo "Дисконнект, бла бла бла ..."
---
Re: Помогите - pppd не устанавливает маршрут по умолчанию 29.07.2003 23:25user123 Спасибо, Light, а можешь пояснить, каким образом этот скрипт позволяет автоматически добавить маршрут по умолчанию? Особенно

$DIALER_SCRIPT 2>/tmp/$s& - что мы здесь делаем и зачем?

А также
if [ $? !=0 ]; then
что означает $? не равно нулю? Что находится в переменной "$?" ?

Извини за тупые вопросы Улыбка
Re: Помогите - pppd не устанавливает маршрут по умолчанию 29.07.2003 23:42Light Да на счет маршрута, я совсем забыл, так увлекся:-) Добавь route add default dev ppp0 куданибудь перед wait но после /usr/sbin/pppd

1. 2>/tmp/$s& - означает запустить pppd в бэкграунде и перенаправить STDOUT и STDERR в файл /tmp/<текущее время в скундах>
2. $? - означает результат выполнения последней команды (0 - типа все нормально), эти значения можеш посмотреть в man pppd
Re: Помогите - pppd не устанавливает маршрут по умолчанию 29.07.2003 23:52Light А вообще может тебе это поможет
[community.asplinux.ru]
Re: Помогите - pppd не устанавливает маршрут по умолчанию 30.07.2003 07:51Vladimir Dyakov _Точно_ поможет ;-)
Re: Помогите - pppd не устанавливает маршрут по умолчанию 30.07.2003 14:50user123 Спасибо, ребята. Буду разбираться.
Re: Помогите - pppd не устанавливает маршрут по умолчанию 30.07.2003 17:16user123 Ребята, опять вопросы возникли Улыбка - как же все-таки после установления ppp-соединения заставить систему выполнить какие-нибудь команды - например, "route add default dev ppp0"? Может быть, есть параметры wvdial, позволяющие это сделать?

Когда я прочитал в статье о файлах /etc/ppp/ip-up.local и /etc/ppp/ip-down.local, позволяющих добавить команды, запускаемые при входе и выходе из инета, сразу за них ухватился. Но, естественно, сами по себе эти файлы не вызываются при входе и выходе. Что нужно сделать, чтобы они вызывались?

Вообще, большей части описанных в статье файлов у меня в системе нет, а wvdial собирал из исходных текстов. Команды ifup и ifdown не работают, файла /etc/sysconfig/network-scripts/ifcfg-ppp0 и каталога /etc/sysconfig тоже нет. Такое впечатление, что статья описывает настройку wvdial в ASP Linux. А как же быть в общем случае?
Re: Помогите - pppd не устанавливает маршрут по умолчанию 30.07.2003 21:07karabas опция defaultroute в новых pppd не изменяет уже имеющийся дефолт
надо прописать прямо в /etc/ppp/ip-up
а для начала поставить сам pppd и вообще все что есть сетевое
для общего случая
Re: Помогите - pppd не устанавливает маршрут по умолчанию 30.07.2003 22:39user123 pppd установлен. С ним были скрипты ppp-on, ppp-off и т.д., их и настроил согласно документации. Модем дозванивается, ppp-соединение устанавливается нормально, добавляется соответствующая запись в таблицу маршрутизации. Единственная проблема - поскольку у меня уже есть один маршрут по умолчанию (на eth0), то pppd почему-то не добавляет еще один на ppp0. Конечно, если модем дозванивается не по chat-скрипту, а с помощью wvdial, результат тот же.

Хотелось бы как-то автоматически добавить маршрут по умолчанию после запуска pppd. И с этим у меня проблема - к сожалению, пока не могу похвастаться глубокими знаниями в области написания shell-скриптов. Проблема - скрипт дозвона запускаю не в фоновом режиме и не знаю, как добиться автоматического выполнения команд (скажем, route add... и т.д.) _после_ запуска pppd.

Может быть, у wvdial есть какие-то опциональные параметры, позволяющие задать команду на выполнение после запуска pppd?

Подскажите, пожалуйста. Не может быть, чтобы никто не использовал dialup как резервный канал и не столкнулся с этой проблемой.
RSS-материал