[MEGOLDVA]Mikrotik Dual wan agyrém

 ( gigalomania | 2012. március 28., szerda - 17:34 )

Sziasztok.

A google már lassan élettársi kapcsolatban áll velem, mégsem találok megoldást az alábbi problémára.
Adott 2 db internet kapcsolat egy UPC dhcp kliens fix ip-vel és egy Invitel PPPoE fix ip-vel.
Az alap felállás az lett volna, hogy az elsődleges a UPC, ha ez nincs, akkor átáll Invitelre.
Beállítottam a check gateway funkciót a dynamikus ip-re.
/routing filter
add action=passthrough chain=dynamic-in comment="Check gateway dynamic ip" disabled=no invert-match=no set-bgp-prepend-path="" set-check-gateway=ping
Viszont a kedves UPC úgy oldotta meg, hogy a fix ip-t a helyi cisco router oldja meg, ami az átjáró is egyben. Így, ha nincs is internet, akkor is válaszol a cisco, mint alapértelmezett átjáró.
Gondoltam, akkor megoldom egy kis scripttel, ami pinggel az WAN1-es lábon és átállítja a route distance értéket, ha nem elérhető.
A "nagy" tudású script így néz ki:
:local drd [/ip dhcp-client get WAN1 default-route-distance];
:if ([/ping 8.8.8.8 interface=WAN1 count=1]=1) \
do={:if ($drd != 0) do={/ip dhcp-client set WAN1 default-route-distance=0}} \
else={:if ($drd != 2) do={/ip dhcp-client set WAN1 default-route-distance=2}}

Viszont itt már meg kell jelölni a csomagokat, hogy ki merre megy ki és jön vissza.
A portforwardok miatt, + hogy az eszközök elérhetőek legyenek mindkét lábon az alábbi szabályokat ollóztam össze:

# what comes from WAN1, gets out from WAN1
/ip firewall mangle add action=mark-connection chain=input in-interface=WAN1 new-connection-mark=WAN1_conn passthrough=yes disabled=no comment="in WAN1,out WAN1"
/ip firewall mangle add action=mark-routing chain=output connection-mark=WAN1_conn new-routing-mark=WAN1_traffic passthrough=no disabled=no comment="in WAN1,out WAN1"

# what comes from WAN2, gets out from WAN2
/ip firewall mangle add action=mark-connection chain=input in-interface=WAN2 new-connection-mark=WAN2_conn passthrough=yes disabled=no comment="in WAN2,out WAN2"
/ip firewall mangle add action=mark-routing chain=output connection-mark=WAN2_conn new-routing-mark=WAN2_traffic passthrough=no disabled=no comment="in WAN2,out WAN2"

# port forwards from WAN1, gets out from WAN1
/ip firewall mangle add action=mark-connection chain=forward in-interface=WAN1 connection-state=new new-connection-mark=WAN1_pfw passthrough=no disabled=no comment="pfw WAN1, out WAN1"
/ip firewall mangle add action=mark-routing chain=prerouting in-interface=ether3 connection-mark=WAN1_pfw new-routing-mark=WAN1_traffic passthrough=no disabled=no comment="pfw WAN1, out WAN1"

# port forwards from WAN2, gets out from WAN2
/ip firewall mangle add action=mark-connection chain=forward in-interface=WAN2 connection-state=new new-connection-mark=WAN2_pfw passthrough=no disabled=yes comment="pfw WAN2, out WAN2"
/ip firewall mangle add action=mark-routing chain=prerouting in-interface=ether3 connection-mark=WAN2_pfw new-routing-mark=WAN2_traffic passthrough=no disabled=yes comment="pfw WAN2, out WAN2"

# routing rules for WAN1_traffic and WAN2_traffic
/ip route add dst-address=0.0.0.0/0 gateway=WAN1 distance=1 routing-mark=WAN1_traffic disabled=no
/ip route add dst-address=0.0.0.0/0 gateway=WAN2 distance=1 routing-mark=WAN2_traffic disabled=no

