Corbina vs Arch Помогите настроить VPN

Вобщем, помудрил с кроном тут… Возможно сделал топорно, но вроде отрабатывает на выдёргивание кабеля и т.п. Если предложите более изящный вариант, буду рад. А то с кроном впервые столкнулся, там подглядел, сям подтырил…
1.
# touch /etc/cron.daily/cheknet
# nano /etc/cron.daily/cheknet
#!/bin/sh
ping -c 1 -w 10 tp.corbina.net > /dev/null || /etc/rc.d/network restart
# chmod 744 /etc/cron.daily/cheknet

2.
запуск каждые 5 мин.
# touch /etc/cheknetcron
# nano /etc/cheknetcron
*/5 * * * * /usr/sbin/run-cron /etc/cron.daily

3.
указать crontab'у файл с расписанием:
# crontab /etc/cheknetcron

4.
# /etc/rc.d/crond restart

ну и проверить, добавлен ли crond в /etc/rc.conf:
DAEMONS=(syslog-ng network ... @crond ... )
Вобщем, смысл сих махинаций наверно понятен: если у корбины отваливаются dns-сервера (а как раз этим она славится) или просто передёргиваете кабель (неизвестно для чего), то тут /etc/rc.d/xl2tpd restart что мёртвому припарки. Надо network переподнимать. Можно что-то наваять, по образу и подобию и для того случая, когда просто ppp0 падает и не собирается передёргиваться по lcp-echo-interval 10 и lcp-echo-failure 2 в /etc/ppp/options.xl2tpd
Ещё косяк: если рестартится network, то xl2tpd тоже отваливается. Хотя, раз выдернул кабель, подождал секунд 5-10, вставил обратно, сеть поднялась, ppp0 на месте, инет есть. Вобщем, разбираться ещё надо.

Есть шероховатость и в логе, но пока не знаю, важно ли это и что делать, если важно:
cat /var/log/crond.log
Oct 21 03:15:01 localhost crond[4328]: FILE /var/spool/cron/root USER root PID 6827 /usr/sbin/run-cron /etc/cron.daily
Oct 21 03:16:25 localhost crond[7040]: mailing cron output for user root /usr/sbin/run-cron /etc/cron.daily
Oct 21 03:16:25 localhost crond[7040]: unable to exec /usr/sbin/sendmail: cron output for user root /usr/sbin/run-cron /etc/cron.daily to /dev/null
Пока всё.
bobart
Я так понял у вас тоже не все идеально? xl2tpd перезванивает сам или нет? в логах есть gethostbyname?
unable to exec /usr/sbin/sendmail: cron output for user root /usr/sbin/run-cron /etc/cron.daily to /dev/null
локальную почту он хотел отправить руту, sendmail может быть нет а можт еще что
Тот скрипт что я выложил тоже работает, думаю не составит большого труда заменить там команду на network restart.
Все это костыли, нужен кто то кто сможет пакеты нормально собрать, и обьяснит по поводу поддержки l2tp в ядре арча
Привет, у меня тоже не всё идеально, но мы над этим работаем.)
ps/ Про почту я понял. “gethostbyname” в логах нет.

PS. Метод тыка привёл к такому скрипту, проверил, отрабатывает нормально, поставил в cron.daily - посмотрим…
Кабель выдернут/вдёрнут: сеть рестартится и поднимается скриптом. Повторный запуск: если пинг до 8.8.8.8 возвращает 1: просто отрабатывает и завершается без передёргивания xl2tpd. Если отваливается ppp0, а локалка жива, то скрипт, по-любому, должен отработать xl2tpd restart.
#!/bin/sh
ping -c 1 -w 10 tp.corbina.net > /dev/null || /etc/rc.d/network restart && 
checknet=`ping -c 1 8.8.8.8 |grep icmp_ |wc -l`
if [ ! $checknet = 1 ]
then
  /etc/rc.d/xl2tpd restart
fi
exit 0
Чтобы работало от пользователя, надо разрешить выполнение этих команд в /etc/sudoers, типа:
bob   arch=NOPASSWD: /etc/rc.d/network
bob   arch=NOPASSWD: /etc/rc.d/xl2tpd
ps/ Подчистил на пред. странице своё сообщение: выкинул лог (неактуально) и поправил директорию для ip-up-route.sh, чтобы не было путаницы. Вобщем, готовый, рабочий конфиг + скрипт в cron для проверки сетевой активности.

