Підняття мережевого інтерфейсу при падінні
Для отримання адреси 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.