The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Переключение каналов и cron, !*! feofs, 22-Авг-12, 11:23  [смотреть все]
Добрый день.
Имеется Centos 6.2, два провайдера. Качнул скрипт на переключение каналов при падении одного сhanel_switch.sh вот собственно он:
#! /bin/bash

MAIN=172.18.19.1
SECOND=192.168.35.1

# Получаем текущий роутер по умолчанию.
CURRENT=$(route -n | tail -1 | awk '{ print $2}')

#echo $CURRENT

# Проверяем, пингуется ли основной роутер.
if ping -c4 $MAIN > /dev/null 2>&1; then
# echo "MAIN working"
    # Если пингуется, проверяем, является ли он
    # сейчас роутером по умолчанию.
    if [ $MAIN = $CURRENT ]; then
        # Если да, то просто выходим
        # echo "MAIN current. Exit"
        exit 0
    else
        # Если нет, то меняем маршрут на основной  роуер.
        # echo "MAIN not Current, switch yo MAIN"
        route del default 2> /dev/null
        route add default gw $MAIN
                /etc/sysconfig/provider1_firewall.sh
        echo "Default chanel switched to Provider1: $MAIN" | mail -s "Internet chanel switched to Provider1" ivc@company.com
        logger "Default chanel switched to Provider1: $MAIN"
        # echo "Default chanel switched to Provider1: $MAIN"
        exit 0
    fi
else
  # echo "MAIN not working"
    # Если MAIN не является маршрутом по умолчанию
    # Проверяем, является ли SECOND маршрутом по умолчанию.
    if [ $SECOND = $CURRENT ]; then
        # Если является, то ничего не далаем.
        # echo "Second = Current. Exit"
        exit 0
    else
        # Если не является, то меняем маршрут
        # на вспомогательный роутер/
        # echo "Second not Current. switch to Second"
        route del default 2> /dev/null
                route add default gw $SECOND
        /etc/sysconfig/provider2_firewall.sh
        echo "Default chanel switched to Provider2: $SECOND"| mail -s "Internet chanel switched to Provider2" ivc@company.com
                logger "Default chanel switched to Provider2: $SECOND"
        # echo "Default route switched to SECOND: $SECOND"
                exit 0
    fi
fi

Запускаю вручную
cd /etc/sysconfig
./chanel_switch.sh
Все работает отлично

