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

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

<a href="http://www.linuxetc.ru/?p=10" class="forlinuxetc">(Оригинал написан для linuxetc.ru)</a> Тем, кто использует pppd для получения интернета через pptp или ppoe, наверняка знакома ситуация, когда, несмотря на опции persist и maxfile, соединение исчезает и не восстанавливается. Для таких тяжелых случаев я применяю следующую систему.

<!--break-->

<hr />
<h3>Настройка интернета через pptp</h3>
Интернет от провайдера я получаю через pptp.
<blockquote> emerge pptp</blockquote>
в /etc/conf.d/net следующее:
<blockquote> 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"
)</blockquote>
Сразу после поднятия сетевого интерфейса отрабатывается /etc/ppp/p-up.local:
<blockquote> #!/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;</blockquote>
После опускания, соответственно, /etc/ppp/p-down.local:
<blockquote> #!/bin/bash

if [ $1 == "ppp0" ]; then
route del default gw 82.138.52.137 ppp0
fi;</blockquote>
Финальная часть настройки самого интернета:
<blockquote> ln -s /etc/init.d/net /etc/init.d/net.ppp0</blockquote>
<hr />
<h3>Запуск и удержание интернета</h3>
Скрипт /usr/local/sbin/check_internet:
<blockquote> #!/bin/bash

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

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

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

/usr/local/sbin/restart_internet</blockquote>
...проверка [ -z $CRONTAB ] в скрипте служит для вывода сообщений при
запуске из комстроки.

Скрипт /usr/local/sbin/restart_internet:
<blockquote> #!/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 нормально поднялся</blockquote>
Выдержка из crontab -l :
<blockquote> CRONTAB=1

*/1 * * * * /usr/local/sbin/check_internet</blockquote>

Add new comment

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.