❗️Toto je původní verze internetového fóra ISPforum.cz do února 2020 bez možnosti registrace nových uživatelů. Aktivní verzi fóra naleznete na adrese https://telekomunikace.cz

Backup spoje

Návody a problémy s konfigurací.
Uživatelský avatar
Petr S.
Příspěvky: 795
Registrován: 17 years ago
Kontaktovat uživatele:

Backup spoje

Příspěvekod Petr S. » 9 years ago

Zdravím,

řeším teď jakým způsobem je nejlepší konfigurovat Mikrotiky - aby při výpadku hlavního spoje přepínali na záložní konektivitu. Je to pro zákazníka, který si chce jako alternativní konektivitu pro případy výpadků nechat druhou konektivitu.

Napadají mě tyto možnosti:

1) nastavit obě připojení a oddělit to pomocí distance v ip route. Nicméně toto bude mít asi problém v tom, že nehlídám tak úplně konektivitu do internetu, ale jen třeba hlavní bránu primárního poskytovatele. Teoreticky se pak asi může stát, že brána bude dostupná, ale internet nepůjde, protože problém bude až za bránou...

2) udělat nějaký skript, který bude hlídat dostupnost ip adresy v netu a podle toho zapínat/vypínat defaultní routu. Asi něco takového a to spouštět třeba každých 30 sekund schedulerem:

if ([/ping 8.8.8.8 count=10] = 0) do={
:if ([/ip route get [find comment=default_gw1] disabled] = no ) do={
:log info "gw1 je nedostupna vypinam routu na gw1"
/ip route {
disable [find comment=default_gw1]
}
}
} else={
:if ([/ip route get [find comment=default_gw1] disabled] = yes ) do={
:log info "gw1 je dostupna zapinam routu gw1"
/ip route {
enable [find comment=default_gw1]
}
}
}

Pak by to ale asi chtělo kontrolovat více IP adres, kdyby dejme tomu 8.8.8.8 klekla, tak se router upřepíná...

Jakým způsobem řešíte backup spoje vy? Jak byste to řešili?

Díky za rady.

EDIT: Ještě mě teď napadá, že by to asi u varianty chtělo nějakým prerouting pravidlem nastavit ping na osmičky, aby běžel pořád přes hlavní gw... jinak se to přepne z hlavní gw na záložní, ale už nikdy zpátky...
0 x
..:: DobraSit.cz ::..

hocimin1
Příspěvky: 1154
Registrován: 19 years ago
Bydliště: Náchod

Příspěvekod hocimin1 » 9 years ago

je potreba si pak nastavit routu ze 8.8.8.8 je na x.x.x.x (kde x.x.x.x je defaultni tvoje routra)


nicmene neni potreba skript. Staci ti na to tool-netwatch
0 x

Uživatelský avatar
Petr S.
Příspěvky: 795
Registrován: 17 years ago
Kontaktovat uživatele:

Příspěvekod Petr S. » 9 years ago

hocimin1 píše:je potreba si pak nastavit routu ze 8.8.8.8 je na x.x.x.x (kde x.x.x.x je defaultni tvoje routra)


nicmene neni potreba skript. Staci ti na to tool-netwatch


I když mám teď nastavené, že 8.8.8.8 je na default route hlavní konektivity, tak to tam stejně pingá přes tu druhou konektivitu.. Kde může být problém?

Když dám routu na konkrétní IP adresu, tak má mít tahle adresa přednost před defaultní routou?
0 x
..:: DobraSit.cz ::..

hocimin1
Příspěvky: 1154
Registrován: 19 years ago
Bydliště: Náchod

Příspěvekod hocimin1 » 9 years ago

Jestli mas defaultni routu u toho klienta 192.168.x.1

Tak kdyz das ze 8.8.8.8 je na 192.168.x.1 tek to nemuze pingat jinudy
0 x

Uživatelský avatar
Petr S.
Příspěvky: 795
Registrován: 17 years ago
Kontaktovat uživatele:

