terça-feira, 31 de outubro de 2017

mAP para técnico de campo

Objetivo:

Permitir ao técnico agilidade na instalação acessando todos os equipamentos sem ficar fixando IP.
A configuração se parece com:
- as Ethernet em bridge
- a WLAN com NAT e servidor DHCP.

Sugestões adicionais não listadas aqui:
- O mAP pode fazer para o cliente a demonstração do serviço de Hotspot do Mikrotik
- O mAP pode discar uma OVPN pra um servidor da empresa.
- O Suporte pode discar uma EoIP em cima da OVPN pra ajudar o técnico de campo.

Pontos de atenção:

- Mikrotik reiniciado sem configuração default não tem IP precisa de acesso por MAC, tem que estar na mesma bridge.
- O notebook ou celular do técnico precisa de um servidor DHCP,
- Como é tudo uma só bridge e tem um DHCP Server ativo devemos evitar que ele conflite com o roteador do cliente ou DHCP da CPE que serve ao roteador do cliente.

Solução:

1) Trabalhar em bridge para permitir o acesso ao mikrotik por MAC.
2) Adicionar vários IPs diferentes na bridge para comunicação com cada rede que os equipamentos usam.
3) Criar DHCP Server da RB que é usada no Wi-Fi.
4) Fazer SRC-NAT do que vai para os equipamentos pois eles não tem gateway default.
5) Filtrar DHCP Server da RB que não atrapalhe a rede do cliente.
6) Configurações Básicas para acesso a RB.


Passo a passo:

1) Trabalhar em bridge para permitir o acesso ao mikrotik por MAC.

/interface bridge
add name=bridge
/interface bridge port
add bridge=bridge interface=wlan1
add bridge=bridge interface=ether1
add bridge=bridge interface=ether2

2) Adicionar vários IPs diferentes na bridge para comunicação com cada rede que os equipamentos usam.

/ip address
add address=192.168.1.10/24 interface=bridge comment="UBNT"
add address=10.0.0.204/24 interface=bridge comment="Padrao p Cliente"
/ip dhcp-client
add default-route-distance=1 disabled=no interface=bridge
/ip dns
set servers=8.8.8.8,8.8.4.4
/ip route
add distance=10 gateway=10.0.0.1 comment="Padrao p Cliente distancia maior que dhcp client"

3) Criar DHCP Server da RB que é usada no Wi-Fi.

/ip address
add address=192.168.5.1/24 interface=bridge
/ip pool
add name=pool-wifi ranges=192.168.5.100-192.168.5.200
/ip dhcp-server
add address-pool=pool-wifi disabled=no interface=bridge name=server-wifi
/ip dhcp-server network
add address=192.168.5.0/24 dns-server=8.8.8.8,8.8.4.4 gateway=192.168.5.1

/interface wireless security-profiles
add authentication-types=wpa-psk,wpa2-psk mode=dynamic-keys name=wireless \
    wpa-pre-shared-key=02091925 wpa2-pre-shared-key=02091925
/interface wireless
set [ find default-name=wlan1 ] disabled=no mode=ap-bridge security-profile=wireless \
    ssid=WiFiTecnico

4) Fazer SRC-NAT do que vai para os equipamentos pois eles não tem gateway default.

/ip firewall nat
add action=masquerade chain=srcnat src-address=192.168.5.0/24


5) Filtrar DHCP Server da RB que não atrapalhe a rede do cliente.

/interface bridge filter
add action=drop chain=input dst-port=67 in-interface=ether1 ip-protocol=udp \
    mac-protocol=ip
add action=drop chain=output dst-port=68 ip-protocol=udp mac-protocol=ip \
    out-interface=ether1
add action=drop chain=input dst-port=67 in-interface=ether2 ip-protocol=udp \
    mac-protocol=ip
add action=drop chain=output dst-port=68 ip-protocol=udp mac-protocol=ip \
    out-interface=ether2
add action=drop chain=forward dst-port=67 in-interface=wlan1 ip-protocol=udp \
    mac-protocol=ip
add action=drop chain=forward dst-port=68 ip-protocol=udp mac-protocol=ip \
    out-interface=wlan1

