ADSL bonding with Mikrotik
Here ill show you how to bond 4x ADSL routers through a Mikrotik 750 Routerboard with just a few scripts and configurations
I assume that all my readers know how to setup a basic ADSL router and will only cover the hardware placement and Mikrotik configuration.
Network layout Diagram
A Mikrotik RB750 (MT RB 750) were used in this tut. We use 4 Ports for the 4 ADSL routers to connect to and the 5th port for our LAN .
Mikrotik (MT) Config
We start by giving and IP address to the MT Router ports and renaming the ports that its easier to manage....
/ip address
add address=192.168.0.1/24 network=192.168.0.0 broadcast=192.168.0.255 interface=Local
add address=192.168.1.2/24 network=192.168.1.0 broadcast=192.168.1.255 interface=WAN1
add address=192.168.2.2/24 network=192.168.2.0 broadcast=192.168.2.255 interface=WAN2
add address=192.168.3.2/24 network=192.168.3.0 broadcast=192.168.3.255 interface=WAN3
add address=192.168.4.2/24 network=192.168.4.0 broadcast=192.168.4.255 interface=WAN4
Here we will add the firewall Mangle rules
/ip firewall mangle
add chain=input in-interface=WAN1 action=mark-connection new-connection-mark=WAN1_conn
add chain=input in-interface=WAN2 action=mark-connection new-connection-mark=WAN2_conn
add chain=input in-interface=WAN3 action=mark-connection new-connection-mark=WAN3_conn
add chain=input in-interface=WAN4 action=mark-connection new-connection-mark=WAN4_conn
add chain=output connection-mark=WAN1_conn action=mark-routing new-routing-mark=to_WAN1
add chain=output connection-mark=WAN2_conn action=mark-routing new-routing-mark=to_WAN2
add chain=output connection-mark=WAN3_conn action=mark-routing new-routing-mark=to_WAN3
add chain=output connection-mark=WAN4_conn action=mark-routing new-routing-mark=to_WAN4
add chain=prerouting dst-address=192.168.1.0/24 action=accept in-interface=Local
add chain=prerouting dst-address=192.168.2.0/24 action=accept in-interface=Local
add chain=prerouting dst-address=192.168.3.0/24 action=accept in-interface=Local
add chain=prerouting dst-address=192.168.4.0/24 action=accept in-interface=Local
add
chain=prerouting dst-address-type=!local in-interface=Local
per-connection-classifier=both-addresses-and-ports:4/0
action=mark-connection new-connection-mark=WAN1_conn passthrough=yes
add
chain=prerouting dst-address-type=!local in-interface=Local
per-connection-classifier=both-addresses-and-ports:4/1
action=mark-connection new-connection-mark=WAN2_conn passthrough=yes
add
chain=prerouting dst-address-type=!local in-interface=Local
per-connection-classifier=both-addresses-and-ports:4/2
action=mark-connection new-connection-mark=WAN3_conn passthrough=yes
add
chain=prerouting dst-address-type=!local in-interface=Local
per-connection-classifier=both-addresses-and-ports:4/3
action=mark-connection new-connection-mark=WAN4_conn passthrough=yes
add chain=prerouting connection-mark=WAN1_conn in-interface=Local action=mark-routing new-routing-mark=to_WAN1
add chain=prerouting connection-mark=WAN2_conn in-interface=Local action=mark-routing new-routing-mark=to_WAN2
add chain=prerouting connection-mark=WAN3_conn in-interface=Local action=mark-routing new-routing-mark=to_WAN3
add chain=prerouting connection-mark=WAN4_conn in-interface=Local action=mark-routing new-routing-mark=to_WAN4
Now add the routes so that the MT router know what its gateways are.
/ip route
add dst-address=0.0.0.0/0 gateway=192.168.1.1 routing-mark=to_WAN1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.2.1 routing-mark=to_WAN2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.3.1 routing-mark=to_WAN3 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.4.1 routing-mark=to_WAN4 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.1.1 distance=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.2.1 distance=2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.3.1 distance=3 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.4.1 distance=4 check-gateway=ping
Next the Firewall Nat Rules
/ip firewall nat
add chain=srcnat out-interface=WAN1 action=masquerade
add chain=srcnat out-interface=WAN2 action=masquerade
add chain=srcnat out-interface=WAN3 action=masquerade
add chain=srcnat out-interface=WAN4 action=masquerade
Lastly we need to add the DNS server that we can resolve hostnames
/ip dns set allow-remote-requests=yes cache-max-ttl=1w cache-size=5000KiB max-udp-packet-size=512 servers= 221.132.112.8,8.8.8.8
Now test the internet from the LAN side . The more load you put on the better the bonding will work.
Hope that you find this Tutorial help full . Please ask me any question in the comment section :)
Best Regards
Ferdi de Beer
Proinfotech
Hi ,
ReplyDeleteI have bonded 3x adsl lines and some pages are not opening like autotrader.co.za .
All the settings are correct to my knowledge but it seems it is struggling to find some sites.
Please help ?
pieter.itexpress@gmail.com
Hello There,
ReplyDeleteI Have two Permanent ADSL connections and one Backup Connection, I want to use two ADSL connection for Load Balancing / Bonding and if any one of the two fails 3rd WAN should only kick in that time.
NB:- IF any two connections are down still all the traffic should be automatically re-directed to the one active.
is it bonding or load balancing ?
ReplyDeleteHello Mathias
DeleteIf you use a protocol like p2p where multiple ports are used youl get a bonding effect .if it use a a single port youl only get a balancing effect :)
This is PCC load balancing.
DeleteThis is PCC Method Load balancing
DeleteThis comment has been removed by a blog administrator.
ReplyDeleteI want be sure for its working bonding, not load balancing
ReplyDeleteplease can i get a direction on how to do bonding? i have tried several times but the output has always been my problem. please help me out
ReplyDeleteYou have created WANx_Conn twice, once in the input chain and secondly in the prerouting chain?. You should also create an action=accept for each gateway in prerouting chain.
ReplyDelete