Jump to content
Калькуляторы

Помогите со скриптом переключения IpSec

Ребята,прошу помощи со скриптом,не пойму-почему не отрабатывает до конца,пробовал думать с пивом-не помогает ))). В общем картина такая,имеется 2 микротика,на каждом из них по 2 провайдера для резевирования канала IpSec,тоесть при потере основных линков в инет скрипт отключает ненужные IpSec каналы и включает нужные. Скрипт работает,но в случае падения основного канала в инет на обоих микротиках он не включает нужный канал именно на центральном микротике,вот его настройки

 

/ip address

add address=192.168.88.1/24 comment="default configuration" interface=ether3-master-local network=192.168.88.0

add address=80.......2/30 disabled=yes interface=ether1-gateway network=80.......0

add address=80.......6/30 interface=ether2-gateway network=80.......4

 

/ip ipsec peer

add address=80.......10/32 nat-traversal=no secret=12345

add address=80.......14/32 nat-traversal=no secret=12345

/ip ipsec policy

set 0 disabled=yes

add disabled=yes dst-address=192.168.89.0/24 ipsec-protocols=ah-esp sa-dst-address=80.......10 sa-src-address=80.......2 src-address=192.168.88.0/24 tunnel=\

yes

add disabled=yes dst-address=192.168.89.0/24 ipsec-protocols=ah-esp sa-dst-address=80.......14 sa-src-address=80.......2 src-address=192.168.88.0/24 tunnel=\

yes

add disabled=yes dst-address=192.168.89.0/24 ipsec-protocols=ah-esp sa-dst-address=80.......10 sa-src-address=80.......6 src-address=192.168.88.0/24 tunnel=\

yes

add disabled=yes dst-address=192.168.89.0/24 ipsec-protocols=ah-esp sa-dst-address=80.......14 sa-src-address=80.......6 src-address=192.168.88.0/24 tunnel=\

yes

 

вот сам скрипт

 

:local PingCount 3

:local Center2 80.......6

:local Center1 80.......2

:local RemoteA 80.......10

:local RemoteB 80.......14

:local StatusA1 [/ping $RemoteA count=$PingCount src-address=$Center1]

:local StatusA2 [/ping $RemoteA count=$PingCount src-address=$Center2]

:local StatusB1 [/ping $RemoteB count=$PingCount src-address=$Center1]

:local StatusB2 [/ping $RemoteB count=$PingCount src-address=$Center2]

:local EnableA1 [:parse (":if ([/ip ipsec policy get [find sa-src-address=$Center1 sa-dst-address=$RemoteA] disabled]=true) do={/ip ipsec policy set [find sa-src-address=$Center1 sa-dst-address=$RemoteA] disabled=no}")];

:local DisableA1 [:parse (":if ([/ip ipsec policy get [find sa-src-address=$Center1 sa-dst-address=$RemoteA] disabled]=false) do={/ip ipsec policy set [find sa-src-address=$Center1 sa-dst-address=$RemoteA] disabled=yes}")];

:local EnableA2 [:parse (":if ([/ip ipsec policy get [find sa-src-address=$Center2 sa-dst-address=$RemoteA] disabled]=true) do={/ip ipsec policy set [find sa-src-address=$Center2 sa-dst-address=$RemoteA] disabled=no}")];

:local DisableA2 [:parse (":if ([/ip ipsec policy get [find sa-src-address=$Center2 sa-dst-address=$RemoteA] disabled]=false) do={/ip ipsec policy set [find sa-src-address=$Center2 sa-dst-address=$RemoteA] disabled=yes}")];

:local EnableB1 [:parse (":if ([/ip ipsec policy get [find sa-src-address=$Center1 sa-dst-address=$RemoteB] disabled]=true) do={/ip ipsec policy set [find sa-src-address=$Center1 sa-dst-address=$RemoteB] disabled=no}")];

:local DisableB1 [:parse (":if ([/ip ipsec policy get [find sa-src-address=$Center1 sa-dst-address=$RemoteB] disabled]=false) do={/ip ipsec policy set [find sa-src-address=$Center1 sa-dst-address=$RemoteB] disabled=yes}")];