6) Configurações Básicas para acesso a RB.

/system identity
set name=mAP-Tecnico1
/user group
add name=null
/user aaa
set default-group=null
/user
add name=BLABLABLA password=BLABLABLA group=full
set [find name=admin] group=null password=RANDOM
set 0 group=null

Elastix não morreu

Infelizmente a marca Elastix foi comprada pela 3CX e quase perdemos uma ótima distribuição Asterisk.
Uma comunidade do México pretende continuar o Elastix o novo nome do projeto é Issabel.

Fonte: https://www.issabel.com/continuidad-elastix-mexico/

quarta-feira, 3 de maio de 2017

Mikrotik WebFig Skin Limitado

O pessoal acha que Mikrotik é difícil, pois pode muita coisa.
Então eu limitei bastante o WebFig dele pro pessoal não se perder.
Salve o conteúdo abaixo com extensão .json na pasta skin e atribua a um grupo de usuários.

Como eu digo, essas são coisas que eu não devo esquecer, então talvez seja melhor criar o seu skin, basta acessar o WebFig e clicar no botão "Desing Skin".


terça-feira, 25 de abril de 2017

RB Técnico Interno

Objetivo:

Permitir ao técnico ficar na rede da empresa e ter acesso aos equipamentos resetados que esta configurando.

Pontos de atenção:

- Mikrotik reiniciado sem configuração default não tem IP precisa de acesso por MAC, tem que estar na mesma bridge.
- Alguns equipamentos ao reiniciar tem servidor DHCP que pode propagar para rede corporativa(link).
- O Equipamento configurado por um técnico não pode ser visível para outro ou na rede corporativa.
- Alguns equipamentos precisam de DHCP client, mas não devem se misturar a rede corporativa.

Solução:

1) Trabalhar em bridge para permitir o acesso ao mikrotik por MAC e ao DHCP da empresa no PC do técnico.
2) Adicionar vários IPs diferentes na bridge para comunicação com cada rede que os equipamentos usam.
3) Fazer SRC-NAT do que vai para os equipamentos pois eles não tem gateway default.
4) Fazer redirect na Bridge quando o destino são as redes dos equipamentos, assim usando RB como gateway.
5) Filtrar toda comunicação entre empresa e equipamentos.
6) Filtrar DHCP Server dos equipamentos para o PC do técnico.
7) Criar DHCP Server da RB que é usada para alguns equipamentos.
8) Filtrar DHCP Server da RB que é usada para alguns equipamentos, para não atender PC do técnico e rede corporativa.
9) Configurações Básicas para acesso a RB.


Passo a passo:

1) Trabalhar em bridge para permitir o acesso ao mikrotik por MAC e ao DHCP da empresa no PC do técnico.
/interface bridge
add name=bridge1
/interface ethernet
set [ find default-name=ether1 ] name=ether1-Link
set [ find default-name=ether2 ] name=ether2-Notebook poe-out=off
set [ find default-name=ether3 ] poe-out=off
set [ find default-name=ether4 ] poe-out=off
/interface bridge port
add bridge=bridge1 interface=ether2-Notebook
add bridge=bridge1 interface=ether3
add bridge=bridge1 interface=ether4
add bridge=bridge1 interface=ether5
add bridge=bridge1 interface=ether1-Link
add bridge=bridge1

2) Adicionar vários IPs diferentes na bridge para comunicação com cada rede que os equipamentos usam.
/ip address
add address=10.0.0.2/24 interface=ether3 network=10.0.0.0
add address=192.168.1.2/24 interface=ether3 network=192.168.1.0
add address=192.168.2.2/24 interface=ether3 network=192.168.2.0
add address=192.168.88.2/24 interface=ether3 network=192.168.88.0
add address=192.168.100.2/24 interface=ether3 network=192.168.100.0
add address=192.168.13.1/24 interface=bridge1 network=192.168.13.0

3) Fazer SRC-NAT do que vai para os equipamentos pois eles não tem gateway default.
/ip firewall nat
add action=masquerade chain=srcnat dst-address=10.0.0.0/24
add action=masquerade chain=srcnat dst-address=192.168.1.0/24
add action=masquerade chain=srcnat dst-address=192.168.2.0/24
add action=masquerade chain=srcnat dst-address=192.168.88.0/24
add action=masquerade chain=srcnat dst-address=192.168.100.0/24
add action=masquerade chain=srcnat src-address=192.168.13.0/24

