Главная > Freebsd > Скрипт маршрута при падении vpn

Скрипт маршрута при падении vpn

1 582

Есть офис(192.168.3/24) и есть регион(192.168.4/24), связь между ними налажена посредством vpn mpd. Обе машинки на freebsd, обе являются шлюзами для своих подсетей. Сервер-офис, а регион клиент. Почему так? потому что к офису подключаются еще и рабочие станции из вне.
Связь со стороны региона отвратительный dial-up 256. На этой скорости сидят офисные компутиры.

 

 
Вот так поднялся туннель:

ng0: flags=88d1 metric 0 mtu 1460
        inet 192.168.3.202 --> 192.168.3.230 netmask 0xffffffff

Понятно, что сам канал vpn часто рвется. Но лучше так, чем никак, ибо в регионе есть контроллер домена, что важно. Проблема заключалась в том, что после поднятия канала между офисом и регионом прописывался маршрут, который не должен был прописываться средствами mpd (up-скрипт). Поэтому набросал такой скрипт и засунул в крон:

 

#!/usr/bin/perl

use Net::Ping;

$b_bsd="192.168.4.1";
$b_vpn="192.168.3.230";

sub ping_server
{
$host_alive=1;
$ping=Net::Ping->new('icmp');
if( $ping->ping($_[0]) ) { $host_alive=1;}
 else  {$host_alive=0;}
return $host_alive;
}

if(!ping_server($b_bsd))
    {
    # Если нет пинга на 192.168.4.1, то  пингуем 192.168.3.230:
    if(!ping_server($b_vpn))
    {
    system("echo `date` NO CONNECT to регион  >> /var/log/b.log");
    }
    else
    {
    system("/sbin/route delete 192.168.4/24 192.168.3.230");
    system("/sbin/route add 192.168.4/24 192.168.3.230");
    system("echo `date` REWRITE route to регион  >> /var/log/b.log");
    }
    exit;

    }
else {
    # Если есть пинг 192.168.4.1 , то все ОК
    # Log messages
    system("echo `date` VPN whis регион works ok! >> /var/log/b.log");
}

exit;
Categories: Freebsd Tags: , , ,
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.

.