quinta-feira, 8 de maio de 2014

NAT - Network Address Translation

Boa noite negada.

Vou fazer esse tópico para complementar o tópico de port-forwarding. É uma explicação mais a grosso modo (sem entrar em detalhes) mas pode ser lido separadamente para entendimento do NAT.

Vamos falar primeiramente sobre as camadas e os protocolos nessas camadas.

Vamos olhar as camadas de interface de rede. A que mais conhecemos é a ethernet, sobre a qual utilizamos para o uso da internet. No entanto, a internet (navegação em páginas) funciona através do protocolo HTTP que está na camada de aplicativos. Logo, existe uma hierarquia entre as camadas. Para acessarmos uma página na internet, utilizamos a sequência HTTP, TCP, IP, Ethernet.

Toda a nossa internet é baseada em cima da camada de internet IP. Ou seja, para que uma máquina se conecte na internet é necessário adquirir um IP de uma rede. Um IP é uma sequência ÚNICA de quatro conjuntos de números com no maximo 3 números cada. Exemplo: 187.124.243.211. Uma observação importante. Cada um desses conjuntos não pode ser maior que 255.

Pensando assim, podemos ver que existe um número fixo de IP's disponíveis (4 294 967 296 IP's). No entanto, se considerarmos todos os dispositivos conectados a internet, veremos que existe uma quantidade muito maior que os 4 bilhoes de IP's disponíveis (O dado revelado pela pesquisa “The Cisco Visual Networking Index Global Mobile Data Traffic Forecast Update" estima que o número de dispositivos conectados vai ultrapassar a população mundial em 2010, e que em quatro anos, chegará a casa dos 10 bilhões). Como é possível 10 bilhões de dispositivos se conectarem à internet se possuímos apenas um pouco mais de 4 bilhões de endereços IP's ? É possível justamente por causa do NAT. O NAT é uma forma utilizada para economizarmos os endereços IP's da internet.

Vou dar o exemplo da internet da minha casa. Atualmente, tem 6 smartphones, 4 notebooks, 1 Câmera IP  e uma Smart TV(sim, tem muita gente aqui). Como todos se conectam à internet, precisamos reservar 11 IP's dos 4 bilhões disponíveis, certo ? Não. Para todos esses dispositivos, temos apenas 1 endereço IP reservado na internet do mundo. E esse único IP pertence ao modem. Todos esses aparelhos estão abaixo do modem e não possuem acesso direto à internet. A internet do mundo conhece apenas nosso modem. Vamos simular um acesso ao site do google.

Eu abro o browser no meu celular que tem o IP de rede 192.168.0.103, e digito www.google.com.br. A requisição sai do meu celular, e vai para o roteador. O roteador registra que aquela requisição é da máquina com IP 192.168.0.103 e envia para o modem. O modem envia a requisição para a internet e a resposta chega a ele. Como ele só conhece o roteador na rede interna, ele repassa para o roteador. Já o roteador, conhece vários dispositivos. Ele pega a resposta, vê que a requisição foi feita pela máquina de endereço IP 192.168.0.103 e encaminha a resposta para essa máquina. Eu então visualizo o site do google no meu celular. Essa "jogada" que o roteador faz de guardar o endereço da máquina para depois lhe entregar a resposta, é chamado de NAT e permite que os smartphones e notebooks daqui de casa possa acessar a internet sem ter um IP válido.

Vale a pena lembrar. Os dispositivos na minha rede interna (smartphone, tv, camera e etc) possuem um IP. No entanto, esses IP's são chamados de IP's não válidos pois não são visíveis da internet. Já o roteador é o único que possui um IP válido pois é acessado de qualquer lugar da internet.

OBS.: Qualquer IP que possua um conjuto de valores maior que 255 é considerado inválido (Exemplo: 183.370.221.111 - Note que 370 não é um conjunto válido por passar de 255).

OBS. 2: Atualmente utilizamos a versão 4 do protocolo IP, chamado de IPv4. Realmente os endereços IP's válidos estão se esgotando na versão 4. No entanto já existe uma solução de contorno a muito tempo e é a versão 6 no protocolo IP (conhecido como IPv6). No IPv6 há uma mudança brusca em como será os IP's e as principais empresas do mundo (Google, Facebook, Yahoo, Cisco) realizam um dia anual para testes do IPv6.

Referências:
http://pt.wikipedia.org/wiki/Exaust%C3%A3o_do_IPv4
http://www.cisco.com/c/en/us/solutions/collateral/service-provider/visual-networking-index-vni/white_paper_c11-520862.html
http://pt.wikipedia.org/wiki/IPv6
.

segunda-feira, 5 de maio de 2014

Port-Forwarding e DDNS: Acessando sua IP-Camera de qualquer lugar