Viszont amint bekapcsolom a WAN1 interface-en az alábbi sort(/ip route add dst-address=0.0.0.0/0 gateway=WAN1 distance=1 routing-mark=WAN1_traffic disabled=no), azon megszűnik minden forgalom.
WAN2 gyönyörűen megy a portfw is és elérhető akkor is, ha nem a WAN2 a default gw.
Ha viszont nem rakom be a WAN1 routolási szabályt, akkor a ping-re nem jön válasz a script-nek és az első akadásnál nem áll vissza.

Van valakinek valami ötlete mit néztem el, vagy milyen alap dologgal nem vagyok tisztában?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Nem olvastam vévig, bocs, lehet nem a problémára válaszolok.
Szal keresel a neten egy ip címet, ami kb mindig elérhető.
Beállítod a route résznél, hogy ezt az ip címet mindenképpen az egyik internetkapcsolat
felé próbálja elérni.
Amenniyben elérhető, akkor adott kapcsolat él, nem csak a router ami a mikrotik előtt van.

Ha nem ezt kerested, akkor majd nekiülök végigolvasni, persze nem jelenti, hogy megoldást is tudok majd :)

Köszönöm a válaszodat, viszont a probléma már nem ez. A csomagok megjelölése nem akar működni, hogy mindkét internet kapcsolaton egyszerre elérhetőek legyenek a belső hálózaton lévő gépek + a Mikrotik eszköz is.
Amíg a WAN1 az aktív, a WAN2 a csomagmegjelölés és a port forwardok tökéletesen működnek. Így mindkét internet használható. Viszont ha a WAN1(UPC) "szakad" átáll a WAN2-re, viszont hiába jön vissza a WAN1, ezen az interfacen nem megy semmilyen kommunikáció, hiába erre irányítom. Így a "nagyon okos" kis script nem állítja vissza elsődlegesnek a WAN1-et.
80/10 vs. 8/512 : )

Simán felhuzod a két kapcsolatot, mintha csak 1-1 lenne, külön külön. Van egy olyan paraméter hogy default distance, vagy hasonló. Biztos megtalálod miről van szó. PPPOE és DHCP-s WAN-nál is lehet állítani.
Remélem nem kell magyaráznom mire való. :)

DNS-nek használj valami olyat ami mindkét hálózatból elérhető, pl. google-s.

Ezt "oldottam meg" a scripttel.

A wikis megoldas nem jo? http://wiki.mikrotik.com/wiki/Two_gateways_failover

/ip route add gateway=192.168.1.1 check-gateway=ping
/ip route add gateway=192.168.2.1 distance=2

Sajnos, mivel a UPC cisco routere a default gateway, ami akkor is él, amikor nincs azon a lábon internet, így ez a megoldás sajnos ebben az esetben nem működik.

Erre akkor szerintem ez a scenario illik (gyakorlatilag felveszel route-okat es azokon keresztul pingelsz ip-ket, pl google-t, es ez kettonel tobb WAN-nal is mukodik): http://wiki.mikrotik.com/wiki/Advanced_Routing_Failover_without_Scripting

Ha sikerul beallitani, akkor ird mar meg legyszi, mert en detto ugyanezt szeretnem megcsinalni a hetvegen :)

Ez a leírás is a gateway ping-en alapul, ami sajnos nem működik, mivel a gateway mindig elérhető.

Szerintem a distance állítás sem jó így neked. Még nem próbáltam mert szerencsémre a gw is eltünik ha a net nem megy. Igaz 1 helyen van olyan, UPC van rajta, de az a másodlagos.
Van valami módszer hogy elérd hogy az UPC-s gw látszódjon, de ne legyen neted? Érdekes lenne tesztelni a dolgot.

Igen, de szerintem felreertetted. Itt gateway-nek a google-t adod meg, azt is pingeled, es ha nem jon valasz, valtasz route-ot.