:local EnableB2 [:parse (":if ([/ip ipsec policy get [find sa-src-address=$Center2 sa-dst-address=6$RemoteB] disabled]=true) do={/ip ipsec policy set [find sa-src-address=$Center2 sa-dst-address=$RemoteB] disabled=no}")];

:local DisableB2 [:parse (":if ([/ip ipsec policy get [find sa-src-address=$Center2 sa-dst-address=$RemoteB] disabled]=false) do={/ip ipsec policy set [find sa-src-address=$Center2 sa-dst-address=$RemoteB] disabled=yes}")];

:if ($StatusA1>0) do={

$DisableA2;

$DisableB1;

$DisableB2;

delay 2;

:put "A1"

$EnableA1;

}

:if (($StatusA1=0)&&($StatusA2>0)) do={

:put "A2"

$DisableA1;

$DisableB1;

$DisableB2;

delay 2;

$EnableA2;

:put "A2"

}

:if (($StatusA1=0)&&($StatusA2=0)&&($StatusB1>0)) do={

:put "B1"

$DisableA1;

$DisableA2;

$DisableB2;

delay 2;

$EnableB1;

:put "B1"

}

:if (($StatusA1=0)&&($StatusA2=0)&&($StatusB1=0)&&($StatusB2>0)) do={

$DisableA1;

$DisableA2;

$DisableB1;

delay 2;

$EnableB2;

:put "B2"

}

 

тоесть когда на центральном микротике остается в работе только интерфейс 80.......6 а на удаленном 80.......14 скрипт должен включить

/ip ipsec policy

add disabled=yes dst-address=192.168.89.0/24 ipsec-protocols=ah-esp sa-dst-address=80.......14 sa-src-address=80.......6 src-address=192.168.88.0/24 tunnel=\

yes

 

но он этого не делает (((

в чем может быть дело?

Share this post


Link to post
Share on other sites

Сначала ответьте, зачем отключать не нужные каналы?

если оставлять все включеные микротик начинает временами отправлять трафик на нерабочие каналы IpSec,да и при диагностики проблем так будет проще...

Share this post


Link to post
Share on other sites

Сначала ответьте, зачем отключать не нужные каналы?

 

если оставлять все включеные микротик начинает временами отправлять трафик на нерабочие каналы IpSec,да и при диагностики проблем так будет проще...

 

 

эээ, тунели, OSPF? что за велосипед придумали?

Share this post


Link to post
Share on other sites

Сначала ответьте, зачем отключать не нужные каналы?

 

если оставлять все включеные микротик начинает временами отправлять трафик на нерабочие каналы IpSec,да и при диагностики проблем так будет проще...

 

 

эээ, тунели, OSPF? что за велосипед придумали?

 

++ я о том же. Сделайте нормальный дизайн и не городите ерунды со скриптами.

Share this post


Link to post
Share on other sites

Притом, что каналы отключать _НЕ НАДО_. Вообще. Это глупый костыль.

Может я что то не длгоняю,или что то неправильно объяснил.... каким тогда образом микротику понять,через какой именно IpSec в данной ситуации отправлять трафик?

Share this post


Link to post
Share on other sites

Притом, что каналы отключать _НЕ НАДО_. Вообще. Это глупый костыль.

Может я что то не длгоняю,или что то неправильно объяснил.... каким тогда образом микротику понять,через какой именно IpSec в данной ситуации отправлять трафик?

Ответили же.

IPSec в траспортном режиме, а поверх любой туннель на выбор: ipip gre eoip... А в них уже запустить ospf. Все будет красиво и _правильно_ отрабатывать само при любом падении. И не надо чудовищных костылей.

Share this post


Link to post
Share on other sites

Ответили же.

IPSec в траспортном режиме, а поверх любой туннель на выбор: ipip gre eoip... А в них уже запустить ospf. Все будет красиво и _правильно_ отрабатывать само при любом падении. И не надо чудовищных костылей.

 

Спасибо,идею понял,сейчас буду пережевывать и строить макет )))

