+ Responder ao Tópico



  1. #1

    Padrão Load Balance com tratamento de portas+FailOver - Agradecimentos e dúvidas

    Boa Noite caros companheiros. Venho primeiro agradecer pelos vários posts que me auxiliaram em meu projeto de Load Balance, tirar algumas dúvidas e depois também poder dar minha contribuição.

    Créditos para os autores: CATVBrasil, Pro2, HDFuture, JeanFrank, Thiagotgc, Tiagomatias e outros..

    Sou amador ainda em Mikrotik, tenho um servidor Mikrotik com funções básicas, um PC-AP e agora implementando um LB. Sou iniciante e a título de estudo, uso a versão 2.9.27 (crackeada).

    Fiz uma pesquisa sobre o assunto, Load Balance, vi vários scripts interessantes. Optei pelo do CATVBrasil, que esta em sua wiki, por satisfazer mais minha necessidade.

    Implementei também o FAILOVER, em meu LB, escolhi o script postado por THIAGOTGC.


    CENÁRIO:

    1 - Link_MC-Online – ISP Wireless - Roteador Gi-link fazendo roteamento para 192.168.1.254 (Gateway)
    2 - Link_ StarOne – Via Satélite – Fazendo autenticação em um PC e roteando para 192.168.2.254 (Gateway)



    MINHAS DÚVIDAS:

    Fiz toda a configuração do LB, totalmente do zero, a princípio achei que estava funcionando legal. Cabos dos respectivos links conectados, conexão local atribuindo IP por DHCP e acesso a Internet ok!
    Implementei o Failover, no caso de um link cair o outro ‘segurar’.
    Fui então para os testes.
    Desconectando o cabo do link_StarOne, o acesso e outros serviços continuaram funcionando, até aí ok! Conectei-o novamente. Quando fiz isso com o link_MC-Online, para minha surpresa, parou tudo! Deduzir obviamente que o link_StarOne, não esta passando pelo LB, sendo que o mesmo esta funcionando corretamente no PC que faz a autenticação.
    Em ‘/ tool netwatch ‘, o status das conexões mostram ‘up’ ou ‘down’, de acordo com o link que esta conectado ou desconectado normalmente.

    Abaixo colocarei meu script completo, LB e Failover. Aguardo a ajuda de quem interessar possa.


    LOAD BALANCE

    / ip address
    add address=192.168.2.1/24 network=192.168.2.0 broadcast=192.168.2.255 interface=Ether1-Link_StarOne comment="IP Link StarOne" disabled=no
    add address=192.168.1.1/24 network=192.168.1.0 broadcast=192.168.1.255 interface=Ether2-Link_MC-Online comment="IP Link MC Online" disabled=no
    add address=192.168.100.254/24 network=192.168.100.0 broadcast=192.168.100.255 interface=Ether3-Rede_Local comment="IP Rede Local" disabled=no

    / ip firewall mangle
    add chain=prerouting in-interface=Ether1-Link_StarOne connection-state=new \
    nth=1,1,0 action=mark-connection new-connection-mark=Link_StarOne \
    passthrough=yes comment="Balanceamento de Carga" disabled=no
    add chain=prerouting in-interface=Ether1-Link_StarOne \
    connection-mark=Link_StarOne nth=2,0,0 action=mark-routing \
    new-routing-mark=Link_StarOne passthrough=no comment="" disabled=no
    add chain=prerouting in-interface=Ether2-Link_MC-Online connection-state=new \
    nth=1,1,1 action=mark-connection new-connection-mark=Link_MC-Online \
    passthrough=yes comment="" disabled=no
    add chain=prerouting in-interface=Ether2-Link_MC-Online \
    connection-mark=Link_MC-Online nth=2,0,0 action=mark-routing \
    new-routing-mark=Link_MC-Online passthrough=no comment="" disabled=no

    / ip firewall nat
    add chain=srcnat out-interface=Ether1-Link_StarOne action=masquerade comment="NAT StarOne" disabled=no
    add chain=srcnat out-interface=Ether2-Link_MC-Online action=masquerade comment="NAT MC-Online" disabled=no

    / ip route
    add dst-address=0.0.0.0/0 gateway=192.168.1.254 scope=255 target-scope=10 routing-mark=Link_MC-Online comment="Gateway MC-Online" disabled=no
    add dst-address=0.0.0.0/0 gateway=192.168.2.254 scope=255 target-scope=10 routing-mark=Link_StarOne comment="Gateway StarOne" disabled=no
    add dst-address=0.0.0.0/0 gateway=192.168.1.254 scope=255 target-scope=10 comment="Gateway Principal" disabled=no


    Continua ......
    Última edição por rasonline; 15-10-2009 às 07:40.

  2. #2

    Padrão Continuação do post

    Aqui a segunda parte ....

    TRATAMENTO DE PORTAS

    / ip firewall mangle
    add chain=prerouting protocol=tcp dst-port=80 action=mark-routing \
    new-routing-mark=Link_MC-Online passthrough=yes comment="HTTP no Link \
    MC-Online" disabled=no
    add chain=prerouting routing-mark=Link_MC-Online action=mark-packet \
    new-packet-mark=Link_MC-Online passthrough=yes comment="PACOTES MARCADOS \
    no Link MC-Online" disabled=no
    add chain=prerouting protocol=tcp dst-port=443 action=mark-routing \
    new-routing-mark=Link_MC-Online passthrough=yes comment="HTTPS no Link \
    MC-Online" disabled=no
    add chain=prerouting routing-mark=Link_MC-Online action=mark-packet \
    new-packet-mark=Link_MC-Online passthrough=yes comment="PACOTES MARCADOS \
    no Link MC-Online" disabled=no
    add chain=prerouting protocol=tcp dst-port=1863 action=mark-routing \
    new-routing-mark=Link_StarOne passthrough=yes comment="MSN no Link \
    StarOne" disabled=no
    add chain=prerouting protocol=tcp routing-mark=Link_StarOne action=mark-packet \
    new-packet-mark=Link_StarOne passthrough=yes comment="PACOTES MARCADOS no \
    Link StarOne" disabled=no
    add chain=prerouting protocol=tcp dst-port=21 action=mark-routing \
    new-routing-mark=Link_StarOne passthrough=yes comment="FTP no Link \
    StarOne" disabled=no
    add chain=prerouting routing-mark=Link_StarOne action=mark-packet \
    new-packet-mark=Link_StarOne passthrough=yes comment="PACOTES MARCADOS no \
    Link StarOne" disabled=no
    add chain=prerouting protocol=tcp dst-port=22 action=mark-routing \
    new-routing-mark=Link_MC-Online passthrough=yes comment="SSH no Link \
    MC-Online" disabled=no
    add chain=prerouting routing-mark=Link_MC-Online action=mark-packet \
    new-packet-mark=Link_MC-Online passthrough=yes comment="PACOTES MARCADOS \
    no Link MC-Online" disabled=no
    add chain=prerouting protocol=tcp dst-port=23 action=mark-routing \
    new-routing-mark=Link_MC-Online passthrough=yes comment="TELNET no Link \
    MC-Online" disabled=no
    add chain=prerouting routing-mark=Link_MC-Online action=mark-packet \
    new-packet-mark=Link_MC-Online passthrough=yes comment="PACOTES MARCADOS \
    no Link MC-Online" disabled=no
    add chain=prerouting protocol=tcp dst-port=25 action=mark-routing \
    new-routing-mark=Link_StarOne passthrough=yes comment="SMTP no Link \
    StarOne" disabled=no
    add chain=prerouting routing-mark=Link_StarOne action=mark-packet \
    new-packet-mark=Link_StarOne passthrough=yes comment="PACOTES MARCADOS no \
    Link StarOne" disabled=no
    add chain=prerouting protocol=tcp dst-port=53 action=mark-routing \
    new-routing-mark=Link_MC-Online passthrough=yes comment="DNS no Link MC \
    Online" disabled=no
    add chain=prerouting routing-mark=Link_MC-Online action=mark-packet \
    new-packet-mark=Link_MC-Online passthrough=yes comment="PACOTES MARCADOS \
    no MC-Online" disabled=no
    add chain=prerouting protocol=tcp dst-port=110 action=mark-routing \
    new-routing-mark=Link_StarOne passthrough=yes comment="POP3 no Link \
    StarOne" disabled=no
    add chain=prerouting routing-mark=Link_StarOne action=mark-packet \
    new-packet-mark=Link_StarOne passthrough=yes comment="PACOTES MARCADOS no \
    Link StarOne" disabled=no
    add chain=prerouting protocol=tcp dst-port=1080 action=mark-routing \
    new-routing-mark=Link_StarOne passthrough=yes comment="???? no Link \
    StarOne" disabled=no
    add chain=prerouting routing-mark=Link_StarOne action=mark-packet \
    new-packet-mark=Link_StarOne passthrough=yes comment="PACOTES MARCADOS no \
    Link StarOne" disabled=no
    add chain=prerouting protocol=tcp p2p=all-p2p action=mark-routing \
    new-routing-mark=Link_StarOne passthrough=yes comment="P2P no Link \
    StarOne" disabled=no
    add chain=prerouting routing-mark=Link_StarOne action=mark-packet \
    new-packet-mark=Link_StarOne passthrough=yes comment="PACOTES MARCADOS no \
    Link StarOne" disabled=no


    FAILOVER

    / ip route
    add dst-address=192.5.5.241/32 gateway=192.168.1.254 distance=1 scope=255 target-scope=10 comment="Rota para root-server \\\"F\\\" - FailOver MC-Online" \
    disabled=no
    add dst-address=192.58.128.30/32 gateway=192.168.2.254 distance=1 scope=255 target-scope=10 comment="Rota para root-server \\\"F\\\" - FailOver StarOne" \
    disabled=no

    / system script
    \n\\n/ip route set \[/ip route find \route set \[/ip \\route find gateway=192.168.2.254\] disable=yes\\r\\
    dst-address=192.58.128.30/32\] disable=no\ "add name=Link-UPS " policy=ftp,reboot,read,write,policy,test,winbox,password

    \n\\n/ip route set \[/ip route find \.2.254\] disable=no\\r\\
    dst-address=192.5.5.241/32\] disable=no\ "add name=MC-Online-Off" policy=ftp,reboot,read,write,policy,test,winbox,password

    \n\\n/ip route set \[/ip route find \p route set \[/ip \\route find gateway=192.168.1.254\] disable=yes\\r\\
    dst-address=192.5.5.241/32\] disable=no\ "add name=MC-Online-On" policy=ftp,reboot,read,write,policy,test,winbox,password

    \n\\n/ip route set \[/ip route find \.1.254\] disable=no\\r\\
    dst-address=192.58.128.30/32\] disable=no\ "add name=StarOne-Off" policy=ftp,reboot,read,write,policy,test,winbox,password

    \n\\n/tool netwatch set\[/tool \st=192.5.5.241\] disable=no\\r\\
    netwatch find host=192.58.128.30\] disable=no\ "add name=StarOne-On" policy=ftp,reboot,read,write,policy,test,winbox,password

    / tool netwatch
    add host=192.58.128.30 timeout=3s interval=5s up-script=StarOne-On down-script=StarOne-Off comment="Link_StarOne" disabled=no
    add host=192.5.5.241 timeout=3s interval=5s up-script=MC-Online-On down-script=MC-Online-Off comment="Link_MC-Online" disabled=no

    / system scheduler
    \n" start-date=jan/01/1970 \00:00 “Links-UPS” policy=ftp,read,policy,test,winbox, sniff start-date=\\
    start-time=00:00:00 interval=10s comment="Forçar Verificao dos Links" disabled=no

    É isso aí pessoal.

  3. #3

    Padrão

    Faz o script dentro do netwatch, não precisa do script em system.
    e no ...[find...] busque pelo comment, e não pelo gateway. Sempre quando tentei pelo gateway, dava esse pau, ele ficava dando up e down logo em seguida.
    E outra dica, não pingue o gateway, porque, mesmo sem internet, ele vai pinga dando up, a não ser quando há falha na comunicação entre o gateway e o mikrotik, pingue sempre um host da internet, e crie uma rota estática para este server. A baixo o failover que eu criei, quando há queda na conexão e quando há falha na comunicação com o gateway. Adapte para o sua rede interna, o host externo que usei foi o OpenDNS e o DNS Advantage.

    /ip route
    add comment="Link Emergencial" disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.1.254 scope=30 target-scope=10
    add comment="Teste Link Emergencial" disabled=no distance=1 dst-address=156.154.17.9/32 gateway=192.168.1.254 scope=30 target-scope=10
    add comment="Teste Link Principal" disabled=no distance=1 dst-address=208.69.38.150/32 gateway=xxx.xxx.xxx.xxx scope=30 target-scope=10

    /tool netwatch
    add comment="Teste Link" disabled=no down-script="/ip route set [find comment=\"Link Principal\"] disabled=yes\r\
    \n\r\
    \n/ip route set [find comment=\"Link Emergencial\"] disabled=no" host=208.69.38.150 interval=5s timeout=1s up-script="\
    /ip route set [find comment=\"Link Principal\"] disabled=no\r\
    \n\r\
    \n/ip route set [find comment=\"Link Emergencial\"] disabled=yes"
    add comment="Teste Gateway" disabled=no down-script="/ip route set [find comment=\"Link Principal\"] disabled=yes\r\
    \n\r\
    \n/ip route set [find comment=\"Link Emergencial\"] disabled=no\r\
    \n\r\
    \n/ip route set [find comment=\"Teste Link Principal\"] disabled=yes\r\
    \n\r\
    \n/tool netwatch set [find comment=\"Teste Link\"] disabled=yes" host=xxx.xxx.xxx.xxx interval=5s timeout=1s up-script="/\
    ip route set [find comment=\"Teste Link Principal\"] disabled=no\r\
    \n\r\
    \n/tool netwatch set [find comment=\"Teste Link\"] disabled=no"
    add comment="Teste Link Emergencial" disabled=no down-script="" host=156.154.17.9 interval=5s timeout=1s up-script=""
    Lembrando que: neste failover não leva em consideração o load balance, para o teu caso, teria que desabilitar todas as rotas com marcas, e habilitar somente o link que está up, sem nenhuma marca, para que passe os pacotes marcados.
    A vantagem de não usar os scripts, é pela razão de desempenho mesmo, que neste caso economiza CPU, onde numa RB com muitos clientes, pode fazer mta diferença.