Marcadores

terça-feira, 27 de fevereiro de 2018

FAIL OVER AVANÇADO COM MIKROTIK

MikroTik é uma empresa da Letônia, fabricante de equipamentos para redes de computadores. Vende produtos wireless e roteadores. Foi fundada em 1995, com intenção de venda no mercado emergente de tecnologias wireless. Seus equipamentos são muito utilizados por provedores de banda larga e empresas dos mais variados segmentos (hotéis, pousadas, universidades, empresas, etc) em todo o mundo, em função de sua conhecida estabilidade e versatilidade.


O Router OS
O principal produto da empresa é o sistema operacional baseado em Linux chamado MikroTik RouterOS. Ele permite que qualquer plataforma x86 torne-se um poderoso roteador, com funções como VPNProxyHotspots, Controle de Banda, QoSFirewall, dentre outras, que variam de acordo com o nível de licença do sistema adquirido.
Com o RouterOS pode-se criar uma rede muito segura, com um firewall eficiente e concatenação de links. Além disso, o sistema conta com o suporte de protocolos de roteamento, entre eles BGPRIPOSPFMPLS, etc.

Tema abordado - Fail Over (Link Contingente - Link Backup)

Neste tutorial abordaremos como implementar um sistema de fail over nos links (tantos quanto forem) num cenário onde não depende que o link seja autenticado por PPPoE para checagem do gateway.

Aplicação:

A aplicação desde tutorial é tanto para que tem links conectados através de PPPoE, bem como para quem tem links entregues com IP's privados (Nat) no Mikrotik, onde normalmente não se tem gerência ,o que torna a checagem padrão inviável.

Neste tutorial a checagem poderá ser feito a qualquer IP público a seu critério.

Bom, vamos aos trabalhos!

Considerando que meus modens tem os seguintes endereços e que as respectivas interfaces já estão devidamente mascaradas com algum DNS configuradados.

Wan1: 192.168.1.100
Wan2: 192.168.200.1

Nas regras a seguir, nós informaos ao Mikrotik que quando algum pacote tiver com destino algum desses IP's públicos sairão pelos Gateways especificados.

/ip route
add distance=1 dst-address=157.56.198.220/32 gateway=192.168.1.100 scope=10
add distance=1 dst-address=186.192.90.5/32 gateway=192.168.1.100 scope=10
add distance=1 dst-address=200.174.107.16/32 gateway=192.168.1.100 scope=10

Nas próximas regras, nós informaos ao Mikrotik que todo pacote com destino ao 192.168.56.1 sairá pelo gateway recursivos que são os IP's públicos anteriores. Neste momento fazemos a checagem por ping. 

add check-gateway=ping distance=1 dst-address=192.168.56.1/32 gateway=157.56.198.220 scope=10
add check-gateway=ping distance=1 dst-address=192.168.56.1/32 gateway=186.192.90.5 scope=10
add check-gateway=ping distance=1 dst-address=192.168.56.1/32 gateway=200.174.107.16 scope=10

Agora criamos a nossa saída para a internet 0.0.0.0/0 e dizemos ao Mikrotik que a internet sai pelo gateway 192.168.56.1

add distance=2 gateway=192.168.56.1

Seguimos com a mesma lógica para o outro link...

add distance=1 dst-address=157.240.12.13/32 gateway=192.168.200.1 scope=10
add distance=1 dst-address=209.200.152.45/32 gateway=192.168.200.1 scope=10
add distance=1 dst-address=216.58.222.69/32 gateway=192.168.200.1 scope=10

add check-gateway=ping distance=1 dst-address=192.168.57.1/32 gateway=157.240.12.13 scope=10
add check-gateway=ping distance=1 dst-address=192.168.57.1/32 gateway=209.200.152.45 scope=10
add check-gateway=ping distance=1 dst-address=192.168.57.1/32 gateway=216.58.222.69 scope=10

add distance=3 gateway=192.168.57.1

Observem que a distância do gateways que saem para 0.0.0.0/0 (Internet) são diferentes.

192.168.56.1 tem distância 2
192.168.57.1 tem distância 3

Ou seja esse gateways com saída para internet terão prioridades diferentes, onde 2 é maior que 3. Logo meu gateway primário é 192.168.56.1.

Pronto! Desta forma o Mikrotik checará os 3 IP's públicos que definimos e somente se os 3 não responderem, o Mikrotik derruba a roda a assume a secundário com saída para internet.

Ps.: Fiquem atentos ao Scope, onde deve ser 10 nos recursivos e nas saída para internet pode deixar padrão mesmo (30).

Caso deseje não perder acesso quando o Mikrotik derrubar uma rota por falta de internet, você pode adicionar seu gateway real para internet com uma distância maior que os recursivos. Ex.: 4 e 5.

Desta forma ainda que a rota seja derrubada, você tera uma rota sem checagem para o IP do seu modem, não perdendo o acesso.

Façam bom uso do tutorial e acompanhe nosso canal no YouTube com esse e outros vídeos. Link abaixo. 