4) Fazer redirect na Bridge quando o destino são as redes dos equipamentos, assim usando RB como gateway.
/interface bridge nat
add action=redirect chain=dstnat dst-address=10.0.0.0/24 mac-protocol=ip
add action=redirect chain=dstnat dst-address=192.168.1.0/24 mac-protocol=ip
add action=redirect chain=dstnat dst-address=192.168.2.0/24 mac-protocol=ip
add action=redirect chain=dstnat dst-address=192.168.88.0/24 mac-protocol=ip
add action=redirect chain=dstnat dst-address=192.168.100.0/24 mac-protocol=ip
add action=redirect chain=dstnat dst-address=192.168.13.0/24 mac-protocol=ip

5) Filtrar toda comunicação entre empresa e equipamentos.
/interface bridge filter
add action=accept chain=forward in-interface=ether2-Notebook out-interface=ether1-Link
add action=accept chain=forward in-interface=ether1-Link out-interface=ether2-Notebook
add action=drop chain=forward out-interface=ether1-Link
add action=drop chain=forward in-interface=ether1-Link

6) Filtrar DHCP Server dos equipamentos para o PC do técnico.
/interface bridge filter
add action=drop chain=forward comment=\
    "Oferta DHCP - Colocar depois de permitir a rede da empresa" dst-port=68,67 \
    ip-protocol=udp mac-protocol=ip out-interface=ether2-Notebook
add action=drop chain=forward comment=\
    "Requisi\E7\E3o DHCP - Colocar depois de permitir a rede da empresa" \
    dst-port=67,68 in-interface=ether2-Notebook ip-protocol=udp mac-protocol=ip

7) Criar DHCP Server da RB que é usada para alguns equipamentos.
/ip pool
add name=dhcp_pool1 ranges=192.168.13.2-192.168.13.254
/ip dhcp-server network
add address=192.168.13.0/24 gateway=192.168.13.1
/ip dhcp-server
add address-pool=dhcp_pool1 disabled=no interface=bridge1 name=dhcp1

8) Filtrar DHCP Server da RB que é usada para alguns equipamentos, para não atender PC do técnico e rede corporativa.
/interface bridge filter
add action=drop chain=output comment="Oferta DHCP" dst-port=68 ip-protocol=\
    udp mac-protocol=ip out-interface=ether1-Link
add action=drop chain=output comment="Oferta DHCP" dst-port=68 ip-protocol=\
    udp mac-protocol=ip out-interface=ether2-Notebook
add action=drop chain=input comment="Requisi\E7\E3o DHCP" dst-port=67 \
    in-interface=ether1-Link ip-protocol=udp mac-protocol=ip
add action=drop chain=input comment="Requisi\E7\E3o DHCP" dst-port=67 \
    in-interface=ether2-Notebook ip-protocol=udp mac-protocol=ip

9) Configurações Básicas para acesso a RB.
/ip dhcp-client
add dhcp-options=hostname,clientid disabled=no interface=ether1-Link
/system identity
set name="MikroTik - Suporte1"
/ip dns
set servers=8.8.8.8,8.8.4.4
/user set admin password=********

domingo, 23 de abril de 2017

MT Invisível pra trabalhar em clientes corporatívos

Usando uma RB com 2 portas ethernet e 1 wireless.
Consegui inserir os clientes da wireless, como se fossem o PC da rede cabeada.

Acho que todos são responsáveis pelo que fazem, criei isso com o objetivo de fazer a transparência, mas teria me sido útil no passado.
Isso foi inspirado em um vídeo do MUM onde o palestrante faz mil coisas com um mAP.

Tentativas de me achar:


