RouterOS failover nem akar működni

Sziasztok!

Segítsetek, mert nem vagyok egy feketeöves mikrotik mester, és kezdek beleőszülni a problémába. 
Van egy alany (aki egy CRS328, RouterOS 7.1.1-el (tudom-tudom ez egy switch, ne akarjak route-olni vele, de a 300-as netemre ez bőven elég)), és két interenet kapcsolat. 
Első internet kapcsolat eth23-on, egy szolgáltatói ont-n keresztül. Publikus ip címet kap a mikrotik.
Második internet kapcsolat eth24-en, lte routeren keresztül. Ip cím dhcp-vel jön át a mikrotikre.
Amit szeretnék: 
Ha az elsődleges (eth23) internetkapcsolat lehal, menjen a másik (eth24). Ha visszajön az első, álljon vissza az elsőre. 

Először próbáltam static route-okkal, csak distance módosítással, ami működött is, de csak ha offline lesz az interface, nem akkor ha nincs internet rajta.
Ezután próbáltam mikrotik saját leírása alapján: https://help.mikrotik.com/docs/pages/viewpage.action?pageId=26476608
Nagynehezen minden ment látszólag, csak épp internet nem volt sehol. Oké, ezt a megoldást is dobtam.
Következő próbálkozás a netwatch-os megoldás volt. Pingeli valamit, ha az nincs, akkor disable a static route-ot, majd ha megint tudja pingelni, akkor enable. Az a része, hogy lekapcsolja, működik is. Vissza már nem hajlandó kapcsolni. Ide másolom az erre vonatkozó config részt, legyetek szívesek segíteni mit ronthatok el.

/ip route
add comment="LAN BRIDGE" disabled=no distance=1 dst-address=192.168.1.0/24 gateway=1-20 pref-src="" routing-table=\
    main scope=30 suppress-hw-offload=no target-scope=10
add comment=isp1 disabled=no distance=2 dst-address=0.0.0.0/0 gateway=80.1.70.1 pref-src="" routing-table=main scope=30 \
    suppress-hw-offload=no target-scope=10
add comment=isp2 disabled=no distance=10 dst-address=0.0.0.0/0 gateway=192.168.2.1 pref-src="" routing-table=main scope=30 \
    suppress-hw-offload=no target-scope=10
add comment=NETWATCH disabled=no distance=1 dst-address=0.0.0.0/0 gateway=80.1.70.1 pref-src="" routing-table=via-isp1 scope=\
    30 suppress-hw-offload=no target-scope=10

/tool netwatch
add down-script="/ip route set [find comment=\"isp1\"] disabled=yes" host=208.67.222.222 interval=20s timeout=3s up-script=\
    "/ip route set [find comment=\"isp1\"] disabled=no"

/ip firewall mangle
add action=mark-connection chain=output dst-address=208.67.222.222 new-connection-mark=dns_connection passthrough=yes
add action=mark-routing chain=output connection-mark=dns_connection new-routing-mark=via-isp1 passthrough=yes
 

Hozzászólások

Alapból készült gateway szabályok statikussá tétele, plusz a Check Gateway opció Ping-re állítása.
Priorítás megadása a két gateway szabálynál a Distance értékkel.
Netwatch-al a 8.8.8.8 (vagy ami szimpi) monitorozása:
- érdemes kisebb intervalt használni pl.: 10 sec
- up / down szabályokkal kezelni a net váltásokat (csak simán letiltom / engedélyezem az adott interface-t).
Én nem figyelem külön a fő netet, hanem 60 perc (tetszőleges) múlva ránézek (Scheduler) és ha nincs rajta net, akkor marad
a tartalék net.

# RHE, Rocky, NethServer, MBP14

Szerkesztve: 2022. 01. 17., h – 13:46

Ebben a felállásban hiányzik, hogy a routing mark alapján az isp1 felé routolja a packatet, illetve mivel a default routet lecsapod, kell egy direkt route erre az ip-re az isp1 felé.

Vagy ha csak ilyen egyszerű kell, hagyod a mark-ot a fenébe, felveszed a default route-okat nagyobb distance-al, meg a direkt route-ot a figyelt ip-re.

"Sose a gép a hülye."

Ezek nem pont ezt csináljak?

/ip route

add comment=NETWATCH disabled=no distance=1 dst-address=0.0.0.0/0 gateway=80.1.70.1 pref-src="" routing-table=via-isp1 scope=\
    30 suppress-hw-offload=no target-scope=10

/ip firewall mangle
add action=mark-connection chain=output dst-address=208.67.222.222 new-connection-mark=dns_connection passthrough=yes
add action=mark-routing chain=output connection-mark=dns_connection new-routing-mark=via-isp1 passthrough=yes

Szerintem nem a 7-től függ, a "routing-mark" és a "routing-table" két külön dolog már a 6.x-ben is. Ez alapján a route config valóban hibás. (nekem sem tűnt fel)

Más kérdés, hogy ehelyett a 3 sornyi "bohóckodás" helyett sokkal egyszerűbb simán target IP felé berakni egy static route-ot és Ámen.

"Probléma esetén nyomják meg a piros gombot és nyugodjanak békében!"

Szerkesztve: 2022. 01. 18., k – 14:13

Nalam igy van megoldva, a WAN1 az egy PPPoE, a WAN2 meg fix publikus IP.

Itt ha elmegy az elsodleges akkor atall masodlagosra, de ha visszater a kapcsolat akkor a folyamatban levo session meg marad a masodlagoson.

Mindket kapcsolaton fogad es azon is valaszol bejovo kapcsolatokra, mert kivulrol egy healthcheck van a DNS rekordokon es atall a masodlagos kapcsolat IP cimere a rekord, ha offline lesz az elsodleges.

Szerk: publikus DNS-eket hasznalok a gateway checkre, a 10.1.1.1 es 10.2.2.2 dummy cimek a routolast segitendo, hogy ne interface allapottol, hanem tenyleges internet elerestol fuggjon a failover.
A 123.1.2.254 IP a WAN2 fix IP gateway-e a szolgaltato oldalon.

# Default routes
/ip route
add distance=1 gateway=WAN1 routing-mark=WAN1-route
add distance=2 gateway=123.1.2.254 routing-mark=WAN2-route
add distance=1 gateway=WAN1
add distance=2 gateway=123.1.2.254

# NAT masquerade
/ip firewall nat add chain=srcnat out-interface=WAN1 action=masquerade
/ip firewall nat add chain=srcnat out-interface=WAN2 action=masquerade

/ip firewall mangle
### Connection marks
# New LAN->WAN connections to keep on original interface in case of failover
add chain=postrouting connection-state=new out-interface=WAN1 action=mark-connection new-connection-mark=WAN1-masq-connection
add chain=postrouting connection-state=new out-interface=WAN2 action=mark-connection new-connection-mark=WAN2-masq-connection

# New WAN->Router
add chain=input connection-state=new in-interface=WAN1 action=mark-connection new-connection-mark=WAN1-incoming
add chain=input connection-state=new in-interface=WAN2 action=mark-connection new-connection-mark=WAN2-incoming
# Forwarded WAN->LAN
add chain=prerouting connection-state=new in-interface=WAN1 action=mark-connection new-connection-mark=WAN1-forward
add chain=prerouting connection-state=new in-interface=WAN2 action=mark-connection new-connection-mark=WAN2-forward

### Route marks
# LAN->WAN MASQ route existing connection to original route
add chain=prerouting in-interface=LAN connection-mark=WAN1-masq-connection action=mark-routing new-routing-mark=WAN1-route
add chain=prerouting in-interface=LAN connection-mark=WAN2-masq-connection action=mark-routing new-routing-mark=WAN2-route
# Router->WAN
add chain=output connection-mark=WAN1-incoming action=mark-routing new-routing-mark=WAN1-route
add chain=output connection-mark=WAN2-incoming action=mark-routing new-routing-mark=WAN2-route
# LAN->WAN forward repsonse
add chain=postrouting connection-mark=WAN1-forward action=mark-routing new-routing-mark=WAN1-route
add chain=postrouting connection-mark=WAN2-forward action=mark-routing new-routing-mark=WAN2-route

# Routes based on marks
/ip route
add dst-address=0.0.0.0/0 gateway=WAN1 routing-mark=WAN1-route
add dst-address=0.0.0.0/0 gateway=WAN2 routing-mark=WAN2-route

# todo: remove gateways
/ip route
add dst-address=1.1.1.1 gateway=WAN1 scope=10
add dst-address=208.67.220.220 gateway=WAN1 scope=10
add dst-address=8.8.8.8 gateway=123.1.2.254 scope=10
add dst-address=208.67.222.222 gateway=123.1.2.254 scope=10

add dst-address=10.1.1.1 gateway=1.1.1.1 scope=10 target-scope=10 check-gateway=ping
add dst-address=10.1.1.1 gateway=208.67.220.220 scope=10 target-scope=10 check-gateway=ping
add dst-address=10.2.2.2 gateway=8.8.8.8 scope=10 target-scope=10 check-gateway=ping
add dst-address=10.2.2.2 gateway=208.67.222.222 scope=10 target-scope=10 check-gateway=ping

add distance=1 gateway=10.1.1.1 routing-mark=WAN1-route check-gateway=ping
add distance=1 gateway=10.2.2.2 routing-mark=WAN2-route check-gateway=ping

Kiegészítés:

A RouterOS 7-es verziójában kézzel kell létrehozni a routing táblákat, nem csinálja meg automatikusan, ha egy tűzfal szabályból jelölés történik.

 

Ahogy a fent idézett leírásban is benne van:

/routing/table
add
fib name=to_ISP1
add
fib name=to_ISP2