Příspěvekod Petr S. » 9 years ago

Právě asi může...

Kód: Vybrat vše

 
 0 A S  ;;; default_gw2
        0.0.0.0/0                          10.0.1.138                2
 1 X S  0.0.0.0/0                          10.45.3.254               1
 2  S  ;;; default_gw1
        0.0.0.0/0                          10.12.10.254              1
 3   S  8.8.8.8/32                         10.12.10.254              1
 4 ADC  10.0.0.0/24        10.0.0.138      bridge-local              0
 5 ADC  10.0.1.0/24        10.0.1.254      ether2-o2-gateway         0
 
 


Takto to mám nastavené. A i když vy vypadne default_gw1, tak mi to na 8.8.8.8 stále pingá. Přitom 10.12.10.254 se jeví jako "unreachable".

Nakonec jsem to vyřešil tak, že jsem ve fw zakázal output na 8.8.8.8 přes rozhraní ether2. Myslím si, že je to proto, že ty default gw mají asi vyšší prioritu než gw pro destinační cílovou adresu nebo nevím.

Pak jsem dělal ještě pokusy s ip rules, akorát jsem nějak nepřišel na to, jak nastavit, aby třeba cesta na osmičky byla vždy přes ether1. A ani na wiki jsem nenašel nic pořádnýho, k čemu tohle menu je. Poradíte?

Díky.
0 x
..:: DobraSit.cz ::..

Majklik
Příspěvky: 1949
Registrován: 14 years ago

Příspěvekod Majklik » 9 years ago

Petr S. píše:Takto to mám nastavené. A i když vy vypadne default_gw1, tak mi to na 8.8.8.8 stále pingá. Přitom 10.12.10.254 se jeví jako "unreachable".


Protože ve chvíli, kdy se stane adresa brány 10.12.10.254 unreachable, tak se zneplatní daná specifická routa pro 8.8.8.8 a routuje se na základě nečeho jiného, co tomu vyhoví, což je ta defualt routa přes GW2.
Pokud se používá takto routa, aby šla daná IP jen jednou cestou, je třeba přidávat pomocnou blokovací routu, aby k tomuto nedošlo, takže:
/ip route
add check-gateway=ping distance=1 gateway=10.12.10.254 dst-address=8.8.8.8
add distance=5 dst-address=8.8.8.8 type=unreachable
Takto půjde spojení k 8.8.8.8 vžy jen přes tu první linku.

Petr S. píše:Pak jsem dělal ještě pokusy s ip rules, akorát jsem nějak nepřišel na to, jak nastavit, aby třeba cesta na osmičky byla vždy přes ether1. A ani na wiki jsem nenašel nic pořádnýho, k čemu tohle menu je. Poradíte?


/ip route
add distance=1 gateway=10.12.10.254 routing-mark=ISP1
add distance=5 routing-mark=ISP1 type=unreachable
add distance=1 gateway=10.0.1.138 routing-mark=ISP2
add distance=5 routing-mark=ISP2 type=unreachable
add distance=1 gateway=10.12.10.254 check-gateway=ping
add distance=5 gateway=10.0.1.138 check-gateway=ping
add distance=10 type=blackhole

/ip route rule
add dst-address=10.0.0.0/24 table=main
add dst-address=10.0.1.0/24 table=main
add dst-address=10.12.10.0/24 table=main
add action=lookup-only-in-table dst-address=8.8.8.8/32 table=ISP1
add action=lookup-only-in-table src-address=10.12.10.x/32 table=ISP1
add action=lookup-only-in-table src-address=10.0.1.254/32 table=ISP2

Tohle ti udělá s použitím route rule, aby 8.8.8.8 šlo jen přes ISP1 (čtvrté pravidlo).
Ty první tři pravidla jsou pro lokální segmenty (LAN a přímo připojené WAN segmenty k routeru), aby se vždy routovaly na základě hlavní routovací tabulky a neposílaly alternativně někam do pryč. Pak je nasměrování 8.8.8.8 do výlučně první linky. A poslední dvě řeší, aby spojení přišlá na router přes ISP1 nebo ISP2 se vracela správnou linkou zpět a ne tou druhou.