Поставил в CRON на запуск каждые 5 мин.
*/5 * * * * /etc/sysconfig/chanel_switch.sh
Запускается, при этом стираются все цепочки iptables, не пингуется не LAN не Инет. Причем это только при запуске из CRON, при ручном все ОК. Где проблема не пойму?

  • Переключение каналов и cron, !*! reader, 11:47 , 22-Авг-12 (1)
    наверно в
    /etc/sysconfig/provider1_firewall.sh
    /etc/sysconfig/provider2_firewall.sh
    • Переключение каналов и cron, !*! feofs, 12:22 , 22-Авг-12 (2)
      Вроде не в них, проверял в ручную. Отключал один канал, другой. При двух включенных. Все корректно работает.

      Но вот на всякий случай:
      #!/bin/bash

      echo 0 > /proc/sys/net/ipv4/ip_forward

      /sbin/iptables -F INPUT
      /sbin/iptables -F OUTPUT
      /sbin/iptables -F FORWARD
      /sbin/iptables -F -t nat

      /sbin/iptables -P FORWARD DROP
      /sbin/iptables -P INPUT DROP
      /sbin/iptables -P OUTPUT ACCEPT

      iptables -A INPUT -s 127.0.0.1 -j ACCEPT
      iptables -A OUTPUT -s 127.0.0.1 -j ACCEPT
      iptables -A FORWARD -s 127.0.0.1 -j ACCEPT

      iptables -A INPUT -i eth1 -p tcp -m multiport --dport 25 -j ACCEPT
      iptables -A INPUT -i eth1 -p udp -m multiport --dport 25 -j ACCEPT

      iptables -A INPUT -i eth0 -p tcp -m multiport --dport 110 -j ACCEPT
      iptables -A INPUT -i eth0 -p udp -m multiport --dport 110 -j ACCEPT

      iptables -A INPUT -i eth1 -s 90.94.171.122 -p tcp --dport 110 -j ACCEPT
      iptables -A INPUT -i eth1 -s 90.94.171.122 -p udp --dport 110 -j ACCEPT


      iptables -A INPUT -i eth1 -p tcp -m multiport --dport 110 -j DROP
      iptables -A INPUT -i eth1 -p udp -m multiport --dport 110 -j DROP

      #iptables -A INPUT -i eth2 -p icmp -j ACCEPT
      #iptables -A INPUT -i eth2 -p icmp -j DROP

      iptables -A INPUT -i eth0 -s 192.168.0.0/24 -m state --state NEW -j ACCEPT
      iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

      /sbin/iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 172.18.19.90

      /sbin/iptables -A FORWARD -i eth0 -s 192.168.0.13 -d 94.100.177.4 -j ACCEPT
      /sbin/iptables -A FORWARD -i eth0 -s 192.168.0.13 -d 94.100.184.75 -j ACCEPT

      ###################################################################
      /sbin/iptables -A FORWARD -i eth0 -s 192.168.0.25 -d 94.100.177.4  -j ACCEPT
      /sbin/iptables -A FORWARD -i eth0 -s 192.168.0.25 -d 94.100.184.75  -j ACCEPT

      ###################################################################
      /sbin/iptables -A FORWARD -i eth1 -s 195.149.70.70 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      /sbin/iptables -A FORWARD -i eth1 -s 195.149.70.70 -p udp --sport 500 -j ACCEPT
      /sbin/iptables -A FORWARD -i eth1 -s 195.149.70.70 -p udp --sport 4500 -j ACCEPT
      ##########################################
      /sbin/iptables -A FORWARD -i eth0 -s 192.168.0.101 -d 94.100.177.4 -p tcp --dport 2525 -j ACCEPT
      /sbin/iptables -A FORWARD -i eth0 -s 192.168.0.101 -d 94.100.184.75 -p tcp --dport 110 -j ACCEPT

      ###########################################
      /sbin/iptables -A FORWARD -i eth0 -s 192.168.0.36 -j ACCEPT

      ############################################
      /sbin/iptables -A FORWARD -i eth0 -s 192.168.0.116 -j ACCEPT
      /sbin/iptables -A FORWARD -i eth0 -s 192.168.0.160 -j ACCEPT
      /sbin/iptables -A FORWARD -i eth0 -s 192.168.0.102 -j ACCEPT
      /sbin/iptables -A FORWARD -i eth0 -s 192.168.0.101 -j ACCEPT

      ###################################################################
      /sbin/iptables -A FORWARD -s 192.168.0.6 -o eth1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      /sbin/iptables -A FORWARD -s 192.168.0.6 -o eth1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      /sbin/iptables -A FORWARD -s 192.168.0.160 -o eth1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT


      #Enable ping
      #/sbin/iptables -A INPUT -i eth2 -p icmp -j ACCEPT


      /sbin/iptables -A FORWARD -s 192.168.0.220/32 -i eth0 -p udp --dport 53 -j ACCEPT
      /sbin/iptables -t nat -A PREROUTING -s 192.168.0.220/32 -i eth0 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128


      iptables -A INPUT -i eth0 -p udp --dport 37528 -j ACCEPT
      iptables -A INPUT -i eth1 -p udp --dport 37528 -j ACCEPT
      iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

      /sbin/iptables -A FORWARD -i eth0 -p icmp -s 192.168.0.7 -d 172.18.19.1 -j ACCEPT

      #╨Ф╨╗╤П jabber
      #/sbin/iptables -t nat -A PREROUTING -p tcp -d 172.18.19.90 --dport 5222 -j DNAT --to-destination 192.168.0.2:5222
      #/sbin/iptables -t nat -A PREROUTING -p udp -d 172.18.19.90 --dport 5222 -j DNAT --to-destination 192.168.0.2:5222
      #/sbin/iptables -t nat -A PREROUTING -p tcp -d 172.18.19.90 --dport 5269 -j DNAT --to-destination 192.168.0.2:5269
      #/sbin/iptables -t nat -A PREROUTING -p udp -d 172.18.19.90 --dport 5222 -j DNAT --to-destination 192.168.0.2:5269
      #/sbin/iptables -A FORWARD -p tcp -m multiport --dport 5222,5269 -j ACCEPT
      #/sbin/iptables -A FORWARD -p udp -m multiport --dport 5222,5269 -j ACCEPT

      ############╨Ф╨╗╤П ╨▓╨╕╨┤╨╡╨╛╨╜╨░╨▒╨╗╤О╨┤╨╡╨╜╨╕╤П#########################
      #/sbin/iptables -t nat -A PREROUTING -p tcp -d 172.18.19.90 --dport 6036 -j DNAT --to-destination 192.168.0.224:6036
      #/sbin/iptables -t nat -A PREROUTING -p udp -d 172.18.19.90 --dport 6036 -j DNAT --to-destination 192.168.0.224:6036
      #/sbin/iptables -A FORWARD -p tcp  --dport 6036 -j ACCEPT
      #/sbin/iptables -A FORWARD -p udp  --dport 6036 -j ACCEPT

      #/sbin/iptables -t nat -A PREROUTING -p tcp -d 172.18.19.90 --dport 80 -j DNAT --to-destination 192.168.0.224:80
      #/sbin/iptables -t nat -A PREROUTING -p udp -d 172.18.19.90 --dport 80 -j DNAT --to-destination 192.168.0.224:80
      #/sbin/iptables -A FORWARD -p tcp  --dport 80 -j ACCEPT
      #/sbin/iptables -A FORWARD -p udp  --dport 80 -j ACCEPT


      echo 1 > /proc/sys/net/ipv4/ip_forward


      Второй такой же только eth1 на eth3 изменен и SNAT.
      А вот еще забыл, через CRON при рабочем основном канале, он все равно выполняет условие скрипта к-е должно идти, если основной канал поднялся, но роутинг не еще не прописан:

      # Если нет, то меняем маршрут на основной  роутер.
              # echo "MAIN not Current, switch yo MAIN"
              route del default 2> /dev/null
              route add default gw $MAIN
                          /etc/sysconfig/slavtel_firewall.sh
              echo "Default chanel switched to Provider1: $MAIN" | mail -s "Internet chanel switched to Provider1" ivc@company.com.com
              logger "Default chanel switched to Provider1: $MAIN"
              # echo "Default chanel switched to Provider1: $MAIN"
              exit 0

      При ручном запуске(раз 8 запускал) все нормально, он проверяет что пинги идут на основной и завершает работу ничего не делая.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру