рд╣рд╛рд▓ рдХреЗ рджрд┐рдиреЛрдВ рдореЗрдВ, рдПрдбреАрдПрд╕рдПрд▓ рд╕реЗ рдИрдерд░рдиреЗрдЯ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдорд┐рдХрд░реЛрдЯрд┐рдХ рд╕реЗ рдЙрдкрдХрд░рдг рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рдЕрд╡рд╕рд░ рдерд╛ред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ,
RB750GL рд░рд╛рдЙрдЯрд░ рдЦрд░реАрджрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЛрд╣реЗ рдХрд╛ рдЯреБрдХрдбрд╝рд╛ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рджреЛрдиреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрддреНрдХреГрд╖реНрдЯ рдирд┐рдХрд▓рд╛ред
рдирддреАрдЬрддрди, рдореИрдВрдиреЗ рджреЛрдиреЛрдВ рдЪреИрдирд▓реЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдмреИрдХрдЕрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдорд╛рдирдХ рдЧреЗрдЯрд╡реЗ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдЯреВрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
1. Nhernink Ehernet рдЪреИрдирд▓ рд░рд╛рдЙрдЯрд░ рдХреЗ рдкрд╣рд▓реЗ рдкреЛрд░реНрдЯ рдореЗрдВ рдкреНрд▓рдЧ рдХрд░рддрд╛ рд╣реИ, IP рдХреЛ рдбреАрдПрдЪрд╕реАрдкреА рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ npt рдирд╛рдордХ рдПрдХ pptp рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЪреБрдирддрд╛ рд╣реИред рдпрд╣ рдореБрдЦреНрдп рдХрдиреЗрдХреНрд╢рди рд╣реЛрдЧрд╛ред
2. рдбреЛрдореЛрд▓рд┐рдВрдХ рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдПрдбреАрдПрд╕рдПрд▓ рдЪреИрдирд▓ рдкреБрд▓ рдореЛрдб рдореЗрдВ рдбреАрд▓рд┐рдВрдХ -2500 рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ рдФрд░ рд░рд╛рдЙрдЯрд░ рдХреЗ рджреВрд╕рд░реЗ рдкреЛрд░реНрдЯ рдореЗрдВ рдЪрд┐рдкрдХ рдЬрд╛рддрд╛ рд╣реИ, рдбреЛрдордкреЛрд▓рд┐рдВрдХ рдирд╛рдордХ рдПрдХ рдкрдкреНрдкреА рдХрдиреЗрдХреНрд╢рди рдКрдкрд░ рдЙрдарддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдмреИрдХрдЕрдк рдХрдиреЗрдХреНрд╢рди рд╣реЛрдЧрд╛ред
3. рд░рд╛рдЙрдЯрд░ рдХреЗ рдкреЛрд░реНрдЯ 3-5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд░рд╛рдЙрдЯрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕
рдПрдХ рд╕реНрдерд╛рдиреАрдп рдХреНрд╖реЗрддреНрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдФрд░ рдорд╕реНрдХрд╛рд░рд┐рдВрдЧ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рддреБрдЪреНрдЫ рд╣реИ рдФрд░
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд┐рдХреА рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдкреАрдкреАрдкреА рдХрдиреЗрдХреНрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рд╡рд┐рднрд┐рдиреНрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рдЙрдкрдпреБрдХреНрдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдереИрддрд┐рдХ рдорд╛рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ:
/ip route
add comment=MainGW disabled=no distance=1 dst-address=0.0.0.0/0 gateway=nlink scope=30 target-scope=10
add comment=RsrvGW disabled=no distance=2 dst-address=0.0.0.0/0 gateway=domolink scope=30 target-scope=10
рдЕрдм, рдЪреИрдирд▓ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рджреВрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдмрджрд▓реЗрдВред рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдлрд╝рд┐рдХ рдХрдо рдорд╛рди рд╡рд╛рд▓реЗ рдЪреИрдирд▓ рд╕реЗ рд╣реЛрдХрд░ рдЧреБрдЬрд░реЗрдЧрд╛ред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рд░рд╛рдЙрдЯрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рд╡реИрд╢реНрд╡рд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдирд╛
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ set_global_parameters рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
#Main interface name
:global MainIf nlink
#Reserve interface name
:global RsrvIf domolink
#Main interface ip address
:global MainIfAddress ""
#Reserve interface ip address
:global RsrvIfAddress ""
рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг
рдореБрдЦреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЖрдИрдкреА рдкрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ define_main_if_ip рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
:global MainIf
:global MainIfAddress ""
:set MainIfAddress [/ip address get [find interface=$MainIf] address]
рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЯрд░рдиреЗрдЯ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЖрдИрдкреА рдкрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред рдпрджрд┐ рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ, рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧреА, рдФрд░ MainIfAddress рдЪрд░ рдореЗрдВ рдПрдХ рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдЧреАред
рдмреИрдХрдЕрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЖрдИрдкреА рдкрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ define_reserved_if_ip рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
:global RsrvIf
:global RsrvIfAddress ""
:set RsrvIfAddress [/ip address get [find interface=$RsrvIf] address]
рдЗрди рдкрддреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд░рд╛рдЙрдЯрд░ рдкрд░ рдХрдИ рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдЗрди рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, DynDNS рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛), рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝рдВрдХреНрд╢рди рдпрд╣рд╛рдВ рдирд╣реАрдВ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкреНрд░рддреНрдпрдХреНрд╖ рдкрддрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред
рдЪреИрдирд▓ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрдиреЗрдХреНрд╢рди_рдЪреЗрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
:global MainIf
:global RsrvIf
:global MainIfAddress
:global RsrvIfAddress
:local PingCount 3
#www.ru
:local PingTarget1 194.87.0.50
#ya.ru
:local PingTarget2 87.250.250.203
#google dns
:local PingTarget3 8.8.8.8
#Check main internet connection
:local MainIfInetOk false;
if ($MainIfAddress="") do={delay 5}
if ($MainIfAddress!="") do={
:local PingResult1 [/ping $PingTarget1 count=$PingCount interface=$MainIf]
:local PingResult2 [/ping $PingTarget2 count=$PingCount interface=$MainIf]
:local PingResult3 [/ping $PingTarget3 count=$PingCount interface=$MainIf]
:set MainIfInetOk (($PingResult1 + $PingResult2 + $PingResult3) >= (2 * $PingCount))
}
#Check reserved internet connection
:local RsrvIfInetOk false;
if ($RsrvIfAddress="") do={delay 5}
if ($RsrvIfAddress!="") do={
:local PingResult1 [/ping $PingTarget1 count=$PingCount interface=$RsrvIf]
:local PingResult2 [/ping $PingTarget2 count=$PingCount interface=$RsrvIf]
:local PingResult3 [/ping $PingTarget3 count=$PingCount interface=$RsrvIf]
:set RsrvIfInetOk (($PingResult1 + $PingResult2 + $PingResult3) >= (2 * $PingCount))
}
:put "MainIfInetOk=$MainIfInetOk"
:put "RsrvIfInetOk=$RsrvIfInetOk"
if (!$MainIfInetOk) do={
/log error "Main internet connection error"
}
if (!$RsrvIfInetOk) do={
/log error "Reserve internet connection error"
}
:local MainGWDistance [/ip route get [find comment="MainGW"] distance]
:local RsrvGWDistance [/ip route get [find comment="RsrvGW"] distance]
:put "MainGWDistance=$MainGWDistance"
:put "RsrvGWDistance=$RsrvGWDistance"
#SetUp gateways
if ($MainIfInetOk && ($MainGWDistance >= $RsrvGWDistance)) do={
/ip route set [find comment="MainGW"] distance=1
/ip route set [find comment="RsrvGW"] distance=2
/log info "Switch to main internet connection"
}
if (!$MainIfInetOk && $RsrvIfInetOk && ($MainGWDistance <= $RsrvGWDistance)) do={
/ip route set [find comment="MainGW"] distance=2
/ip route set [find comment="RsrvGW"] distance=1
/log warning "Switch to reserve internet connection"
}
рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд┐рдВрдЧ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрдХ рдЪреИрдирд▓ рдХреЛ рджреЛрд╖рдкреВрд░реНрдг рдорд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирджрдВрдбред рдореИрдВ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдиреЛрдбреНрд╕ рдХреЛ рдкрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ 2/3 рд╕реЗ рдХрдо рдЖрддреА рд╣реИрдВ рддреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рдЗрд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдпреЛрдЬрдирд╛рдХрд╛рд░
1. рд░рд╛рдЙрдЯрд░ рдХреЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ set_global_parameters рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдмрд╛рд░ рдЪрд▓рд╛рдИ рдЬрд╛рддреА рд╣реИред
2. рдЖрдИрдкреА рдкрддреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рд╣рд░ 27 рд╕реЗрдХрдВрдб рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдорд╛рди рдореБрдЦреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдпреБрдЧрдкрдд рдкреНрд░рд╛рд░рдВрдн рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИред
3. рдХрдиреЗрдХреНрд╢рди_ рдЪреЗрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рд░ рдорд┐рдирдЯ рдЪрд▓рддреА рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдиреНрдпреВрдирддрдо рд▓рд╛рдЧрдд рдкрд░ рдкрд░рд┐рдгрд╛рдореА рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рдШрд░реЗрд▓реВ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдореЗрдВ рдХрд╛рдлреА рд╡реГрджреНрдзрд┐ рдХреА рдФрд░ рд╕реНрдерд╛рдиреАрдп рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреА рд╕рдмрд╕реЗ рдкрд░рд┐рд╖реНрдХреГрдд рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдореБрдХрд╛рдмрд▓рд╛ рдХрд┐рдпрд╛, рдЬрдмрдХрд┐ рдпрд╣ рдмрд╛рд╣рд░реА рдиреЗрдЯрд╡рд░реНрдХ рдиреЛрдбреНрд╕ рдХреА рд╡рд┐рдлрд▓рддрд╛рдУрдВ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред