* [sisyphus] Новый инитскрипт для pptp-client
@ 2003-05-30 11:30 Yura Zotov
2003-05-31 0:14 ` Sergey Plyukhin
0 siblings, 1 reply; 5+ messages in thread
From: Yura Zotov @ 2003-05-30 11:30 UTC (permalink / raw)
To: Sisyphus List
[-- Attachment #1: Type: text/plain, Size: 1367 bytes --]
В аттаче новый инитскрипт, которым я планирую заменить
/etc/init.d/pptptunnel в новой версии пакета. Прошу всех
заинтересованных посмотреть, попробовать и высказать
замечание/предложения. Будет работать только для
pptp-client >= 1.1.0.
Изменения по сравнению со старой версией:
1. имя туннеля для старта должно быть ЯВНО указано в переменной
PPTP_TUNNEL в /etc/sysconfig/pptp
2. при старте туннеля не будут добавлены маршруты, определённые
при настройке туннеля командой pptp-command. Маршруты также
нужно добавлять в /etc/ppp/ip-up.local.
3. теперь этот скрипт НЕ устанавливает HOSTNAME, так что если, вам
нужно менять имя машины после старта туннеля, делайте это из
/etc/ppp/ip-up.local
1 и 2 из-за того, что для старта туннеля теперь не используется
pptp-command start. 3, потому что я считаю /etc/ppp/ip-up.local
более правильным.
Для старта pppd используется параметр linkname, чтобы заранее
знать имя PID-файла. Будьте внимательны, и не используйте этот
параметр в собственных файлах настроек для pppd, относящихся к
данному туннелю. Также для старта pppd используется параметр
updetach. Из-за этого использование в настройках pppd параметра
persist может надолго остановить старт туннеля и системы, если
pptp не сможет установить соединение.
По вопросам настроек pppd -- man pppd.
Замечания и предложения приветствуются.
--
Юрий А. Зотов
[-- Attachment #2: pptptunnel.new --]
[-- Type: text/plain, Size: 1568 bytes --]
#! /bin/sh
#
# chkconfig: - 11 89
# description: Starts and stops PPTP connection.
# processname: pptptunnel
# config: /etc/sysconfig/network
# config: /etc/sysconfig/pptp
WITHOUT_RC_COMPAT=1
# Source function library.
. /etc/init.d/functions
SourceIfNotEmpty /etc/sysconfig/network
SourceIfNotEmpty /etc/sysconfig/pptp
PIDFILE=/var/run/ppp-$PPTP_TUNNEL.pid
LOCKFILE=/var/lock/subsys/pptptunnel
RETVAL=0
SERVICE_NAME="\"$PPTP_TUNNEL\" PPTP tunnel"
start()
{
msg_starting "$SERVICE_NAME"
if [ "x$PPTP_TUNNEL" = "x" ]; then
echo -n "tunnel not defined!"
failure "tunnel not defined!"
exit 1
fi
start_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user root --no-announce -- \
pppd call $PPTP_TUNNEL linkname $PPTP_TUNNEL updetach
RETVAL=$?
return $RETVAL
}
stop()
{
msg_stopping "$SERVICE_NAME"
stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user root --no-announce pppd
RETVAL=$?
return $RETVAL
}
restart()
{
stop
start
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
restart
;;
condstop)
if [ -e "$LOCKFILE" ]; then
stop
fi
;;
condrestart)
if [ -e "$LOCKFILE" ]; then
restart
fi
;;
condreload)
if [ -e "$LOCKFILE" ]; then
restart
fi
;;
status)
msg_already_running "$SERVICE_NAME"
echo
status --pidfile "$PIDFILE" --expect-user root --no-anounce pppd
RETVAL=$?
;;
*)
msg_usage "${0##*/} {start|stop|restart|reload|condstop|condrestart|condreload|status}"
RETVAL=1
esac
exit $RETVAL
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [sisyphus] Новый инитскрипт для pptp-client
2003-05-30 11:30 [sisyphus] Новый инитскрипт для pptp-client Yura Zotov
@ 2003-05-31 0:14 ` Sergey Plyukhin
2003-05-31 10:52 ` Yura Zotov
0 siblings, 1 reply; 5+ messages in thread
From: Sergey Plyukhin @ 2003-05-31 0:14 UTC (permalink / raw)
To: Sisyphus List
Здравствуйте,
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
>
> 1 и 2 из-за того, что для старта туннеля теперь не используется
> pptp-command start. 3, потому что я считаю /etc/ppp/ip-up.local
> более правильным.
тогда уж /etc/ppp/ip-up.d/
>
> Для старта pppd используется параметр linkname, чтобы заранее
> знать имя PID-файла. Будьте внимательны, и не используйте этот
> параметр в собственных файлах настроек для pppd, относящихся к
> данному туннелю. Также для старта pppd используется параметр
> updetach. Из-за этого использование в настройках pppd параметра
> persist может надолго остановить старт туннеля и системы, если
> pptp не сможет установить соединение.
>
> По вопросам настроек pppd -- man pppd.
>
> Замечания и предложения приветствуются.
>
>
> --
> Юрий А. Зотов
СПАСИБО за предупреждение, а то после dist-upgrade день на восстановление
системы приходится тратить :-)
--
С наилучшими пожеланиями-
Сергей Плюхин=
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [sisyphus] Новый инитскрипт для pptp-client
2003-05-31 0:14 ` Sergey Plyukhin
@ 2003-05-31 10:52 ` Yura Zotov
2003-06-01 2:00 ` Sergey Plyukhin
0 siblings, 1 reply; 5+ messages in thread
From: Yura Zotov @ 2003-05-31 10:52 UTC (permalink / raw)
To: Sisyphus List
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/
> >
По-моему это не годится, так как выполняется для всех соединению
автоматически.
--
Юрий А. Зотов
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [sisyphus] Новый инитскрипт для pptp-client
2003-05-31 10:52 ` Yura Zotov
@ 2003-06-01 2:00 ` Sergey Plyukhin
2003-06-01 6:31 ` Yura Zotov
0 siblings, 1 reply; 5+ messages in thread
From: Sergey Plyukhin @ 2003-06-01 2:00 UTC (permalink / raw)
To: Sisyphus List
On 14:52 Sat 31 May , Yura Zotov wrote:
> > > 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.
>
> Т.о. получается, что PPTP-туннель легко делается независимым и не
> влияющим на остальные PPP-соединения.
именно этого и надо :-)
>
> Ваши замечания?
получается "новый" /etc/ppp/ip-up.tunnel_name "почти калька" с
существующего /etc/ppp/peers/__default. Может просто в этот файл и
добавить необходимые изменения?
Или существует какая-то иная причина и необходимо отказаться именно от
/etc/ppp/peers ?
В принципе все-равно откуда ставить маршруты из /etc/ppp/peers/__default
или /etc/ppp/ip-up.tunnel_name :-)
Это не первая и не последняя "переделка"
В любом случае спасибо за разьяснения.
>
> По вопросам какие параметры передаются скриптам и в каком порядке
> man pppd.
> --
> Юрий А. Зотов
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [sisyphus] Новый инитскрипт для pptp-client
2003-06-01 2:00 ` Sergey Plyukhin
@ 2003-06-01 6:31 ` Yura Zotov
0 siblings, 0 replies; 5+ messages in thread
From: Yura Zotov @ 2003-06-01 6:31 UTC (permalink / raw)
To: Sisyphus List
On Sun, Jun 01, 2003 at 03:00:09PM +1300, Sergey Plyukhin wrote:
> > Лично я пользуюсь и диалапом, и PPTP совершенно свободно и
> > независимо, поэтому никаких проблем не вижу. Вероятно, надо
> > просто похитрее написать скрипты ip-up.*
> >
> > Я делаю так:
> >
> > /etc/ppp/peers/tunnel_name:
> > ...
> > ipparam "tunnel_name"
> > ...
> получается "ссылка сам на себя"
> нужное слово уже есть в имени файла
> >
не понял
> > ============/etc/ppp/ip-up.local=======================
> > #!/bin/sh
> >
> > SCRIPT=/etc/ppp/ip-down.$6
> здесь не опечатка?
> >
Да, опечатка. Я скопировал сюда по ошибке свой ip-down.local.
Впрочем, отличия только в словах up и down.
> >
> > restart_service()
> > {
> > /sbin/service $1 restart &> /dev/null
> а не получится тут разрыв связи модемом?
Ну, зависит от демона. Просто у меня динамический IP по PPTP
соответственно ему выставляется "динамическое" доменное имя.
Некоторые программы (postfix, ntpd) оказались чувствительны к
изменению имени и IP, поэтому им надо делать restart.
> >
> > Соответственно, в ip-up.tunnl_name можно и route делать и всё,
> > что хочешь. А все остальные соединения остаются как есть, так как
> > в /etc/ppp/ip-up.local идёт выбор скрипта по ipparam.
> в примере как-то "обще" и нет ничего об удалении маршрутов
> после опускания туннеля. Но это, конечно, поправимо :-)
Просо мне маршруты не нужны. Мне хватает одного всегда
определённого статического.
> > Единственное что нужно делать -- это использовать ipparam.
> >
> > Т.о. получается, что PPTP-туннель легко делается независимым и не
> > влияющим на остальные PPP-соединения.
> именно этого и надо :-)
> >
> > Ваши замечания?
> получается "новый" /etc/ppp/ip-up.tunnel_name "почти калька" с
> существующего /etc/ppp/peers/__default. Может просто в этот файл и
> добавить необходимые изменения?
> Или существует какая-то иная причина и необходимо отказаться именно от
> /etc/ppp/peers ?
Файл ы /etc/ppp/peers -- это конфигурационные файлы для pppd.
Авторы pptp-command решили в них хранить в комментариях ещё и
информацию для роутинга и т.п. pptp-command просто читает эти
комментарии и делает маршруты. К сожалению, pptp-command имеет
недостатки, которые не позволяют его дальше использовать в
дистрибутиве для старта туннеля, поэтому я и написал новый
скрипт.
Файлы /etc/ppp/ip-up.local и т.п. -- это программы (чаще всего на
языке командного интерпретатора), которые пользователь пишет для
выполнения определённых действий по факту поднятия или падения
определённого PPP-интерфейса.
Так что разница принципиальна: конфиги -- программы.
>
> В принципе все-равно откуда ставить маршруты из /etc/ppp/peers/__default
> или /etc/ppp/ip-up.tunnel_name :-)
> Это не первая и не последняя "переделка"
> В любом случае спасибо за разьяснения.
>
На самом деле есть всё-так нюанс. /etc/init.d/pptptunnel по
умолчанию запускается сразу после /etc/init.d/network. Раньше
можно было гарантировать, что все действия из него (изменение
имени машины, настройка маршрутов и т.п.) будут выполнены до
старта остальных сервисов, например postfix. Теперь же, эту
гарантию дать нельзя, так как скрипт ip-up.tunnel_name
запускается отдельным процессом и pppd не ждёт его завершения. Я
ещё не решил, насколько эта гарантия важна.
--
Юрий А. Зотов
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2003-06-01 6:31 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-30 11:30 [sisyphus] Новый инитскрипт для pptp-client Yura Zotov
2003-05-31 0:14 ` Sergey Plyukhin
2003-05-31 10:52 ` Yura Zotov
2003-06-01 2:00 ` Sergey Plyukhin
2003-06-01 6:31 ` Yura Zotov
ALT Linux Sisyphus discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
public-inbox-index sisyphus
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sisyphus
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git