1) Tamanho e uptime do cabo
Existem equipamentos que para efeito de teste medem o cabo e dizem o tamanho de cada par. Se você colocar um cabo novo ligado a esse equipamento e o administrador testar novamente e tiver o resultado antigo vai perceber.
Solução:
- Colocar a RB próxima ao lado que não deve ter esse controle, mantendo o cabo original saindo do equipamento com esse controle.
- Usar um cabo do mesmo tamanho para o outro lado (os pares podem ter diferença de tamanho o que entregaria você).
- Ligar os cabos da LAN e WAN ao mesmo tempo na RB depois de ligada.
Comentário:
Nem nos servidores do pentágono deve ter essa preocupação


2) TTL
Cada sistema operacional tem um valor de TTL na origem do pedido:
Windows 128
Linux 64
Quando passa por um roteador esse valor é reduzido em 1, por tanto você seria percebido se colocasse um roteador a mais.
Solução:
- Saber qual é o sistema de cada lado e setar novo valor para o TTL, novo pois você poderia ter equipamentos na rede Wi-Fi diferentes com os da rede LAN.
Comentário:
Diversos provedores já no passado pensaram em bloquear o usuário de adicionar roteador para ele não dividir a internet, em redes corporativas nunca vi esse controle. Vou mostrar a solução.


3) Pacote ARP
O ARP pergunta o MAC de alguém e conta o seu próprio MAC e IP para facilitar a resposta.
Dentro do protocolo ARP esta o IP e esse valor não pode ser alterado.
Mas em rede local IP não é usado pra quase nada.
Solução:
- Desabilitar o ARP e inserir na tabela ARP entradas estáticas.
Comentário:
O problema é pior que ser achado, é achar um IP que não seja de outro equipamento da rede. Vou mostrar a solução.


4) DNS
Em uma rede corporativa solicitações de site externos não costumam ser feitas ao DNS interno.
Isso em teoria poderia ser detectado ou o DNS poderia responder um site interno de bloqueio.
Não deve existir rota em redes internas para DNSs externos como 8.8.8.8, então precisa saber o DNS interno.
Solução:
- Usar um Modem 4G USB e acessar a internet e DNS pelo 4G
- Colocar um firewall dropando DNS pra rede corporativa.
- Adicionar entradas estáticas no arquivo host do PC usado na Wi-Fi. SIM o Windows também tem arquivo host, como no linux.
- Usar um Modem 4G USB e acessar a internet e DNS pelo 4G
- Cadastrar o DNS interno como segunda opção a ser usado, sabendo dos riscos.
Comentário:
Ser pego aqui é o de menos o questão é resposta errada. E a dificuldade de saber o DNS interno a usar.


5) Outros protocolos e excesso de trafego
Quando você liga um PC ou celular a rede diversos programas em background tentaram enviar e receber dados, isso pode te entregar.
Solução:
- Adicionar regras bem restritivas ao firewall, trabalhar com lista branca.
Comentário:
Como isso vai depender muito do local e lista necessária não vou abordar aqui.


6) MAC
Switchs de datacenters costumam desligar a porta se outro MAC for conectado a ela como medida de segurança.
Solução:
- Clonar o MAC do PC para o Switch.
- Clonar o MAC do Switch para o PC.
Comentário:
Eu já derrubei uma porta sem querer ao fazer o sniffer de um servidor. Isso com certeza gerou um log. Mas logs só são olhados quando um problema precisa ser analisado.
Eu desliguei e religuei o switch "por acidente" a porta dele voltou liguei o servidor novamente, ninguém foi demitido a analise do sniffer ajudou a resolver o problema e ainda teve comoração no final do dia.


7) IPSec
Se toda rede trabalhar com IPSec ai não tem como entrar ou ler nada.
Sem solução.


Eu adicionaria a essa solução um Modem 4G USB com isso:
- Colocaria o DNS público
- Host da rede no arquivo hosts
- rota default para o Modem
- rotas necessárias para a rede corporativa
Com isso você pode trabalhar do seu notebook em um cliente usando a internet e a rede dele ao mesmo tempo, como se estivesse usando o PC que lhe foi dado para trabalhar.


Bom eu vou mostrar o que fiz infelizmente tudo manual agradeceria se alguém pensasse em script pra pegar as informações e automatizar a configuração.


Cenário do Lab:
PC com IP 192.168.55.254 MAC E4:8D:8C:65:B8:A9 e TTL 128
Gateway com IP 192.168.55.1 MAC 4C:5E:0C:71:5A:67 e TTL 64
Para facilitar criei um IP fictício 10.100.100.0/24 que não deve corresponder ao da rede que vai ser usada.

Como funcionou a transparência
Foi mais simples que pensava
Fiz NAT na Bridge para os MACs
Fiz NAT no firewall para os IPs
Fiz o trafego da bridge passar pelo firewall para permitir recuperar os pacotes recebidos com origem em NAT de saída e também interceptar algum pacote como fiz com o Winbox.
Eu me expus colocando a interceptação de pacotes para a porta do Winbox, fazendo parecer que o PC tem a porta do Winbox aberta, também permitindo acessar a RB de fora do Wi-Fi.


A parte comum:

/interface ethernet
set [ find default-name=ether1 ] name=ether-WAN
set [ find default-name=ether2 ] name=ether-LAN
/interface bridge
add arp=disabled name=bridge-Invisible
/interface bridge port
add bridge=bridge-Invisible interface=ether-LAN
add bridge=bridge-Invisible interface=ether-WAN
/interface bridge settings
set use-ip-firewall=yes
/ip neighbor discovery
set ether-LAN discover=no
set ether-WAN discover=no
set bridge-Invisible discover=no
/ip address
add address=10.100.100.2/24 interface=ether-LAN network=10.100.100.0
/ip route
add distance=1 gateway=10.100.100.1



A parte onde os TTLs, MACs e IPs da rede devem ser colocados com atenção:

/ip firewall mangle
add action=change-ttl chain=postrouting dst-address=192.168.55.254 new-ttl=set:64 out-interface=bridge-invisivel passthrough=yes
add action=change-ttl chain=postrouting new-ttl=set:128 out-interface=bridge-invisivel passthrough=yes


/ip arp
add address=10.100.100.1 comment=GATEWAY interface=bridge-Invisible mac-address=4C:5E:0C:71:5A:67
add address=10.100.100.254 comment=PC interface=bridge-Invisible mac-address=E4:8D:8C:65:B8:A9
/interface bridge nat
add action=src-nat chain=srcnat out-interface=ether-WAN to-src-mac-address=E4:8D:8C:65:B8:A9
add action=src-nat chain=srcnat out-interface=ether-LAN to-src-mac-address=4C:5E:0C:71:5A:67
/ip firewall nat
add action=src-nat chain=srcnat out-interface=bridge-Invisible to-addresses=192.168.55.1 dst-address=192.168.55.254
add action=src-nat chain=srcnat out-interface=bridge-Invisible to-addresses=192.168.55.254
add action=redirect chain=dstnat dst-port=8291 dst-address=192.168.55.254 in-interface=bridge-Invisible protocol=tcp
/ip route
add distance=1 gateway=10.100.100.254 dst-address=192.168.55.254/32



Eu criei rapidamente uma rede pois neste local de lab a internet era liberada sem proxy.

/interface wireless
set [ find default-name=wlan1 ] band=2ghz-b/g/n disabled=no mode=ap-bridge
/ip address
add address=192.168.56.1/24 interface=wlan1 network=192.168.56.0
/ip pool
add name=dhcp_pool0 ranges=192.168.56.10-192.168.56.254
/ip dhcp-server
add address-pool=dhcp_pool0 disabled=no interface=wlan1 name=dhcp1
/ip dhcp-server network
add address=192.168.56.0/24 gateway=192.168.56.1
/ip dns
set servers=8.8.8.8,8.8.4.4

quarta-feira, 29 de março de 2017

CGNAT

Com o fim dos IPv4 as operadoras precisam fazer NAT conhecido também com CGNAT (Carrier-grade NAT) ou em uma tradução livre NAT no nível do provedor.
Pra isso foi designado o range de IPs 100.64.0.0/10 conforme a RFC6598.
Mas vamos ser práticos, se você já entrega um IP privado comum pro cliente não tem por que você mudar para o IP do range 100.64.x.x só pra melhorar seu NAT para CGNAT.
E se você é provedor e tem um cliente que vai registrar a entrega dos IPs do Hotspot de forma eficiente pode entregar um IP fixo pra ele e fazer CGNAT no roteador dele usando IP Privado entregue ao cliente.