hocimin1 píše:nicmene neni potreba skript. Staci ti na to tool-netwatch


Velkou nevýhodou netwatch je, že reaguje na první ztracený ping. Je třeba mlátit Mikrotiky po hlavě, aby přibyl parametr, že se má reagovat nepř až na 5-tý ztracený paket pro down událost a up třeba nahodit, až projdou 2 pakety... Také přes netwatch neudělám snadno svázání s tím, že má kontrolovat např 2 IPčka a až výpadek obou je přepnutí.

Petr S. píše:1) nastavit obě připojení a oddělit to pomocí distance v ip route. Nicméně toto bude mít asi problém v tom, že nehlídám tak úplně konektivitu do internetu, ale jen třeba hlavní bránu primárního poskytovatele. Teoreticky se pak asi může stát, že brána bude dostupná, ale internet nepůjde, protože problém bude až za bránou...


Proto tu existují rekurzivní routy, které se dají k tomuto použít. Kdy si router kontroluje klidně i víc IP adres a až všechny chcípnou, tak se daná routa přestane používat:
/ip route
add dst-address=8.8.8.8 gateway=10.12.10.254 scope=10
add dst-address=8.8.4.4 gateway=10.12.10.254 scope=10
add gateway=8.8.8.8,8.8.4.4 check-gateway=ping
Pokud je 8.8.8.8 nebo 8.8.4.4 dostupné pro ping, tak se routuje default brána přes 10.12.10.254.

Petr S. píše:2) udělat nějaký skript, který bude hlídat dostupnost ip adresy v netu a podle toho zapínat/vypínat defaultní routu. Asi něco takového a to spouštět třeba každých 30 sekund schedulerem:
...
Pak by to ale asi chtělo kontrolovat více IP adres, kdyby dejme tomu 8.8.8.8 klekla, tak se router upřepíná...


S maximální nechutí je nutno konstatovat, že v Mikrotiku je jediný způsob, jak to uchodit jakž tak, je to naskriptovat (pokud mám 2 nezávislé konektivity a musím na ně NATovat).
Jednak při použití skriptu nemusím natvrdo nutit routu 8.8.8.8, aby šla jen jednou linkou, použije se ve skriptu "ping 8.8.8.8 count=10 routing-table=ISP1" a můžu klidně i testovat pak druhý směr zase pomocí "ping 8.8.8.8 count=10 routing-table=ISP2", pokud mám založený ty alternativní route tabulky, jak je uvedeno výše u toho ip route rule. Potom se ve skriptu snadno ošetří, ať nepřepínám na první ztracený paket. Zde u pingu snad chybí parametr, že nemusí pingat 10x, ale ať se ping ukončí třeba po třech úspěšných odpovědích. Taktéž snadno můžu tím pngem kontrolovat víc IP, kdyby náhodou Google selhal. A hlavně ve skriptu můžu řešit to, že při změně odchozí linky musím vyresetovat connection tracking, respektive naučená NAT překlady, jinak při přepnutí se rozbije řada věcí, co funguje nad UDP a periodicky posílá data (SIP VoIP telefony je krásný příklad), bude je to pak posílat do druhé linky se zdrojovou IP odpovídající první lince, jak má naučeno v connection trackingu. Takže vedle disablování selhané brány, tak při každém přepnutí důmylsněji udělat něco na způsob "/ip firewall connection remove numbers=[find protocol!=tcp]".

Petr S. píše:Jakým způsobem řešíte backup spoje vy?


Kde je to myšleno vážněji, že to má doopravdy fungovat, tak mám stejně dvě RB vedle sebe, každé drží jednu odchozí linku a na LAN straně je použito VRRP a dle ne/funkčnosti odchozí linky se přepíná priorita VRRP tak, aby pro věci v LAN byl odchozí RB ten, který má konktivitu.
0 x