pptp и default route

Есть подключение по локальной сети и инет по pptp. При отсутствии подключения по pptp надо чтобы был прописан статический маршрут по-умолчанию, т. к. провайдер даёт доступ на некоторые сайты, в том числе для активации инет-карты, и при отключенном инете. При подключении естественно default route должен быть прописан через него. Несмотря на опцию defaultroute, pppd не прописывает маршрут по-умолчанию, если статический маршрут уже задан. В логах даже при заданном debug ничего про маршрут по-умолчанию нет. Как его заставить это делать? В debian'е использовал pre-up route del default в /etc/network/interfaces, как это делается в Arch здесь не знаю. Можно конечно вручную всё прописать через /etc/rc.local, но хочется сохранить функциональность /etc/rc.d/ppp start|stop , иначе каждый раз при отключении инета придётся руками default route прописывать

/etc/ppp/options.pptp:
lock           
noauth                                                  
nobsdcomp
nodeflate
persist
maxfail 0
holdoff 1
/etc/ppp/provider:
remotename PPTP
ipparam provider
pty "pptp 192.168.149.1 --nolaunchpppd"
name <username>
file /etc/ppp/options.pptp
defaultroute
Самый простой способ. Это создать скрипт на запуск, и юзать его. Вот вариант моего скрипта:

#!/usr/local/bin/bash
#Скрипт на поднятие впн Аист
#Запускать от рута
GW="10.2.65.193"
clear
echo "Adding VPN server and DNS server routes"
echo " "
route add -host 81.28.160.1   gw $GW
route add -host 81.28.160.111 gw $GW
route add -host 192.168.0.1   gw $GW
route add -host 192.168.0.3   gw $GW
route add -host 192.168.0.3   gw $GW
echo "Added succesfull"
echo "Adding AIST.NET routes"
echo " "
route add -net 192.168.0.0     netmask 255.255.255.0    gw $GW 
route add -net 172.16.0.0      netmask 255.240.0.0      gw $GW  
route add -net 10.0.0.0        netmask 255.0.0.0        gw $GW
route add -net 213.180.192.0   netmask 255.255.224.0    gw $GW
route add -net 77.88.0.0       netmask 255.255.192.0    gw $GW
route add -net 87.250.224.0    netmask 255.255.224.0    gw $GW
echo "Added succesfull"
echo " "
echo "wait 5 seconds while we up ppp0"
pon твой провайдер или файл /etc/ppp/peers/
sleep 5
echo "Adding default route for ppp0"
route add default dev ppp0 
echo "All successful! Now you can use your Internet VPN connection!"

Поднимай, опускай интерфейс - внутрение ресурсы должны работать и идти через твой основной интерфейс eth0.

зы…..Паузу можешь убрать, это у меня провайдер тормоз ;)
Пропиши в /etc/ppp/peers/<твой провайдер> опцию defaultroute и
sleep 5
route add default dev ppp0
можешь убрать.

У меня скрипт выглядит ещё проще:
route del default
pon provider
, остальное всё в /etc/rc/conf.

Но я хочу добиться нормальной работы /etc/rc.d/ppp как службы, чтобы при отсутствии pptp подключения стоял статический default route, а при наличии - через ppp0
man pppd на предмет:

1. Секция ROUTING
2. скрипты /etc/ppp/ip-up, /etc/ppp/ip-down

если коротко: в ip-up сохранить текущий маршрут “по умолчанию”, удалить его из таблицы роутинга, поставить маршрут на интерфейс ppp#, в ip-down удалить маршрут от ppp и восстановить исходный маршрут “по умолчанию”

либо смотреть какие патчи накаладывали в debian, что там появился параметр replacedefaultroute:
replacedefaultroute
This option is a flag to the defaultroute option. If defaultroute is set and this flag is also set,
pppd replaces an existing default route with the new default route.
systemd должен умереть.
selivan
Пропиши в /etc/ppp/peers/<твой провайдер> опцию defaultroute и
sleep 5
route add default dev ppp0
можешь убрать.

У меня скрипт выглядит ещё проще:
route del default
pon provider
, остальное всё в /etc/rc/conf.

Но я хочу добиться нормальной работы /etc/rc.d/ppp как службы, чтобы при отсутствии pptp подключения стоял статический default route, а при наличии - через ppp0

У меня скрипт выглядит так, по причине того, что defaultroute в /etc/ppp/peers/provider не хочет работать, и маршруты прописанные в ip-up и ip-down тоже не прописываются когда я поднимаю впн. И плюс ко всему это мой старый скрипт, в новом маршрутиризация сложнее, и он работает как демон.

Я просто не совсем понял что ты хотел сделать.
Спасибо, теперь всё работает как хотелось :D Вот скрипты для сохранения default route перед поднятием ppp-интерфейса и его восстановления при опускании интерфейса:

/etc/ppp/ip-pre-up
#!/bin/sh
# parameters: interface-name peer-name user-name tty-device speed
gw=$( /sbin/route -n | /bin/grep '^0.0.0.0' | /bin/tr -s ' ' | /bin/cut -d' ' -f 2 )
echo "/sbin/route add default gw $gw" > /var/run/$1.oldroute
/sbin/route del default

/etc/ppp/ip-down
#!/bin/sh
eval $( cat /var/run/$1.oldroute)
rm /var/run/$1.oldroute
bosha
defaultroute в /etc/ppp/peers/provider не хочет работать, и маршруты прописанные в ip-up и ip-down тоже не прописываются когда я поднимаю впн

Может быть defaultroute не хочет работать по той же причине что и у меня - default gw уже есть? Маршруты из ip-up и ip-down могут не прописываться потому что в них PATH установлен какой-то кривой:
/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.
- route и прочие утилиты из /sdin не работают. Наверное этот PATH жёстко прописан в pppd. Попробуй в этих скриптах как я указывать полные пути, или установи нормальный PATH - должно заработать.

<IMHO>Мой с h4tr3d вариант как-то проще и красивее, чем писать отдельный скрипт как демон</IMHO>
selivan
Маршруты из ip-up и ip-down могут не прописываться потому что в них PATH установлен какой-то кривой:

Вот спасибо тебе, добрый человек. Я уже задолбался, все не мог понять почему у меня маршруты из ppp/ip-up не подымаются, уже и на NetworkManager грешил и на wvdial. Думал может они маршруты перекосячивают. Причем cp тоже не работало оттуда, а при запуске ручками все работало на ура. Вообщем еще раз спасибо, про PATH вообще не подумал.
Прошу прощения за поднятие старой темы. но у меня такая же проблема, перед подъёмом туннеля нужно вручную удалять маршрут по умолчанию. Я так и не догнал, о каком PATH идет речь. Я исправил PATH в файле .bashrc, но все равно не срабатывает. Как исправить PATH для демона pppd ? Arch Linux использую всего несколько дней, поставил впервые. Поиск приводит в эту тему.
перед подъёмом туннеля нужно вручную удалять маршрут по умолчанию
Юзай /etc/ppp/ip-pre-up . Смотри man pppd, секцию SCRIPTS.
 
Зарегистрироваться или войдите чтобы оставить сообщение.