Não da pra rastrear CGNAT em cima de CGNAT. 

Mas qual a diferença do NAT normal para o CGNAT?

NAT

O NAT comum você coloca vários IPs privados usando o mesmo IP publico e não altera a porta de origem.
EX: O Navegador do cliente exemplo 192.168.30.10 usa aleatoriamente uma porta alta exemplo 63021 e fala com o IP do site exemplo 216.58.222.9 do blogger na porta 443 se for HTTPs.
Então temos uma conexão:
192.168.30.10:63021 --> 216.58.222.9:443 é alterada para 192.0.2.1:63021 --> 216.58.222.9:443

Um segundo cliente pode escolher a mesma porta ou uma outra porta imediatamente acima ou abaixo ou qualquer outra ficando impossível identificar qual cliente estava em que porta de origem e dizer qual cliente acessou o site.

CGNAT

Com CGNAT faz o que o NAT normalmente faz e também altera a porta de origem.
Então especificamos por exemplo que o cliente 192.168.30.10 usa portas de 10000-a 10999 e o
cliente 192.168.30.11 usa portas de 11000 a 11999.
192.168.30.11:63021 --> 216.58.222.9:443 é alterada para 192.0.2.1:10021 --> 216.58.222.9:443
192.168.30.10:57851 --> 216.58.222.9:443 é alterada para 192.0.2.1:11850 --> 216.58.222.9:443

Assim quando precisar identificar o cliente basta saber a porta de origem pois a porta identifica o IP de origem.

A grande sacada do CGNAT é controlar a porta de origem.

Como implantar?

Para fins didáticos eu vou dar nomes pra 2 métodos, só eu chamo assim, vou chamar de CGNAT Vertical e CGNAT Horizontal

CGNAT Vertical

Aprendi sobre esse método no WIKI da MIKROTIK. Como ele exige a criação de muitas regras tem até um script pra facilitar a implantação.


Quando e Como usar:
- Casos de hotspots públicos;
- Provedores sem AS com muito poucos IPs;
- Para dividir as portas tem que pensar quantos IPs privados vai colocar em cada IP público.

Vantagem:
- Colocar vários "Range de IPs Privados" em 1 único IP público;
- O Range de IPs Privados ficando dentro de 1 IP público a contagem de portas não se perde. A cada Range de IPs Privado novo uso um novo IP público.

Desvantagem:
- Muitas regras, pois são 2 (TCP, UDP) pra cada IP interno mais os jumps pra otimizar;
- Como são tantas regras o ICMP com certeza você vai escolher um IP qualquer para todos os clientes usarem, mesmo que seja diferente do IP que o cliente normalmente usa.




