Skip to content

Запуск и удержание интернета

Запуск и удержание интернета published on Комментариев к записи Запуск и удержание интернета нет

Тем, кто использует pppd для получения интернета через pptp или ppoe, наверняка знакома ситуация, когда, несмотря на опции persist и maxfile, соединение исчезает и не восстанавливается. Для таких тяжелых случаев я применяю следующую систему.


Интернет от провайдера я получаю через pptp.

emerge pptp

в /etc/conf.d/net следующее:

config_ppp0=( “ppp” )

username_ppp0=’ww’
password_ppp0=’xxxx’
pppd_ppp0=(
“lock”
“asyncmap 0″
“crtscts”
“defaultroute”
“debug”
“persist”
“noauth”
“nobsdcomp”
“nodeflate”
“require-mppe”
“lcp-echo-failure 10″
“lcp-echo-interval 10″
)

Сразу после поднятия сетевого интерфейса отрабатывается /etc/ppp/p-up.local:

#!/bin/bash

if [ $1 == “ppp0″ ]; then
# это роутинг в мою локалку мимо ppp0
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.5.7
route del default

# 82.138.52.137 — remote ip в ppp0 туннеле.
route add default gw 82.138.52.137 ppp0
fi;

После опускания, соответственно, /etc/ppp/p-down.local:

#!/bin/bash

if [ $1 == “ppp0″ ]; then
route del default gw 82.138.52.137 ppp0
fi;

Финальная часть настройки самого интернета:

ln -s /etc/init.d/net /etc/init.d/net.ppp0


Скрипт /usr/local/sbin/check_internet:

#!/bin/bash

# проверяем, не запущен ли другой экземпляр скрипта…
[ -z $CRONTAB ] && echo “Проверка на дубль”
[[ “2″ -ne `ps aux | grep -c check_internet` ]] && exit

# проверяем наличие интернета — пытаемся получитьь страницу ya.ru
[ -z $CRONTAB ] && echo “Проверка интернета”
if [[ 0 < `wget –quiet –timeout=10 –tries=2 -O — ya.ru| grep -c ‘http://www.yandex.ru/yandsearch’` ]]; then
exit
fi

# насколько можно судить, в этот момент интернета нет

/usr/local/sbin/restart_internet

…проверка [ -z $CRONTAB ] в скрипте служит для вывода сообщений при
запуске из комстроки.

Скрипт /usr/local/sbin/restart_internet:

#!/bin/bash

# полный останов всех сетевых служб
/usr/sbin/vserver mainvshost stop
/etc/init.d/ipsec stop
/etc/init.d/ipsec zap # бывает, что “залипает” в started статусе…
/sbin/ifconfig ipsec0 down
/etc/init.d/heartbeat stop
/etc/init.d/drbd stop
/etc/init.d/net.ppp0 stop
/usr/bin/killall -9 pppd
sleep 5

#начинаем поднимать обратно…
/etc/init.d/net.ppp0 start
sleep 20

if [[ 0 == `/sbin/route -n|grep -c ppp0` ]]; then
echo “Неудача…”
exit
fi

# насколько можно судить, в этот момент ppp0 нормально поднялся

Выдержка из crontab -l :

CRONTAB=1

*/1 * * * * /usr/local/sbin/check_internet

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Primary Sidebar