Share this post


Link to post
Share on other sites

Ответили же.

IPSec в траспортном режиме, а поверх любой туннель на выбор: ipip gre eoip... А в них уже запустить ospf. Все будет красиво и _правильно_ отрабатывать само при любом падении. И не надо чудовищных костылей.

 

Спасибо,идею понял,сейчас буду пережевывать и строить макет )))

 

Да что там пережевывать, вот готовый конфиг, IP свои подставьте и все

 /interface gre add name="gre_1" mtu=1400 local-address=3.3.3.3 remote-address=1.1.1.1 
/interface gre add name="gre_2" mtu=1400 local-address=4.4.4.4 remote-address=2.2.2.2 

/ip address add address=172.16.1.2/30 interface=gre_1
/ip address add address=172.16.1.6/30 interface=gre_2

/ip route add dst-address=1.1.1.1/32 gateway=3.3.3.1 check-gateway=ping distance=1 
/ip route add dst-address=2.2.2.2/32 gateway=4.4.4.1 check-gateway=ping distance=1

/ip ipsec proposal add name="AES-128" auth-algorithms=md5 enc-algorithms=aes-128-cbc lifetime=8m20s pfs-group=none

/ip ipsec policy add src-address=3.3.3.3/32 src-port=any dst-address=1.1.1.1/32 dst-port=any protocol=all action=encrypt level=require ipsec-protocols=esp tunnel=no sa-src-address=3.3.3.3 sa-dst-address=1.1.1.1 proposal=AES-128 priority=10 
/ip ipsec policy add src-address=4.4.4.4/32 src-port=any dst-address=2.2.2.2/32 dst-port=any protocol=all action=encrypt level=require ipsec-protocols=esp tunnel=no sa-src-address=4.4.4.4 sa-dst-address=2.2.2.2 proposal=AES-128 priority=10 

/ip ipsec peer add  address=1.1.1.1/32 passive=no port=500 auth-method=pre-shared-key secret="KEY" generate-policy=port-override exchange-mode=main send-initial-contact=yes nat-traversal=no proposal-check=obey hash-algorithm=sha1 enc-algorithm=3des dh-group=modp1024 lifetime=8m20s lifebytes=0 dpd-interval=disable-dpd dpd-maximum-failures=10 

/ip ipsec peer add  address=2.2.2.2/32 passive=no port=500 auth-method=pre-shared-key secret="KEY" generate-policy=port-override exchange-mode=main send-initial-contact=yes nat-traversal=no proposal-check=obey hash-algorithm=sha1 enc-algorithm=3des dh-group=modp1024 lifetime=8m20s lifebytes=0 dpd-interval=disable-dpd dpd-maximum-failures=10


routing ospf instance disable 0
/routing ospf instance add name=XXX router-id=10.0.1.1 distribute-default=never redistribute-connected=no redistribute-static=no

/routing ospf area disable 0
/routing ospf area add name=XXX instance=XXX type=default area-id=10.0.0.0


routing ospf interface add interface=gre_1 cost=10 priority=0 authentication=none authentication-key="" authentication-key-id=1 network-type=point-to-point instance-id=0 retransmit-interval=5s transmit-delay=1s hello-interval=10s dead-interval=40s use-bfd=no
/routing ospf interface add  interface=gre_2 cost=40 priority=0 authentication=none authentication-key="" authentication-key-id=1 network-type=point-to-point instance-id=0 retransmit-interval=5s transmit-delay=1s hello-interval=10s dead-interval=40s use-bfd=no

/routing ospf network add network=172.16.1.0/30 area=XXX
/routing ospf network add network=172.16.1.4/30 area=XXX
/routing ospf network add network=10.0.1.0/24 area=XXX

Share this post


Link to post
Share on other sites

в моем случае

/interface gre

add !keepalive local-address=3.3.3.3 mtu=1400 name=gre_1 remote-address=1.1.1.1

add !keepalive local-address=4.4.4.4 mtu=1400 name=gre_2 remote-address=1.1.1.1

add !keepalive local-address=3.3.3.3 mtu=1400 name=gre_3 remote-address=2.2.2.2

add !keepalive local-address=4.4.4.4 mtu=1400 name=gre_4 remote-address=2.2.2.2

/ip ipsec proposal

add auth-algorithms=md5 lifetime=8m20s name=AES-128 pfs-group=none

/routing ospf area

set [ find default=yes ] disabled=yes

/routing ospf instance

set [ find default=yes ] disabled=yes

add name=ospf1-instance router-id=192.168.100.1

/routing ospf area

add area-id=192.168.0.0 instance=ospf1-instance name=area1

/ip address

add address=192.168.100.1/24 interface=ether3-master-local network=192.168.100.0

add address=172.16.1.2/30 interface=gre_1 network=172.16.1.0

add address=172.16.1.6/30 interface=gre_2 network=172.16.1.4

add address=172.16.1.10/30 interface=gre_3 network=172.16.1.8

add address=172.16.1.14/30 interface=gre_4 network=172.16.1.12

 

/routing ospf interface

add interface=gre_1 network-type=point-to-point priority=0

add cost=40 interface=gre_2 network-type=point-to-point priority=0

add cost=100 interface=gre_3 network-type=point-to-point priority=0

add cost=200 interface=gre_4 network-type=point-to-point priority=0

/routing ospf network

add area=area1 network=192.168.100.0/24

add area=area1 network=172.16.1.0/30

add area=area1 network=172.16.1.4/30

add area=area1 network=172.16.1.8/30

add area=area1 network=172.16.1.12/30

 

Все работает,все 4 канала переключаются согласно стоймости маршрута,но как только я начинаю делаю 4 ipsec в транспортном режиме

 

/ip ipsec peer add address=1.1.1.1 passive=no port=500 auth-method=pre-shared-key secret=12345 generate-policy=port-override exchange-mode=main send-initial-contact=yes nat-traversal=no proposal-check=obey hash-algorithm=sha1 enc-algorithm=3des dh-group=modp1024 lifetime=8m20s lifebytes=0 dpd-interval=disable-dpd dpd-maximum-failures=10

/ip ipsec peer add address=2.2.2.2 passive=no port=500 auth-method=pre-shared-key secret=12345 generate-policy=port-override exchange-mode=main send-initial-contact=yes nat-traversal=no proposal-check=obey hash-algorithm=sha1 enc-algorithm=3des dh-group=modp1024 lifetime=8m20s lifebytes=0 dpd-interval=disable-dpd dpd-maximum-failures=10

 

/ip ipsec policy add src-address=3.3.3.3 src-port=any dst-address=1.1.1.1 dst-port=any protocol=all action=encrypt level=require ipsec-protocols=esp tunnel=no sa-src-address=3.3.3.3 sa-dst-address=1.1.1.1 proposal=AES-128 priority=10

/ip ipsec policy add src-address=4.4.4.4 src-port=any dst-address=1.1.1.1 dst-port=any protocol=all action=encrypt level=require ipsec-protocols=esp tunnel=no sa-src-address=4.4.4.4 sa-dst-address=1.1.1.1 proposal=AES-128 priority=10

/ip ipsec policy add src-address=3.3.3.3 src-port=any dst-address=2.2.2.2 dst-port=any protocol=all action=encrypt level=require ipsec-protocols=esp tunnel=no sa-src-address=3.3.3.3 sa-dst-address=2.2.2.2 proposal=AES-128 priority=10

/ip ipsec policy add src-address=4.4.4.4 src-port=any dst-address=2.2.2.2 dst-port=any protocol=all action=encrypt level=require ipsec-protocols=esp tunnel=no sa-src-address=4.4.4.4 sa-dst-address=2.2.2.2 proposal=AES-128 priority=10

 

отрабатывают только gre_1 и gre_4..... gre_2 gre_3 никак не хотят связываться с шифрованием....

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.