Exemplo de implementação com mikrotik:
/ip firewall nat
add action=jump chain=srcnat comment=CGNAT jump-target=CGNAT-192.0.2.160 out-interface=BridgeBackbone src-address=100.64.0.0/25
add action=jump chain=CGNAT-192.0.2.160 comment=CGNAT jump-target=CGNAT-192.0.2.160-0 src-address=100.64.0.0/28
add action=jump chain=CGNAT-192.0.2.160 comment=CGNAT jump-target=CGNAT-192.0.2.160-1 src-address=100.64.0.16/28
add action=jump chain=CGNAT-192.0.2.160 comment=CGNAT jump-target=CGNAT-192.0.2.160-2 src-address=100.64.0.32/28
add action=jump chain=CGNAT-192.0.2.160 comment=CGNAT jump-target=CGNAT-192.0.2.160-3 src-address=100.64.0.48/28
add action=jump chain=CGNAT-192.0.2.160 comment=CGNAT jump-target=CGNAT-192.0.2.160-4 src-address=100.64.0.64/28
add action=jump chain=CGNAT-192.0.2.160 comment=CGNAT jump-target=CGNAT-192.0.2.160-5 src-address=100.64.0.80/28
add action=jump chain=CGNAT-192.0.2.160 comment=CGNAT jump-target=CGNAT-192.0.2.160-6 src-address=100.64.0.96/28
add action=jump chain=CGNAT-192.0.2.160 comment=CGNAT jump-target=CGNAT-192.0.2.160-7 src-address=100.64.0.112/28
add action=src-nat chain=CGNAT-192.0.2.160-0 comment=CGNAT protocol=tcp src-address=100.64.0.0 to-addresses=192.0.2.160 to-ports=1500-1999
add action=src-nat chain=CGNAT-192.0.2.160-0 comment=CGNAT protocol=udp src-address=100.64.0.0 to-addresses=192.0.2.160 to-ports=1500-1999
add action=src-nat chain=CGNAT-192.0.2.160-0 comment=CGNAT protocol=tcp src-address=100.64.0.1 to-addresses=192.0.2.160 to-ports=2000-2499
add action=src-nat chain=CGNAT-192.0.2.160-0 comment=CGNAT protocol=udp src-address=100.64.0.1 to-addresses=192.0.2.160 to-ports=2000-2499
...
...
...
add action=src-nat chain=CGNAT-192.0.2.160-7 comment=CGNAT protocol=tcp src-address=100.64.0.126 to-addresses=192.0.2.160 to-ports=64500-64999
add action=src-nat chain=CGNAT-192.0.2.160-7 comment=CGNAT protocol=udp src-address=100.64.0.126 to-addresses=192.0.2.160 to-ports=64500-64999
add action=src-nat chain=CGNAT-192.0.2.160-7 comment=CGNAT protocol=tcp src-address=100.64.0.127 to-addresses=192.0.2.160 to-ports=65000-65499
add action=src-nat chain=CGNAT-192.0.2.160-7 comment=CGNAT protocol=udp src-address=100.64.0.127 to-addresses=192.0.2.160 to-ports=65000-65499

CGNAT Horizontal

Aprendi esse método com um colega provedor. A grande sacada é diminuir o número de regras usando netmap.
Como o netmap funciona? Ele altera os bits que fazem parte da rede.
O ideal então é que a mascara usada para selecionar os IPs que vão usar a regra seja igual a da rede assim teremos o NAT 1:1.
Vejam que no caso do ICMP que permite o cliente enviar ping pra internet eu não me preocupei com o NAT não ser 1:1 usei mascara /10 para /25.

Quando e Como usar:
- Provedores com AS mas menos IPs que clientes;
- Para dividir os "Ranges de IPs Privados" preciso saber quantos IPs públicos posso usar;
- Para dividir as portas tem que pensar quantos "Ranges de IPs Privados" vai precisar.

Vantagem:
- Quanto mais IP públicos, maior pode ser considerado o "Range de IPs Privados";
- Quanto mais IP públicos, menor o número de regras usadas; 1 regra pra 128 ou 1 pra 64

Desvantagem:


- Não da pra usar só 1 IP público;
- Tem que manter o controle de todos os Ranges usados pois a contagem de porta não zera. Assim se for criar uma nova regra precisa iniciar na ultima porta utilizada anteriormente.




Exemplo:

/ip firewall nat
add action=jump chain=srcnat jump-target=CGNAT out-interface="ether-LINK" src-address-list=!CLIENTES_FIXOS
add action=netmap chain=CGNAT protocol=icmp src-address=100.64.0.0/10 \
    to-addresses=192.0.2.0/25
add action=jump chain=CGNAT jump-target=CGNAT_100_64 src-address=100.64.0.0/16
add action=jump chain=CGNAT jump-target=CGNAT_100_65 src-address=100.65.0.0/16

add action=jump chain=CGNAT_100_64 jump-target=CGNAT_100_64_0-7 src-address=\
    100.64.0.0/21
add action=jump chain=CGNAT_100_64 jump-target=CGNAT_100_64_8-15 src-address=\
    100.64.8.0/21
add action=jump chain=CGNAT_100_64 jump-target=CGNAT_100_64_16-23 src-address=\
    100.64.16.0/21
add action=jump chain=CGNAT_100_64 jump-target=CGNAT_100_64_24-31 src-address=\
    100.64.24.0/21
add action=jump chain=CGNAT_100_64 jump-target=CGNAT_100_64_32-39 src-address=\
    100.64.32.0/21
