Skip to content

Instantly share code, notes, and snippets.

@amingilani
Last active November 18, 2016 09:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amingilani/7f67c4967d707adfe8fb0068716973d5 to your computer and use it in GitHub Desktop.
Save amingilani/7f67c4967d707adfe8fb0068716973d5 to your computer and use it in GitHub Desktop.
/interface ethernet
set 0 name=WAN1
set 1 name=WAN2
set 2 name=WAN3
set 3 name=WAN4
set 4 name=Local
/ip address
add address=192.168.0.1/24 interface=Local
add address=192.168.1.65/24 interface=WAN1
add address=192.168.2.65/24 interface=WAN2
add address=192.168.3.65/24 interface=WAN3
add address=192.168.4.65/24 interface=WAN4
/ip firewall nat
add action=masquerade chain=srcnat out-interface=WAN1
add action=masquerade chain=srcnat out-interface=WAN2
add action=masquerade chain=srcnat out-interface=WAN3
add action=masquerade chain=srcnat out-interface=WAN4
/ip route
add gateway=192.168.1.1 distance=1
add gateway=192.168.2.1 distance=2
add gateway=192.168.3.1 distance=3
add gateway=192.168.4.1 distance=4
add gateway=192.168.1.1 routing-mark=ISP1_Route distance=1
add gateway=192.168.2.1 routing-mark=ISP2_Route distance=2
add gateway=192.168.3.1 routing-mark=ISP2_Route distance=3
add gateway=192.168.4.1 routing-mark=ISP2_Route distance=4
/ip firewall address-list
add address=192.168.1.0/24 list=Connected
add address=192.168.2.0/24 list=Connected
add address=192.168.3.0/24 list=Connected
add address=192.168.4.0/24 list=Connected
add address=192.168.0.0/24 list=Connected
add address=192.168.0.0/24 list=LAN
/ip firewall mangle
add chain=prerouting src-address-list=Connected dst-address-list=Connected action=accept
# WAN to Router connections
/ip firewall mangle
add chain=input connection-mark=no-mark in-interface=WAN1 action=mark-connection new-connection-mark=ISP1->ROS
add chain=input connection-mark=no-mark in-interface=WAN2 action=mark-connection new-connection-mark=ISP2->ROS
add chain=input connection-mark=no-mark in-interface=WAN3 action=mark-connection new-connection-mark=ISP3->ROS
add chain=input connection-mark=no-mark in-interface=WAN4 action=mark-connection new-connection-mark=ISP4->ROS
# WAN to LAN connections
/ip firewall mangle
add chain=forward connection-mark=no-mark in-interface=WAN1 action=mark-connection new-connection-mark=ISP1->LANs
add chain=forward connection-mark=no-mark in-interface=WAN2 action=mark-connection new-connection-mark=ISP2->LANs
add chain=forward connection-mark=no-mark in-interface=WAN3 action=mark-connection new-connection-mark=ISP3->LANs
add chain=forward connection-mark=no-mark in-interface=WAN4 action=mark-connection new-connection-mark=ISP4->LANs
add chain=prerouting connection-mark=ISP1->LANs src-address-list=LAN action=mark-routing new-routing-mark=WAN1_Route
add chain=prerouting connection-mark=ISP2->LANs src-address-list=LAN action=mark-routing new-routing-mark=WAN2_Route
add chain=prerouting connection-mark=ISP3->LANs src-address-list=LAN action=mark-routing new-routing-mark=WAN3_Route
add chain=prerouting connection-mark=ISP4->LANs src-address-list=LAN action=mark-routing new-routing-mark=WAN4_Route
# LAN to WAN connections
/ip firewall mangle
add chain=prerouting connection-mark=no-mark src-address-list=LAN dst-address-list=!Connected dst-address-type=!local action=mark-connection new-connection-mark=LAN->WAN
add chain=prerouting connection-mark=LAN->WAN src-address-list=LAN action=mark-routing new-routing-mark=ISP1_Route comment="Load-Balancing here"
add chain=prerouting connection-mark=LAN->WAN routing-mark=ISP1_Route action=mark-connection new-connection-mark=Sticky_WAN1
add chain=prerouting connection-mark=LAN->WAN routing-mark=ISP2_Route action=mark-connection new-connection-mark=Sticky_WAN2
add chain=prerouting connection-mark=LAN->WAN routing-mark=ISP3_Route action=mark-connection new-connection-mark=Sticky_WAN3
add chain=prerouting connection-mark=LAN->WAN routing-mark=ISP4_Route action=mark-connection new-connection-mark=Sticky_WAN4
add chain=prerouting connection-mark=Sticky_WAN1 src-address-list=LAN action=mark-routing new-routing-mark=WAN1_Route
add chain=prerouting connection-mark=Sticky_WAN2 src-address-list=LAN action=mark-routing new-routing-mark=WAN2_Route
add chain=prerouting connection-mark=Sticky_WAN3 src-address-list=LAN action=mark-routing new-routing-mark=WAN3_Route
add chain=prerouting connection-mark=Sticky_WAN4 src-address-list=LAN action=mark-routing new-routing-mark=WAN4_Route
/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
/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
/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
/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
/ip dns set allow-remote-requests=yes cache-max-ttl=1w cache-size=5000KiB max-udp-packet-size=512 servers=8.8.8.8,8.8.4.4
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 dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:4/4 action=mark-connection new-connection-mark=WAN4_conn passthrough=yes
/interface ethernet
set 0 name=WAN1
set 1 name=WAN2
set 2 name=WAN3
set 3 name=WAN4
set 4 name=Local
/ip address
add address=192.168.0.1/24 interface=Local
add address=192.168.1.65/24 interface=WAN1
add address=192.168.2.65/24 interface=WAN2
add address=192.168.3.65/24 interface=WAN3
add address=192.168.4.65/24 interface=WAN4
/ip firewall nat
add action=masquerade chain=srcnat out-interface=WAN1
add action=masquerade chain=srcnat out-interface=WAN2
add action=masquerade chain=srcnat out-interface=WAN3
add action=masquerade chain=srcnat out-interface=WAN4
/ip route
add gateway=192.168.1.1 distance=1
add gateway=192.168.2.1 distance=2
add gateway=192.168.3.1 distance=3
add gateway=192.168.4.1 distance=4
add gateway=192.168.1.1 routing-mark=ISP1_Route distance=1
add gateway=192.168.2.1 routing-mark=ISP2_Route distance=2
add gateway=192.168.3.1 routing-mark=ISP2_Route distance=3
add gateway=192.168.4.1 routing-mark=ISP2_Route distance=4
/ip firewall address-list
add address=192.168.1.0/24 list=Connected
add address=192.168.2.0/24 list=Connected
add address=192.168.3.0/24 list=Connected
add address=192.168.4.0/24 list=Connected
add address=192.168.0.0/24 list=Connected
add address=192.168.0.0/24 list=LAN
/ip firewall mangle
add chain=prerouting src-address-list=Connected dst-address-list=Connected action=accept
# WAN to Router connections
/ip firewall mangle
add chain=input connection-mark=no-mark in-interface=WAN1 action=mark-connection new-connection-mark=ISP1->ROS
add chain=input connection-mark=no-mark in-interface=WAN2 action=mark-connection new-connection-mark=ISP2->ROS
add chain=input connection-mark=no-mark in-interface=WAN3 action=mark-connection new-connection-mark=ISP3->ROS
add chain=input connection-mark=no-mark in-interface=WAN4 action=mark-connection new-connection-mark=ISP4->ROS
# WAN to LAN connections
/ip firewall mangle
add chain=forward connection-mark=no-mark in-interface=WAN1 action=mark-connection new-connection-mark=ISP1->LANs
add chain=forward connection-mark=no-mark in-interface=WAN2 action=mark-connection new-connection-mark=ISP2->LANs
add chain=forward connection-mark=no-mark in-interface=WAN3 action=mark-connection new-connection-mark=ISP3->LANs
add chain=forward connection-mark=no-mark in-interface=WAN4 action=mark-connection new-connection-mark=ISP4->LANs
add chain=prerouting connection-mark=ISP1->LANs src-address-list=LAN action=mark-routing new-routing-mark=WAN1_Route
add chain=prerouting connection-mark=ISP2->LANs src-address-list=LAN action=mark-routing new-routing-mark=WAN2_Route
add chain=prerouting connection-mark=ISP3->LANs src-address-list=LAN action=mark-routing new-routing-mark=WAN3_Route
add chain=prerouting connection-mark=ISP4->LANs src-address-list=LAN action=mark-routing new-routing-mark=WAN4_Route
# LAN to WAN connections
/ip firewall mangle
add chain=prerouting connection-mark=no-mark src-address-list=LAN dst-address-list=!Connected dst-address-type=!local action=mark-connection new-connection-mark=LAN->WAN
add chain=prerouting connection-mark=LAN->WAN src-address-list=LAN action=mark-routing new-routing-mark=ISP1_Route comment="Load-Balancing here"
add chain=prerouting connection-mark=LAN->WAN routing-mark=ISP1_Route action=mark-connection new-connection-mark=Sticky_WAN1
add chain=prerouting connection-mark=LAN->WAN routing-mark=ISP2_Route action=mark-connection new-connection-mark=Sticky_WAN2
add chain=prerouting connection-mark=LAN->WAN routing-mark=ISP3_Route action=mark-connection new-connection-mark=Sticky_WAN3
add chain=prerouting connection-mark=LAN->WAN routing-mark=ISP4_Route action=mark-connection new-connection-mark=Sticky_WAN4
add chain=prerouting connection-mark=Sticky_WAN1 src-address-list=LAN action=mark-routing new-routing-mark=WAN1_Route
add chain=prerouting connection-mark=Sticky_WAN2 src-address-list=LAN action=mark-routing new-routing-mark=WAN2_Route
add chain=prerouting connection-mark=Sticky_WAN3 src-address-list=LAN action=mark-routing new-routing-mark=WAN3_Route
add chain=prerouting connection-mark=Sticky_WAN4 src-address-list=LAN action=mark-routing new-routing-mark=WAN4_Route
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment