Поднятие сетевого интерфейса при падении
Для получения адреса IPv6 на одном из серверов я пользуюсь услугами тунельного брокера gogo6.com. Для подключения к брокеру используется программа gogoc
(gogo client), которая поднимает виртуальный интерфейс tun
для создания туннеля. Но, время от времени, этот интерфейс падает, что делает сервер более не доступным по IPv6 адресу.
Причину падения интерфейса я определил но решил, что оптимальным решением будет перезапускать интерфейс в случае падения. Для этого я написал сценарий на “Shell” проверяющий нужный интерфейс на существование, а в случае отсутствия перезапускающий программу gogoc
. И ещё необходима запись в cron
для запуска этого сценария по расписанию.
Код написан под перезапуск gogoc но может быть легко переделан под другие нужды.
- Name: IfDownTun.sh
- Description: Check and start interface tun if it down
- Language: Shell
#!/bin/sh
#=============================================================#
# Name: IfDownTun #
# Description: Check and start iinterface tun if it down #
# Author: Arthur Gareginyan #
# Author URI: https://www.arthurgareginyan.com #
# License: GNU General Public License, version 3 (GPLv3) #
# License URI: http://www.gnu.org/licenses/gpl-3.0.html #
#=============================================================#
# USAGE:
# chmod +x ./IfDownTun.sh
# sudo ./IfDownTun.sh
# The interface to test
DEVICE='tun'
#TEST_IFACE=`/sbin/ip link show dev $DEVICE >/dev/null 2>/dev/null`
# Check the availability of an interfac
/sbin/ip link show dev $DEVICE >/dev/null 2>/dev/null
# Raising of the interface tun if not raised
if [ "$?" = "1" ] ; then
if [ ! -f /tmp/iface_tun.error ] ; then
echo "$(date '+%F(%H:%M)') iface tun DOWN" >> /var/log/iface_tun.log
touch /tmp/iface_tun.error
fi
killall gogoc ;
service gogoc start ;
sleep 10
# Again checking and recording info in /var/log/iface_tun.log when success
/sbin/ip link show dev $DEVICE >/dev/null 2>/dev/null
if [ "$?" = "0" ] ; then
echo "$(date '+%F(%H:%M)') iface tun UP" >> /var/log/iface_tun.log
rm /tmp/iface_tun.error
exit 0
fi
fi
exit 0
Необходимо дать права на исполнение:
chmod +x IfDownTun.sh
И сделать запись в cron
для автоматического запуска скрипта по расписанию:
sudo nano /etc/crontab
# Test if iface tun is down */3 * * * * root /home/IfDownTun.sh
Сценарий также пишет логи в /var/log/iface_tun.log
. В таком формате:
2014-03-18(02:51) iface tun DOWN 2014-03-19(16:45) iface tun UP 2014-03-19(16:48) iface tun DOWN 2014-03-20(16:21) iface tun UP 2014-03-20(22:57) iface tun DOWN 2014-03-20(22:57) iface tun UP 2014-03-21(14:51) iface tun DOWN 2014-03-21(14:51) iface tun UP
Arthur is a designer and full stack software engineer. He is the founder of Space X-Chimp and the blog My Cyber Universe. His personal website can be found at arthurgareginyan.com.