add action=jump chain=CGNAT_100_64 jump-target=CGNAT_100_64_40-47 src-address=\
    100.64.40.0/21
add action=jump chain=CGNAT_100_64 jump-target=CGNAT_100_64_48-56 src-address=\
    100.64.48.0/21
...
...
...
add action=netmap chain=CGNAT_100_64_8-15 protocol=tcp src-address=\
    100.64.9.0/25 to-addresses=192.0.2.0/25 to-ports=5000-5499
add action=netmap chain=CGNAT_100_64_8-15 protocol=udp src-address=\
    100.64.9.0/25 to-addresses=192.0.2.0/25 to-ports=5000-5499
add action=netmap chain=CGNAT_100_64_8-15 protocol=tcp src-address=\
    100.64.10.0/25 to-addresses=192.0.2.0/25 to-ports=5500-5999
add action=netmap chain=CGNAT_100_64_8-15 protocol=udp src-address=\
    100.64.10.0/25 to-addresses=192.0.2.0/25 to-ports=5500-5999
...
...
...
add action=netmap chain=CGNAT_100_64_48-56 protocol=tcp src-address=\
    100.64.53.0/25 to-addresses=192.0.2.0/25 to-ports=17500-17999
add action=netmap chain=CGNAT_100_64_48-56 protocol=udp src-address=\
    100.64.53.0/25 to-addresses=192.0.2.0/25 to-ports=17500-17999
add action=netmap chain=CGNAT_100_64_48-56 protocol=tcp src-address=\
    100.64.54.0/25 to-addresses=192.0.2.0/25 to-ports=18000-18499
add action=netmap chain=CGNAT_100_64_48-56 protocol=udp src-address=\
    100.64.54.0/25 to-addresses=192.0.2.0/25 to-ports=18000-18499
...
...
...


Por que separei a questão dos "Ranges de IPs Privados", pois independente da utilização  (rotas, localização, agregações) IPs podem ser agrupados ou divididos pela mascara.
Exemplo: Se eu tenho na minha pra funcionamento 2 /25 posso dizer que tenho 1 /24 como posso dizer que tenho 64 /30

Se for usar 255 IPs públicos, posso usar ranges /24
Se for usar 128 IPs públicos, posso usar ranges /25
Se for usar 64 IPs públicos, posso usar ranges /26
Se for usar 4 IPs públicos, posso usar ranges /30

terça-feira, 7 de março de 2017

Enviar Localização no WhasApp Web

Todos os dias eu preciso enviar a latitude e longitude para os técnicos que vão abrir esta localização em seus celulares.

Eu sei que enviando o link abaixo do google maps funciona, mas tinha que ficar copiando concatenando e colando.

http://maps.google.com/maps?saddr=Current+Location&daddr=-22.5951525,-46.5446545

Então resolvi facilitar a minha vida.

Já uso inserir javascript em outras paginas, o conceito básico é:

1) escreva um código


message="http://maps.google.com/maps?saddr=Current+Location&daddr=";
coord = window.prompt("Entre: Lat, lon");
function sendMessage(message) {
    InputEvent = Event || InputEvent;
    var evt = new InputEvent('input', {
        bubbles: true
    });
    var input = document.querySelector("div.input");
    input.innerHTML = message;
    input.dispatchEvent(evt);
    document.querySelector(".btn-icon").click();
}
if (coord != null) {
    message=message+coord
    sendMessage(message);
}

2) Reduza ao máximo


Como vou salvar na barra de favoritos o legal é minificar:
https://jscompress.com/

3) Acione a chamada

Então coloque o código dentro do seguinte texto:
javascript:(function(){blablabla})();
javascript:void(blablabla)


Resultado:

javascript:(function(){function sendMessage(a){InputEvent=Event||InputEvent;var b=new InputEvent("input",{bubbles:!0}),c=document.querySelector("div.input");c.innerHTML=a,c.dispatchEvent(b),document.querySelector(".btn-icon").click()}message="http://maps.google.com/maps?saddr=Current+Location&daddr=",coord=window.prompt("Entre: Lat, Lon"),null!=coord&&(message+=coord,sendMessage(message));})();