Да, вот ещё: уважаемый PoZiTPoH заделал та-а-кой скриптище, для проверки сетевой активности! С “выражениями” в адрес корбины в notifications, одним словом, момент подмечен тонко. Если хорошо попросите, он вам ссылку на него предоставит, для тестирования. А я пока буду осознавать его произведение, втихаря.
bobart
исправили таки)) там все было нормально.
1 в данном случае это сколько откликов на пинг он должен получить или не получить чтобы перезапустить/не перезапустить соединение. еще ! не хватало
bob arch=NOPASSWD: /etc/rc.d/network
bob arch=NOPASSWD: /etc/rc.d/xl2tpd
разумеется, arch в данном случае что? имя хоста? а если через ssh я команду даю?
bob ALL= NOPASSWD: /etc/rc.d/xl2tpd и еще зачем в две строки? можно же так
bob ALL= NOPASSWD: /etc/rc.d/xl2tpd,/sbin/reboot,/etc/rc.d/network
По поводу ifplugd, в deb была такая опция для интерфейса allow hot-plug вродебы вот она и влияла на поведение при включенном-выключенном кабеле.
Да, вот ещё: уважаемый PoZiTPoH заделал та-а-кой скриптище, для проверки сетевой активности! С “выражениями” в адрес корбины в notifications, одним словом, момент подмечен тонко. Если хорошо попросите, он вам ссылку на него предоставит, для тестирования. А я пока буду осознавать его произведение, втихаря.
))это для тех кто софт пишет под линукс полезно, тут нужен кто то кто соберет этот хренов xl2tpd с наложенным патчем gethostbyname вот и все.
и еще bobart раз вы сейчас “в теме” написали бы в русскую вики статью о настройке xl2tpd
vs - оно и так, и так работало, пинга нет - ответ “0”, но решил сделать как у вас. Не спец я в вопросе. По-всякому делал и есстественно, сначала скрипт просто в терминале выполнял и смотрел вывод. Но не суть.
Насчёт SSH - я сделал так, как нужно мне, в том-то и дело, что не претендую на универсальное решение. Доступность только для моего хоста. Всё.
bob arch= NOPASSWD: /etc/rc.d/xl2tpd,/sbin/reboot,/etc/rc.d/network,/etc… - тоже не суть=)

Если вы в дебиане имели дело с этим, возьмите исходники, возьмите дебиановский патч gethostbyname и попробуйте пересобрать. Тут такое дело, не знаю, кому кроме вас, меня и тех немногих, кто использует xl2tpd это нужно. Никто не будет пересобирать. Если вы в теме - почему-бы и нет? Есть ABS, есть оф. сайт, откуда этот xl2tpd берётся и собирается, есть сорцы и деб.патч.
Найдите все необходимые ингредиенты, сообщите, давайте вместе смотреть. Не, серьёзно, если хотите что-то сдвинуть - двиньте сами и народ за вами потянется)
С вики пока обождём, да? - пусть тема устаканится.
bobart
vs - оно и так, и так работало, пинга нет - ответ “0”
Это про exitcode ping'a? Если да, то когда нету пинга - exitcode 1. Нулевой - это когда программа (любая) отработала нормально, без ошибок ;)
В данном случае речь не о том.

Соединение есть:
bob@arch:~$ ping -c 1 8.8.8.8 |grep icmp_ |wc -l
1
bob@arch:~$ ping -c 1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=53 time=52.5 ms
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 52.547/52.547/52.547/0.000 ms

Если пинг не прошёл, выдаст “… icmp_seq=0 …”
Соединения нет:
$ ping -c 1 8.8.8.8 |grep icmp_ |wc -l
0
mithrusc, http://wiki.archlinux.org/index.php/Con … ifplugd.27
Ifplugd 
Вы можете установить демон, который будет автоматически настраивать вашу сеть, когда воткнут кабель, и возвращать её в исходное состояние, когда кабель выдернут. Это полезно для лаптопов с внутренними сетевыми адаптерами, так как демон настроит интерфейс только тогда, когда кабель действительно подключён. Также можно его использовать, когда надо перезапустить сеть, но вы не хотите перезапускать компьютер или делать это из оболочки. 
Установка очень проста, так как пакет находится в [extra]: 
# pacman -S ifplugd
По умолчанию он настроен на работу с интрфейсом eth0. Эта и другие настройки, например задержка, могут быть настроены в /etc/ifplugd/ifplugd.conf. 
Запустите его: 
# /etc/rc.d/ifplugd start
или добавьте в список DAEMONS в /etc/rc.conf
bobart
Если пинг не прошёл, выдаст “… icmp_seq=0 …”
Соединения нет:
$ ping -c 1 8.8.8.8 |grep icmp_ |wc -l
0
Советую уже почитать про exitcodes (return codes) - намного удобнее будет, ибо 0 - это всегда удачное завершение программы, а <> 0 - неудачное. Очень удобно для скриптинга. Так что как бы лень не было - но почитай ;)

И да - соединение может быть нестабильным. То есть первый раз пинг прошел, а вот последующие несколько - нет. Поэтому не вижу смысла ставить меньше -c 4.
И да - соединение может быть нестабильным. То есть первый раз пинг прошел, а вот последующие несколько - нет. Поэтому не вижу смысла ставить меньше -c 4.
Тоже об этом подумывал, ага)
exitcodes - прислушаюсь, спасибо. Меня несколько смущает сама идея строить правило на основе пинга, в данном случае.
Строить его на основе route -n |grep ^0.0.0.0 | awk ‘{ print $2 }’ (например) - тоже сомнительно. Вобщем, да увеличить пинг до 4, пожалуй, верно. Сейчас 3 - вчера изменил;)

ps/
#!/bin/sh
ping -c 4 -w 10 tp.corbina.net > /dev/null || /etc/rc.d/network restart &&  
ping -c4 8.8.8.8 &> /dev/null
if [ ! $? -eq 0 ]
then
  /etc/rc.d/xl2tpd restart
fi
exit 0
пока так.
 
Зарегистрироваться или войдите чтобы оставить сообщение.