[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