Ez most nem jött át. Hogyan gondolod pontosan?

Ha elolvasod a leirast (Basic Setup-tol), akkor latod, hogy eloszor hozzaadja a WAN gateway-eket (itt nincs check-gateway), utana pedig hozzaadja a google/yahoo/tutirapingel.com cimeket distance-szal es itt van a check-gateway. Igy mar vilagos?

Köszönöm a választ.
Megcsináltam, de valamiért nem érzékeli az internet "szakadást".

Viszont most resetelem az eszközt, mert újraindítás után is bent maradnak a törölt routing-mark szabályok.

Az alábbi szabály most már elvileg működik.

Viszont 1 másik problémát fedeztem fel, ami miatt csak elvi a dolog.
Amikor WAN1 a default route, akkor mindkét WAN-on pingelhető a 8.8.8.8 (vagy bármi).
Viszont amikor átállítom(vagy átáll) WAN2-re, akkor már a WAN1-en semmilyen válasz nem érkezik.
Ezért nem működik a szabály mert hiába van WAN1-en élő kapcsolat, akkor sem jön ping-re válasz, így nem áll vissza WAN1-re.

Találkozott már valaki ezzel a problémával?

Nezd meg tovabb azt a leirast, ott van benne, hogy kezzel fel kell venni a route-okat mindegyik interfeszen a pingelendo IP-k fele... Nyilvan ha a default route a wan2 akkor wan1-gyel hiaba pingelsz sajat route szabaly nelkul...

Mégegyszer írom:

"Szal keresel a neten egy ip címet, ami kb mindig elérhető.
Beállítod a route résznél, hogy ezt az ip címet mindenképpen az egyik internetkapcsolat
felé próbálja elérni.
Amenniyben elérhető, akkor adott kapcsolat él, nem csak a router ami a mikrotik előtt van."

Tehát (ahogy fentebb írta Z0l)

Egyik kiszemelt ip címet beállítod, hogy csak az egyik átjárón keresztül érje el.
pl. (nem biztos, hogy élő címeket írok)
netes egyik célcím: 8.8.8.1
másik: 8.8.8.2

egyik oldali GW címed: 10.0.1.1
mésik oldali GW címed: 10.0.2.1

/ip route add dst-address=8.8.8.1 gateway=10.0.1.1
/ip route add dst-address=8.8.8.2 gateway=10.0.2.1

így az egyik címet mindenképp az egyik gw felé keresi, másikat pedig mindenképp a másik irányba
Amennyiben mindkettő elérhető, működik mindkét kapcsolatod....

MŰKÖDIK! Köszönöm mindenkinek a segítséget.

/ip route
add distance=1 gateway=WAN1 routing-mark=to_WAN1
add distance=1 gateway=WAN2 routing-mark=to_WAN2
add check-gateway=ping distance=1 gateway=8.8.8.8 routing-mark=to_WAN1 target-scope=30
add check-gateway=ping distance=10 gateway=8.8.4.4 routing-mark=to_WAN1 target-scope=30
add check-gateway=ping distance=1 gateway=8.8.4.4 routing-mark=to_WAN2 target-scope=30
add check-gateway=ping distance=10 gateway=8.8.8.8 routing-mark=to_WAN2 target-scope=30

add distance=1 dst-address=8.8.8.8/32 gateway=WAN1 scope=10 CSERÉLVE ERRE: add distance=1 dst-address=8.8.8.8/32 gateway=GW1_IP scope=10
add distance=20 dst-address=8.8.8.8/32 type=blackhole
add distance=1 dst-address=8.8.4.4/32 gateway=WAN2 scope=10 CSERÉLVE ERRE: add distance=1 dst-address=8.8.4.4/32 gateway=GW2_IP scope=10
add distance=20 dst-address=8.8.4.4/32 type=blackhole

A csomagmegjelölések pedig:
/ip firewall mangle

