quinta-feira, 26 de abril de 2018

ngrok torna DDNS passado

Essa semana estava testando um chatbot para skype e na documentação do exemplo sugeria o uso do ngrok pra rodar a demo, até então não conhecia o serviço.

Já vi muitos modos de fazer túnel para diversos propósitos, mas a simplicidade e utilidade deste serviço é impressionante.

O site oficial é ngrok.com.
Eu usei para criar um túnel publico pra a aplicação que esta rodando na minha maquina de desenvolvimento, mas não é só isso, o Skype exige que o servidor seja HTTPS, eu não precisei criar certificado, nem parei pra pensar nisso.

O túnel no lado publico é HTTP ou HTTPS usa o certificado da ngrok, afinal é um subdomínio deles, e chama do meu lado aplicação HTTP.

Simplesmente tinha meu servidor XAMPP exposto em um subdominio deles com certificado ou seja HTTPS. No segundo seguinte meu aplicativo em NODE.JS do bot funcionado com HTTPS recebendo os webhooks.

DDNS é coisa do passado com esse serviço, quanto já apanhei:
 - configurando encaminhamento de porta do roteador,
 - fixando a reserva de IP no DHCP pra minha maquina,
 - gerar um certificado HTTPS quase impossível em algumas situações.



Como o site diz:
Public URLs for building webhook integrations.
Public URLs for testing your chatbot.

Publique endereços para webhooks que também são usadas por chatbots.

Public URLs for exposing your local web server.
Public URLs for demoing from your own machine.
Public URLs for sending previews to clients.
Public URLs for testing on mobile devices.

Publique URLs para expor seu servidor local permitindo demonstração, mostrar previas sem precisar fazer deploy, testar backend de aplicativos moveis.

Public URLs for SSH access to your Raspberry Pi.

Crie túnel TCP para acessar seu servidor por SSH.

Éhhhh o serviço não é exclusivo pra HTTP/HTTPS é também túnel TLS e TCP.
Você pode expor um banco de dados, qualquer serviço que quiser.

Espero que tenham achado tão util quanto eu.

quarta-feira, 21 de fevereiro de 2018

UBNT SSH Mudar frequência ou outro parâmetro

Esses dias peguei um PTP que estava sofrendo interferência e não conseguia acessar o lado AP por HTTP. Muito lento consegui abrir SSH.
Então precisei alterar a frequência pra depois continuar a configurar.
Usei o comando SED que esta disponível no shell.
Supondo que mudei de 5500 MHz para 5560 MHz segue o exemplo


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));})();

quinta-feira, 17 de dezembro de 2015

WhatsApp bloqueado e agora?

WhatsApp bloqueado e agora?
Antes de continuar, vamos lembrar que isso era apenas por 48 horas (iniciando dia 17/12/2015 as 00:00), e já foi suspenso.
A decisão judicial foi porque o WhatsApp não atendeu à solicitação de entregar informações sobre um crime de pedofilia.
Impossibilidade de cumprir a ordem, ou desprezo a justiça brasileira? Não sei a resposta, minha opinião pessoal, sem conhecer os fatos, é que foi desprezo.
Apesar das operadoras, realmente, estarem apavoradas com o tipo de serviço prestado pelo WhatsApp, elas não são as responsáveis.
Até onde li, somente a Oi entrou com pedido pra não precisar cumprir a ordem. As Operadoras não estão achando ruim o resultado da ordem judicial.
Mas importante é saber que não foram as operadoras, o problema é a não cooperação em resolver um crime de pedofilia.
Aqui eu pretendo apresentar 2 soluções para nos comunicarmos, vou apresentar argumentos pra que você tome sua decisão.
Se você acha que ignorar a ordem judicial é errado, a solução é usar outro serviço. Vamos todos juntos escolher outro aplicativo pra usar e vamos continuar com ele depois das 48horas.
Eu vou sugerir o Telegram, por que eu já tenho a bandeira do software livre e o Telegram esta alinhado comigo nesta.
Eu vou sugerir o Telegram, por que ele oferece condições de integrar  os meus sistemas com os dele,  através do que é conhecido como API.
Empresas como a Jovem Pan tiveram de escolher outro aplicativo, devido a impossibilidade de integração e interesses comerciais.
Hoje foi dado um passo muito perigoso, pois foi feito o bloqueio a um serviço de internet. Isto é censura, como ocorre na China, por exemplo.
Por esse motivo do bloqueio, eu vou sugerir que você use um serviço de VPN.

O que é VPN (Virtual Private Network)? De forma simples: você pega todos os dados que saem do seu celular, entrega pra um servidor, que esta liberado e fora do país e esse servidor manda seus dados pra onde eles iriam inicialmente.
Ótimo, mas quem é o responsável por esse servidor? Será que ele vai cuidar do seu sigilo?
O que eles podem saber?
Eles conseguem saber o o volume de dados é para quem de dados foram enviados. Se não acessarmos páginas HTTPS, somente HTTP e outros serviços não protegidos, até o que foi enviado (o texto, a foto)  eles podem pegar e guardar. 
Mas sua invasão de privacidade não acaba aqui.Para usar o VPN, de forma simples, você vai instalar um aplicativo no seu celular. Eu testei um que está sendo muito divulgado hoje.
Ele pediu acesso:
- a todos os arquivos, incluindo as fotos e videos do meu celular;
- pediu pra saber quais outros aplicativos estão rodando no meu celular.
Eles precisam ganhar pra manter o serviço gratuito e então também mandaram muita propaganda.

OK, agora temos duas soluções e sabemos os riscos de usar uma VPN, o que você vai fazer?
https://play.google.com/store/apps/details?id=org.telegram.messenger