Até máis!

segunda-feira, 26 de fevereiro de 2018

PFSENSE - CONFIGURANDO UM LOAD BALANCE COM FAILOVER SEM PROBLEMAS COM BANCOS

Para quem não sabe, o pfSense é um ótimo sistema para roteamento com ferramentas avançadas de rede, incluindo geração de gráficos e instalação de pacotes adicionais permitindo dar uma melhorada no que já é bom.

Nesse post vou ensinar a vocês como realizar um balanceamento de carga entre links de internet, fazendo também um failover, que em caso de queda de um dos links, o sistema exclui ele da tabela para que seus clientes continuem a navegar sem maiores problemas.


REQUISITOS

Primeiro certifique-se que possui uma boa máquina, um processador Dual Core Intel já dá conta do recado.

Um HD de 250GB é suficiente visto que aqui não utilizaremos cache de arquivos, será apenas para instalação do sistema propriamente dito, e para a geração de relatórios que o pfSense faz automaticamente em RRD Graphics.

É importante ter ao menos 2GB de RAM, lembrando que isso estará associado à demanda de trafego. Para uma rede razoável com alguns PC's em torno de 200 ou mais, 2GB é suficiente. No geral, 4GB é mais do que suficiente.

Apenas para cálculo, cada estado de conexão consome 1KB, 1.000.000 consome 1GB, isso dependerá de sua rede, adapte-a conforme necessário.

Tendo uma boa máquina, usaremos a versão do pfSense 2.1.5 x64 por questões de estabilidade, pois a versão 2.2.2 se mostrou instável apresentando travamentos esporádicos.

Link para baixá-lo:

http://mirror.pregi.net/pub/pfsense/downloads/pfSense-LiveCD-2.1.5-RELEASE-amd64.iso.gz

Realize a instalação e configuração conforme descrito no vídeo:

https://www.youtube.com/watch?v=0aalgULiLHE

Espero ter ajudado! Em caso de dúvida, terei o prazer em responder.

Abraços!

sexta-feira, 24 de outubro de 2014

CONFIGURANDO O PFSENSE COM SQUID 2.7 STABLE + DNS SERVER + DSCP/TOS MARK

CONFIGURANDO O PFSENSE


O pfSense é um ótimo Firewall baseado em FreeBDS, mas no nosso caso pouco usaremos o potencial que ele tem a nos oferecer como Firewall, apenas o usaremos pela facilidade de configuração do pacote Squid que está disponível para ele, por ter uma interface gráfica intuitiva e completa, de fácil configuração, atendendo bem do iniciante ao experiente em sistemas Firewall.

Nesse caso precisaremos de uma máquina (física ou virtual) com 2 interfaces, 01 para WAN e 01 para LAN, apesar de não usarmos a WAN. Como o pfSense é um sistema Firewall a primeira interface disponível ele a trata como WAN, por isso a necessidade da segunda que ele a define como LAN, e no nosso caso será a que usaremos.

No meu caso tenho uma máquina virtual em vSphere, com um processador Xeon, 6GB de memória e um HD de apenas 50GB, somente para explicação, como se trata de um servidor para cache, o ideal é ter um HD maior. Ao menos 1 TB.

Importante lembrar que na seção de configuração do cache do Squid, o valor configurado para memória deve ser igual ou inferior a 50% da memória RAM total da máquina. E o total livre no HD do sistema do pfSense deve ser de ao menos 30GB.


BOM MÃOS A OBRA.



Baixe o ISO do pfSense no seguinte endereço:

https://www.pfsense.org/download/mirror.php?section=downloads

Grave num CD ou pendrive e configure o boot para a correspondente inicialização.

Instale o pfSense conforme mostra o vídeo com as configurações padrões e defina o endereço da interface LAN para 172.16.0.2 com máscara /30 e o gateway apontando para o endereço que colocamos no MikroTik, 172.16.0.1 vide post anterior, as outras opções apenas aperte enter, e quando perguntado sobre ativar o DHCP responda que não. Pressione y no final para concluir as configurações, assim que voltar ao meno principal, escolha a opção 5 para rebootar o pfSense.

Conecte o cabo na interface LAN e ligue na porta corresponde do MikroTik.

CONFIGURANDO O BÁSICO + SQUID NO PFSENSE





Parâmetros que devem ser adicionados ao campo custom options para que seja realizada as marcações DSCP/TOS no Squid do pfSense.

tcp_outgoing_tos 0x30 all;
zph_mode tos;
zph_local 0x30;
zph_parent 0;
zph_option 136;

CACHE FULL - MIKROTIK / PFSENSE PARALELO (SQUID 2.7) / DNS SERVER / MARCAÇÃO TOS

1º PASSO - CONFIGURANDO O MIKROTIK


Presumindo que já temos nossos clientes navegando na internet através no MikroTik, que o link já esteja mascarado e que os serviços de DNS estejam configurados, bem como suas rotas.