add action=mark-connection chain=input comment="Mark new inbound connection WAN1" connection-state=new in-interface=WAN1 new-connection-mark=WAN1_conn
add action=mark-connection chain=input comment="Mark new inbound connection WAN2" connection-state=new in-interface=WAN2 new-connection-mark=WAN2_conn

add action=mark-connection chain=prerouting comment="Mark established inbound connection WAN1" connection-state=established in-interface=WAN1 new-connection-mark=WAN1_conn
add action=mark-connection chain=prerouting comment="Mark established inbound connection WAN2" connection-state=established in-interface=WAN2 new-connection-mark=WAN2_conn

add action=mark-connection chain=prerouting comment="Mark related inbound connection WAN1" connection-state=related in-interface=WAN1 new-connection-mark=WAN1_conn
add action=mark-connection chain=prerouting comment="Mark related inbound connection WAN2" connection-state=related in-interface=WAN2 new-connection-mark=WAN2_conn

add action=mark-routing chain=output comment="Mark new inbound route WAN1" connection-mark=WAN1_conn new-routing-mark=to_WAN1 passthrough=no
add action=mark-routing chain=output comment="Mark new inbound route WAN2" connection-mark=WAN2_conn new-routing-mark=to_WAN2 passthrough=no

add action=mark-connection chain=forward comment="#Forward in WAN1, out WAN1" connection-state=new in-interface=WAN1 new-connection-mark=WAN1_forward
add action=mark-routing chain=prerouting connection-mark=WAN1_forward in-interface=LAN new-routing-mark=to_WAN1 passthrough=no
add action=mark-connection chain=forward comment="#Forward in WAN2, out WAN2" connection-state=new in-interface=WAN2 new-connection-mark=WAN2_forward
add action=mark-routing chain=prerouting connection-mark=WAN2_forward in-interface=LAN new-routing-mark=to_WAN2 passthrough=no

Sziasztok!

Szóval... keresek olyan embert aki a következő feladatot képes megoldani mikrotiken:

- 2 WAN
-UPC
-Telekom ADSL

Mindenkét interneten folyamatos a kapcsolat, internetezésre UPC elsődleges.
De viszont folyamatos PORTFORWARD van mindkét interneten. A fenti példa valamiért nekem nem működik.

Valakinek működik?

mit értesz folyamatos portforward alatt? azt, hogy mind2 lábról elérhetőek a portforwardok? anno csináltam ilyet, ha jól emlékszem ugyanez a failover konfig volt, csak mind2 bejövő lábra fel kellett vennem a portforwardokat. A többinek elvileg működnie kellene, mert ha kintről jön akapcsolat, akkor megjelölö, melyik lábon jött, és arra küldi vissza.

Igen működik. :)
--
"Sose a gép a hülye."

igen, működik. kifele, befele.

jelenleg Ügyfélnél úgy van belőve, h mindkét vonalon működnek az azonos portfwd-k.
A hálózat alapesetben A, backup esetében B vonalon megy ki, de van olyan szolgáltatás, ami default B-hez van "bind"elve.

Sajnos akkor egyedi eset vagyok.
De igen mindkét interneten bejárnak az ügyfelek egy szerverre és sajnos nem tudom befolyásolni melyik interneten jönnek be.
Azaz
192.168.1.100-ra nyitva van a 16000 port Upc felől
192.168.2.100-ra nyitva van a 16002 port T-online felől

Most két külön hallózatba van, amit meg akarok szüntetni.

Illetve lesz még egy érdekesség amit nem tudom hogy tudok megoldani. Lesz egy mobilnet ami pptp-n csatlakozik fel egy szerverre... És ott is gyakorlatilag pár port lesz nyitva.

A Fasttrack nincs véletlenül bekapcsolva? Nincs ilyen konfigom fasttrackel, csak nélküle és szépen működik.

Nincs
Egy 9 magas ccr router... nincs rá szükség