MikroTik Dual WAN over 2 DHCP Internet Connections

Поділитися
Вставка
  • Опубліковано 7 вер 2024
  • /interface ethernet
    set [ find default-name=ether1 ] name=ether1-WAN1
    set [ find default-name=ether2 ] name=ether2-WAN2
    set [ find default-name=ether4 ] name=ether4-LAN
    /ip pool
    add name=dhcp_pool0 ranges=10.10.10.2-10.10.10.254
    /ip dhcp-server
    add address-pool=dhcp_pool0 disabled=no interface=ether4-LAN name=dhcp1
    /ip address
    add address=10.10.10.1/24 interface=ether4-LAN network=10.10.10.0
    /ip dhcp-client
    add add-default-route=no disabled=no interface=ether1-WAN1 script="{
    \

    :local rmark \"to_wan1\"
    \

    :local count [/ip route print count-only where comment=\"to_wan1\"]\

    \

    :if (\$bound=1) do={
    \

    :if (\$count = 0) do={
    \

    /ip route add distance=1 gateway=\$\"gateway-address\" check\
    -gateway=ping routing-mark=to_wan1 comment=\"to_wan1\"
    \

    /ip route add distance=1 gateway=\$\"gateway-address\" check\
    -gateway=ping comment=\"to_wan1\"
    \

    } else={
    \

    :if (\$count = 1) do={
    \

    :local test [/ip route find where comment=\"to_wan1\"]
    \

    :if ([/ip route get \$test gateway] != \$\"gateway-addre\
    ss\") do={
    \

    /ip route set \$test gateway=\$\"gateway-address\"
    \

    }
    \

    } else={
    \

    :error \"Multiple routes found\"
    \

    }
    \

    }
    \

    } else={
    \

    /ip route remove [find comment=\"to_wan1\"]
    \

    }
    \

    }"
    add add-default-route=no disabled=no interface=ether2-WAN2 script="{
    \

    :local rmark \"to_wan2\"
    \

    :local count [/ip route print count-only where comment=\"to_wan2\"]\

    \

    :if (\$bound=1) do={
    \

    :if (\$count = 0) do={
    \

    /ip route add distance=1 gateway=\$\"gateway-address\" check\
    -gateway=ping routing-mark=to_wan2 comment=\"to_wan2\"
    \

    /ip route add distance=2 gateway=\$\"gateway-address\" check\
    -gateway=ping comment=\"to_wan2\"
    \

    \t} else={
    \

    :if (\$count = 1) do={
    \

    :local test [/ip route find where comment=\"to_wan2\"]
    \

    :if ([/ip route get \$test gateway] != \$\"gateway-addre\
    ss\") do={
    \

    /ip route set \$test gateway=\$\"gateway-address\"
    \

    }
    \

    } else={
    \

    :error \"Multiple routes found\"
    \

    }
    \

    }
    \

    } else={
    \

    /ip route remove [find comment=\"to_wan2\"]
    \

    }
    \

    }"
    /ip dhcp-server network
    add address=10.10.10.0/24 dns-server=8.8.8.8 gateway=10.10.10.1
    /ip firewall mangle
    add action=accept chain=prerouting in-interface=ether1-WAN1
    add action=accept chain=prerouting in-interface=ether2-WAN2
    add action=mark-connection chain=prerouting dst-address-type=!local \
    new-connection-mark=wan1_conn passthrough=yes per-connection-classifier=\
    both-addresses-and-ports:2/0 src-address=10.10.10.0/24
    add action=mark-connection chain=prerouting dst-address-type=!local \
    new-connection-mark=wan2_conn passthrough=yes per-connection-classifier=\
    both-addresses-and-ports:2/1 src-address=10.10.10.0/24
    add action=mark-routing chain=prerouting connection-mark=wan1_conn \
    new-routing-mark=to_wan1 passthrough=yes src-address=10.10.10.0/24
    add action=mark-routing chain=prerouting connection-mark=wan2_conn \
    new-routing-mark=to_wan2 passthrough=yes src-address=10.10.10.0/24
    /ip firewall nat
    add action=masquerade chain=srcnat out-interface=ether1-WAN1 src-address=\
    10.10.10.0/24
    add action=masquerade chain=srcnat out-interface=ether2-WAN2 src-address=\
    10.10.10.0/24
    /ip route
    add check-gateway=ping comment=to_wan1 distance=1 gateway=192.168.1.1 \
    routing-mark=to_wan1
    add check-gateway=ping comment=to_wan2 distance=1 gateway=192.168.2.1 \
    routing-mark=to_wan2
    add check-gateway=ping comment=to_wan1 distance=1 gateway=192.168.1.1
    add check-gateway=ping comment=to_wan2 distance=2 gateway=192.168.2.1

КОМЕНТАРІ • 335