Нередко провайдеры интернета раздают его своим клиентам посредством VPN. И у новичков линукса это способно вызвать ряд вопросов и немалую головную боль... таким горемыкам будет полезен описанный ниже скрипт.
Итак, забираем этот скрипт и редактируем секцию
network settings под себя:
Code:
#!/bin/sh
#
# fix broken path
#
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:.
export PATH
#
# network settings
#
USER=ВАШ_ЛОГИН_НА_VPN
NETWORK=192.168.0.0 // настроить на для своей сети
NETMASK=255.255.255.0 // обычно вроде такая и останется
VPNSERVER=192.168.0.253 // Смените на ваш адрес vpn-сервера
GATEWAY=192.168.55.253 // Указать свой
DEVICE=eth0 // если нужно, то тоже сменить
#
# vpn stuff
#
PPPD=/usr/sbin/pppd
PPTP=/usr/sbin/pptp
if [ ! -x $PPPD ]; then
echo «$0: $PPPD not found»
exit 1
fi
if [ ! -x $PPTP ]; then
echo «$0: $PPTP not found»
exit 1
fi
#
# here we go
#
case «$1» in
start)
if [ ! -d /var/run/pptp ]; then
mkdir /var/run/pptp
fi
if [ -f /var/run/pptp/remote ]; then
if ping -vc1 'cat /var/run/pptp/remote'; then
exit 1
fi
killall -HUP pptp
killall -TERM pppd
sleep 2
fi
rm -rf /var/run/pptp/* >/dev/null
route del default
route add -net $NETWORK netmask $NETMASK gw $GATEWAY dev $DEVICE
echo -n «===> Starting vpn: »
($PPTP $VPNSERVER defaultroute noauth user $USER && \
echo -n «done») || echo -n «failed»
echo
;;
stop)
echo -n «===> Stopping vpn: »
killall -HUP pptp
killall -TERM pppd
sleep 2
rm /var/run/pptp/* >/dev/null
route del -net $NETWORK netmask $NETMASK gw $GATEWAY dev $DEVICE
route add default gw $GATEWAY dev $DEVICE
echo «done»
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo «*** Usage: vpn {start|stop|restart}»
exit 1
;;
esac
exit 0
Помещаем измененный скрипт в /usr/bin/, сделав его исполняемым. После чего остается только отредактировать файл
/etc/ppp/chap-secrets, который должен иметь следующий вид:
Следует заметить, что файл
/etc/ppp/options не должен содержать никаких записей. Запускаем подключение от root'а набираем
Code:
$ /usr/bin/vpn start
видим следующее:
Code:
===> Starting vpn: done
Теперь у нас все работает, а отключаем вот так:
Code:
$ /usr/bin/vpn stop
получаем напоследок:
Code:
===> Stopping vpn: done