Acabei de encontrar esse tópico aqui como rascunho no blog... Já era pra tê-lo feito a muito tempo pois é parte importantíssima para a camera-ip (ou qualquer dispositivo de rede que você quiser) funcionar com sucesso. Já criei alguns tópicos nos quais fui circundando os tópicos necessários para configurar e por pra funcionar uma camera-ip na nossa rede... Foram assuntos de redes, roteador, até chegar nas configurações da câmera propriamente dita. Então vamos lá:

Após a alegria da câmera-ip funcionar na nossa rede e conseguirmos ver sua imagem, falta conseguirmos enxergar essa imagem de qualquer lugar do mundo. Ou seja: você quer ver o que está acontecendo na sua casa do computador do seu trabalho ? Pode! Você quer ver do seu celular ? Pode tambem! Vamos dar um jeito nisso.

Primeiramente vamos entender os passos que devem ser feitos:
1) Conseguir driblar a dinamicidade do nosso IP
2) Configurar regras do nosso roteador e camera (Port-Forwarding)
3) Configurar câmera-ip com IP estático na nossa rede
4) Acessar dispositivo

Vamos às explicações de cada um dos tópicos:
1) A maioria das redes domésticas, é um cabo RJ-21 (de telefone) que se conecta em um modem e um roteador que se conecta ao modem através de um cabo RJ-45 (de rede). A partir daí, o roteador distribui o sinal WI-FI e os dispositivos se conectam ao roteador. O primeiro problema é justamente com o modem pois ele é o único dispositivo que é visível na internet (isso aqui tá ficando complicado. Então vou fazer um outro tópico explicando a visibilidade dos dispositivos na internet. Topico feito aqui). Ele se conecta à rede mundial (internet) e pega um IP válido. Com esse IP, conseguimos atingir nosso modem de qualquer lugar do mundo. No entanto, esse IP é dinâmico. Isso quer dizer que ele muda de tempos em tempos (normalmente quando o modem é desligado).

 Cabo RJ-21 (Cabo do telefone)









                                                                     Cabo RJ-45
                       (Cabo de rede - par trançado)




Como descobrir nosso IP na rede mundial ? Vamos acessar o site http://www.whatismyip.com/ .
Esse site nos dá uma visão muito boa de nosso modem na rede mundial. Na imagem abaixo, tenho o IP que pegamos (179.104.135.214), nenhum proxy detectado na minha rede, a cidade que estou (Uberlândia), o estado (MG), país (BR) e o ISP (Provedor de Serviço de Internet) a CTBC.
Isso quer dizer que se você acessar esse endereço de IP do seu trabalho, você irá acessar meu modem. Sendo assim, você conseguirá acessar também seu modem.

Agora vamos conhecer um outro site. Esse se chama no-ip (http://no-ip.com). Esse site que irá fazer a mágica para a gente. Nós faremos um cadastro grátis nesse site e escolheremos uma URL disponível. No meu caso, escolhi http://thiagorss.bla.org. Você deve estar se perguntando o que essa URL tem a ver né ? É que ao invés de acessarmos nossa camera-ip pelo IP 179.104.135.214, nós iremos acessar o site http://thiagorss.bla.org. Quando uma requisição acessar essa nossa URL, o site no-ip irá se encarregar de redirecionar a requisição para nosso IP de verdade. Mas se o IP muda toda hora, como o no-ip vai saber para onde redirecionar ? Pois nós vamos usar um programa chamado DUC do no-ip que de 5 em 5 minutos irá contar para o site no-ip qual é o ip do nosso modem. Então tópico 1 resolvido.

2) Agora vamos fazer o chato Port-Forwarding. Isso vai garantir que quando a requisição chegar ao site http://thiagorss.bla.org, o no-ip irá enviar para meu modem, meu modem irá enviar para a requisição para o roteador e o roteador irá enviar para a câmera-ip. No entanto, como demorei 1 ANO pra fazer esse tutorial, trocamos nossa internet por fibra ótica e o aparelho que recebe o cabo de fibra ótica é modem e roteador ao mesmo tempo. Então vou mostrar a configuração nesse aparelho e tiramos duvidas sobre outros aparelhos nas perguntas.


Atualmente os aparelhos tem facilitado bastante o port-forwarding. Na imagem acima, tudo que tive que fazer foi, qualquer requisição que vier na porta 80, redirecione para o IP da minha camera-ip (192.168.0.200) na porta 80 tanto no protocolo TCP quanto UDP. Ative a regra clicando em Enable e salve.

Encontrei essa imagem na internet que explica bem todo o processo:




A requisição vem da internet (celular no 3G, computador da empresa - qualquer computador que náo esteja na rede da sua casa) e o seu provedor de internet (net, ctbc, gvt, etc) redireciona para seu modem. No modem, deve haver uma regra para enviar para o roteador. No roteador, ele redireciona para algum ip da sua rede interna (no nosso caso, o ip da nossa câmera).



Já os itens 3 e 4, me lembrei que já os expliquei aqui. hehehehhe.
Valeu e qualquer dúvida é só postar aí que vou dar um jeito.