Primeiro escolha uma porta livre e dê um nome a ela sugestivo. (Ex. Cache, pfSense, no nosso caso ether4-proxy)


1 - Configure o endereço para a interface nomeada - ether4-proxy que é onde meu proxy está ligado)

/ip address add address=172.16.0.1/30 comment=CACHE disabled=no interface=ether4-proxy network=172.16.0.0


2 - Mascare a rede do pfSense para que ele possa ter acesso a internet. No nosso caso a ether1-internet-west é onde está meu link de internet, se for conexão PPPoE coloque sua conexão PPPoE) 

/ip firewall nat add action=masquerade chain=srcnat disabled=no out-interface=ether1-internet-west src-address=172.16.0.0/30


3 - Criaremos um lista em Address Lists com o endereço do proxy pois vamos usá-la na regra Mangle para que nosso tráfego não entre em loop quando for redireicionado.

/ip firewall address-list add address=172.16.0.2 comment=Proxy disabled=no list=sem_proxy


4 - Criaremos um rota estática para o nosso endereço do proxy 172.16.0.2, marcando essa rota, de forma que iremos identificá-la na regra Mangle a frente. O nome da marcação pode ser qualquer um. Escolhi route_to_proxy.

/ip route add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=172.16.0.2 routing-mark=route_to_proxy scope=30 target-scope=10


5 - Faremos o redirecionamento da porta 80 para rota estática que configuramos excluindo a própria interface do proxy e seu endereço que está em Address Lists, para evitar um loop de rede. A exclusão é sinalizada com a ! na frente da caixa.

src-address é a rede que você deseja redirecionar, no caso seus clientes.

5.1
/ip firewall mangle add action=mark-routing chain=prerouting comment="REDIRECT PPPoE" disabled=no dst-address-list=!sem_proxy dst-port=80 fragment=no hotspot="" in-interface=!ether4-proxy new-routing-mark=route_to_proxy passthrough=no protocol=tcp src-address=10.2.0.0/24

No caso de HOTSPOT observe que para redirecionar o tráfego, deve se marcar a opção auth conforme item 5.2

5.2

/ip firewall mangle add action=mark-routing chain=prerouting comment="REDIRECT HOTSPOT AUTENTICADOS" disabled=no dst-address-list=!sem_proxy dst-port=80 fragment=no hotspot=auth in-interface=!ether4-proxy new-routing-mark=route_to_proxy passthrough=no protocol=tcp src-address=192.168.0.0/24


6 - Feito isso iremos marcar nossos pacotes para que possamos identificá-los na saída global-out e podendo assim definir a que velocidade serão entregues aos nossos clientes.

Aqui eu fiz as marcações DNS para que a resolução seja feita a 100M já que os pacoes UDP DNS são pequenos e não há um consumo representativo de rede.

MARCAR PACOTES DNS

/ip firewall mangle add action=mark-packet chain=prerouting comment="DNS Packets" disabled=no dst-port=53 new-packet-mark=dns-packets passthrough=no protocol=udp

MARCAR PACOTES COM DSCP/TOS 12

/ip firewall mangle add action=mark-packet chain=prerouting comment="Mark Cache Hit Packets" disabled=yes dscp=12 new-packet-mark=proxy-hit passthrough=no


7 - Aqui vamos definir a velocidade de entrega dos pacotes marcados. Crio primeiro uma Queue Type pois uso o tipo PCQ por uma questão de desempenho. Recomendo sua leitura no Google para mais informações. Depois criaremos um Queue Tree para os pacotes DNS e os pacotes que sairão do cache.

EM QUEUES TYPE PRIMEIRO PARA QUE NOSSAS TREE POSSAM USAR ESSA TYPE

/queue type add kind=pcq name=CACHE pcq-burst-rate=50M pcq-burst-threshold=30M pcq-burst-time=10s pcq-classifier=dst-address pcq-dst-address-mask=32 pcq-dst-address6-mask=64 pcq-limit=2k pcq-rate=30M pcq-src-address-mask=32 pcq-src-address6-mask=64 pcq-total-limit=4000


Aqui defini que cada cliente terá um pico de 50M por 10s e se o tráfego for contínuo cairá para 30M, respeitando o total dividido ou não na Tree, que vamos setar logo a seguir.

EM QUEUES TREE DEPOIS

Aqui defino que o total para os pacotes marcados com DSCP/TOS será de 100M, ou seja se tivermos 3 clientes, 1 a 50M e 2 a 30, limitará em 100M. Ajuste conforme suas necessidades.

/queue tree add burst-limit=0 burst-threshold=0 burst-time=0s disabled=yes limit-at=0 max-limit=100M name="CACHE-FULL TOS" packet-mark=proxy-hit parent=global-out priority=8 queue=CACHE

Aqui defino que nossos clientes farão resolução DNS a no máximo 100M


/queue tree add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=100M name="DNS Packets" packet-mark=dns-packets parent=global-out priority=8 queue=default

VÍDEO:

http://youtu.be/f5EB95j1Hxw