[sisyphus] Новый инитскрипт для pptp-client
Yura Zotov
=?iso-8859-1?q?yznews_=CE=C1_hotbox=2Eru?=
Сб Май 31 14:52:31 MSD 2003
On Sat, May 31, 2003 at 01:14:14PM +1300, Sergey Plyukhin wrote:
> Здравствуйте,
>
> On 15:30 Fri 30 May , Yura Zotov wrote:
> > Изменения по сравнению со старой версией:
> > 1. имя туннеля для старта должно быть ЯВНО указано в переменной
> > PPTP_TUNNEL в /etc/sysconfig/pptp
> > 2. при старте туннеля не будут добавлены маршруты, определённые
> > при настройке туннеля командой pptp-command. Маршруты также
> > нужно добавлять в /etc/ppp/ip-up.local.
> но ведь не всегда туннель поднимается сразу с соединением :-(
> вполне оправдано поднятие pptp с диалапной машины, но для конкретных
> задач только. Подключился к сети, понадобилось VPN подключение -
> поднял, поработал - опустил. (очень удобно через service pptptunnel)
> Остальные как работали так и продолжают :-)
> Может все-же оставить возможность перестройки маршрутизации VPN при
> поднятии самого VPN (и соответственной перестройки обратно)
> {как сейчас еще ;-)} Ведь для boot-up VPN это не помешает.
>
> > 3. теперь этот скрипт НЕ устанавливает HOSTNAME, так что если, вам
> > нужно менять имя машины после старта туннеля, делайте это из
> > /etc/ppp/ip-up.local
> опять получается "слишком глобальное" изменение для dial-up
> >
Лично я пользуюсь и диалапом, и PPTP совершенно свободно и
независимо, поэтому никаких проблем не вижу. Вероятно, надо
просто похитрее написать скрипты ip-up.*
Я делаю так:
/etc/ppp/peers/tunnel_name:
...
ipparam "tunnel_name"
...
============/etc/ppp/ip-up.local=======================
#!/bin/sh
SCRIPT=/etc/ppp/ip-down.$6
[ -x $SCRIPT ] && $SCRIPT $@
всё, в этом файле больше ничего нету.
============/etc/ppp/ip-up.tunnel_name==================
#!/bin/bash
interface_name=$1
local_IP_address=$3
remote_IP_address=$4
ipparam=$5
#echo -e "$interface_name\n$tty_name\n$speed\n$local_IP_address\n$remote_IP_address\n$ipparam"> /ip-up.pptp.out
emails_file=/etc/ppp/email.list
MAX_RETRIES=10
restart_service()
{
/sbin/service $1 restart &> /dev/null
}
ip2mail()
{
for mail_address in `cat $emails_file`
do
echo -e "Name: $HOSTNAME\nIP: $local_IP_address" | mail -s "New IP" "$mail_address"
done
}
i=0
while [ $i -le $MAX_RETRIES ]
do
i=$((i+1))
HOSTNAME=`host $local_IP_address | awk '/domain name pointer/ { sub(/\.$/, ""); print $5 }'`
if [ "x$HOSTNAME" != "x" ]; then
hostname $HOSTNAME
initlog -s "Hostname set to $HOSTNAME" -n "ip-up.pptp"
restart_service ntpd
restart_service postfix
ip2mail
exit 0
else
ERROR_MSG="Hostname lookup failed "
mail -s "ip-up.pptp: $ERROR_MSG" root на localhost
sleep 2
fi
done
Соответственно, в ip-up.tunnl_name можно и route делать и всё,
что хочешь. А все остальные соединения остаются как есть, так как
в /etc/ppp/ip-up.local идёт выбор скрипта по ipparam.
Единственное что нужно делать -- это использовать ipparam. Правда,
недавно я обнаружил неудобство. Выяснилось, что для настройки всех
соединений wvdial использует один единственный
/etc/ppp/peers/wvdial, что, конечно же сильно портит преимущества
данной схемы. Но это всё равно касается только wvdial, так как
для PPTP-туннеля можно указать ipparam и в /etc/ppp/ip-up.local
вписать строчки для выполнения этого скрипта.
Т.о. получается, что PPTP-туннель легко делается независимым и не
влияющим на остальные PPP-соединения.
Ваши замечания?
По вопросам какие параметры передаются скриптам и в каком порядке
man pppd.
> > 1 и 2 из-за того, что для старта туннеля теперь не используется
> > pptp-command start. 3, потому что я считаю /etc/ppp/ip-up.local
> > более правильным.
> тогда уж /etc/ppp/ip-up.d/
> >
По-моему это не годится, так как выполняется для всех соединению
автоматически.
--
Юрий А. Зотов
Подробная информация о списке рассылки Sisyphus