quinta-feira, 25 de outubro de 2012

Como acessar a IP Camera a partir da Internet

Depois que publiquei o artigo Clone da Camera IP Wireless Foscam FI8908W muitas pessoas me perguntam como configurar a câmera e o modem/roteador para que seja possível visualizar as imagens a partir da Internet. Neste artigo explicarei como fazer isso.

Vou mostrar a configuração de uma câmera Foscam FI8908W ligada a um modem/router GVT Power Box conectado a um acesso ADSL. Você pode ter outros modelos de modem/router, dependendo de seu provedor ou do equipamento que você mesmo adquiriu. Os conceitos envolvidos (abrir portas, configurar ddns, fixar IP etc)  serão os mesmos, mas obviamente as telas de configuração podem não corresponder aos seus equipamentos.

Toda e qualquer comunicação na Internet exige três informações: O endereço IP do computador origem (aquele que está iniciando a comunicação), o endereço IP do computador destino (aquele que será acessado) e o serviço que está sendo acessado, por exemplo HTTP (sites web),  HTTPS (web criptografada), FTP (transferencia de arquivo), SMTP (e-mail) etc etc.

Ante de começar a configuração você precisa entender alguns conceitos:

1) Endereço IP Público
É o endereço IP que o seu provedor de Internet vai fornecer para o seu modem/roteador. Esse IP é chamado de público porque ele é único na Internet e pode ser localizado e acessado de qualquer lugar. Um endereço IP é um número no formato nnn.nnn.nnn.nnn, por exemplo um dos endereços públicos do www.google.com é 177.99.189.231

2) Endereço IP Privado 
São os endereços IP usados pelos computadores na rede interna de sua casa ou de uma empresa. Por questões de segurança esses endereços normalmente não são acessíveis a partir da Internet (você não quer um hacker acessando o seu computador, não é mesmo?). Em redes domésticas os endereços privados normalmente estão na faixa 192.168.nnn.nnn

3) TCP e Porta de serviço.
Os serviços na Internet são identificados por números de portas. Assim, HTTP corresponde a porta TCP 80, HTTPS usa a porta TCP 443, SMTP (e-Mail) usa a porta TCP 25 e por ai vai. TCP significa Transmission Control Protocol e é um dos protocolos da Internet.  Existem outros protocolos como por exemplo o UDP - User Datagram Protocol mas neste artigo vamos nos preocupar apenas com os serviços TCP. 

Um detalhe importantíssimo:  A maioria dos provedores bloqueia acessos com destino ao seu IP público nas portas mais conhecidas, afinal de contas você é um usuário doméstico e não deveria ter servidores de conteúdo em casa! No caso de empresas, elas pagam bem mais caro por um link de Internet com IP Fixo e sem restrições de portas.

4) NAT - Network Address Translation
Quando você acessa um site na Internet, obviamente espera receber de volta a página acessada, não é? Mas como o site da Internet  consegue mandar a página de volta, se o seu computador está na rede interna e portanto tem um IP privado? A resposta é tradução de endereços. Quando seu computador acessa o site na Internet, o seu modem/roteador substitui o endereço IP privado do seu computador pelo endereço IP público fornecido pelo provedor, e só então envia a solicitação para o site na Internet. Dessa forma o site responde para o IP público. A resposta chega no seu modem/roteador, que conhece o IP privado do computador que fez a solicitação e portando pode entregar a resposta ao computador correto na rede interna.

5) Hostname e DNS
Hostname é o nome atribuído a um endereço IP. Quando você acessa www.google.com  o seu computador primeiro consulta um serviço chamado DNS - Domain Name Service. Esse serviço traduz os nomes para os correspondentes endereços IP. O provedor de Internet fornece o serviço DNS para seus clientes.

6) DDNS - Dynamic Domain Name Service
Como o nome indica, DDNS é uma variação do serviço DNS. Ele permite que o IP correspondente a um hostname seja alterado de forma fácil e rápida, por isso o termo "dinâmico".  Existem vários provedores de DDNS na Internet e a maioria oferece o serviço básico de forma gratuíta.

7) IP Dinâmico e DHCP
Você já sabe que cada dispositivo ligado a uma rede precisa de um endereço IP. Mas seria muito trabalhoso se tivessemos de configurar o endereço em cada dispositivo individualmente, certo? Imagine se o seu provedor de Internet tivesse de configurar o IP publico de cada modem/roteador  na casa de cada cliente. A possibilidade de conflito de endereços, erro de digitação, alteração pelo cliente etc seria muito alta. Dessa forma foi criado o Dynamic Host Configuration Protocol - DHCP que nada mais é do que um protocolo que faz toda a configuração automaticamente, quando você liga o seu computador, modem, smartphone, roteador ou qualquer dispositivo que esteja ligado a uma rede (seja ela privada ou pública). Existe um servidor DHCP em cada rede, que mantém a tabela dos IPs em uso, quando foram fornecidos e por quanto tempo eles serão válidos. Nas redes domésticas quem faz o papel de servidor DHCP é o modem/roteador.

Agora que você já sabe o básico sobre o funcionamento da Internet, talvez já tenha percebido alguns obstáculos que impedem a sua câmera de ser acessada pela Internet. Vamos listar todos eles:

1) Sua câmera está na rede interna, e portanto tem um IP privado dinâmico fornecido pelo DHCP do modem/router.
2) Você acessa a câmera pela porta HTTP (TCP 80) e provavelmente seu provedor de Internet está bloqueando acessos ao seu IP público nessa porta.
3) O seu modem/roteador impede acessos com origem na Internet destinados aos IPs privados.
4) O IP público do seu modem/roteador também é dinâmico e vai trocar de tempos em tempos.


Agora vamos resolver cada um dos problemas acima:

1) Sua câmera está na rede interna, e portanto tem um IP privado dinâmico fornecido pelo DHCP do modem/router.

Se a câmera ficar trocando de IPs você não vai conseguir acessá-la nem mesmo a partir da rede interna, a menos que abra as configurações do modem/router e descubra qual IP está em uso neste momento. Para evitar isso, você deve fixar o endereço IP da câmera.

Essa configuração varia muito dependendo do modelo de modem ou router que você possui. No router
GVT PoweBox voce deve acessar a tela "Rede Local" e escolher a opção "DHCP".

(Clique nas imagens para ampliar)



A tela acima mostra informações importantes. Primeiro, ela informa que a faixa de endereços dinâmicos reservada ao DHCP vai de 192.168.25.2 até 192.168.25.240. Ela também mostra a lista de IPs atualmente em uso. Em outros modem/routers você talvez tenha de consultar essas informações em duas ou mais telas.

Eu sei que a minha câmera é o dispositivo com IP 192.168.25.2. Como eu descobri isso? Simples, basta acessar o endereço http://192.168.25.2 e verificar se aparece a tela de login da câmera.

Aqui eu tenho duas opções. Ou eu configuro o DHCP do modem/router para fornecer sempre o IP 192.168.25.2 para a câmera, ou eu entro nas configurações da câmera e configuro ela para usar um IP que esteja fora da faixa reservada ao DHCP.

Opção 1: Fixar o IP no DHCP do modem/router:
Para isso, basta informar o MAC address da câmera (disponível na lista de dispositivos conectados) e informar também o IP que eu desejo fixar.  Veja como fica a tela acima, após fixar o IP 192.168.25.2 para o MAC address 00:0d:c5:d0:48:00 da minha câmera:


A opção 1 é a minha preferida pois a única informação necessária é o MAC address da câmera, que o próprio modem/router já fornece. Além disso, não é preciso configurar nada na câmera.

Opção 2: Fixar o IP na própria câmera:
Essa opção é ligeiramente mais difícil, pois você precisa escolher um IP que NÃO faça parte da faixa do DHCP. No exemplo abaixo eu escolhi 192.168.25.250. Além disso, você precisa saber os endereços do default gateway, subnet mask e do DNS server. Esses endereços irão variar dependendo do seu modem/router e provedor Internet.

A configuração é feita na câmera, acessando "Basic Network Settings":


Mais uma vez, lembre-se: você só precisa fixar o IP em um dos dispositivos, ou seja , ou escolhe a opção 1, ou escolhe a opção 2. Não faça as duas ao mesmo tempo. 

2) Você acessa a câmera pela porta HTTP (TCP 80) e provavelmente seu provedor de Internet está bloqueando acessos ao seu IP público nessa porta.

Como já informei acima, os provedores normalmente bloqueiam acessos destinados ao seu IP público na porta TCP 80, que é necessária para acessar a interface WEB da câmera. Como não é possível liberar a porta TCP 80 lá no provedor, a solução é escolher uma outra porta qualquer que esteja livre. Eu sugiro testar a porta TCP 8080. No próximo passo vamos configurar essa porta alternativa.

3) O seu modem/roteador impede acessos com origem na Internet destinados aos IPs privados.

Você precisa configurar um "forwarding"  ou "encaminhamento"  no seu modem/roteador. Dessa forma, o visitante da Internet acessará o IP público e o modem/roteador encaminhará o tráfego para o IP privado, e vice-versa.  No GVT Power Box isso é feito na tela "Encaminhamento de Portas".

Eu criei uma regra de encaminhamento chamada "IPCam" para direcionar acessos TCP na porta 8080 (porta escolhida no item anterior) para o endereço privado da câmera,  192.168.25.2 (que o modem chama de computer-3 neste exemplo)  na porta 80. O IP de origem fica em branco, pois assim o modem/router entende que se trata do seu próprio IP público, ou seja o IP dinâmico recebido do provedor.



Antes de continuar é preciso testar se toda a configuração acima esta ok. Acesse o site http://www.canyouseeme.org/ para descobrir o seu atual IP público e também testar se o redirecionamento de portas está ok. No campo "What Port?"  preencha com a porta que você escolheu e clique em "Check Your Port". No meu caso é 8080:


Repare que o site informa que a porta 8080 está acessível. Se ao invés disso você receber uma mensagem de erro, revise todas as configurações acima. Se mesmo assim continuar bloqueada, significa que o provedor está bloqueando a porta que você escolheu. Neste caso, escolha outra e altere o redirecionamento de porta no modem/router.

UMA DICA:
Se você tentar acessar o seu IP público na porta 8080 (ou seja, se tentar algo como http://186.213.135.8:8080) a partir do seu próprio computador localizado na mesma rede da câmera o acesso não funcionará! O redirecionamento só funcionará quando o acesso tiver origem fora da sua rede. É por isso que eu indiquei o site CanYouSeeMe.org para realizar o teste.

Se você quer garantir que a camera está acessível, peça a um amigo para acessar a URL completa no formato http://nnn.nnn.nnn.nnn:8080) onde nnn.nnn.nnn.nnn é o seu atual IP público. Seu amigo deverá ver a tela de login da câmera.


4) O IP público do seu modem/roteador também é dinâmico e vai trocar de tempos em tempos.
Agora que tudo funciona, precisamos configurar o DDNS para facilitar o acesso a câmera. Afinal, você não quer acessá-la pelo IP que troca todo dia, correto?

A solução é simples. Escolha um provedor de DDNS compatível com o seu modem/roteador, crie uma conta lá e configure a atualização dinâmica do DNS.

No GVT Power Box é possível usar o serviço No-IP.org, que é free e funciona muito bem. A configuração de uma conta no No-IP.org está além do objetivo deste artigo, mas basicamente você deve acessar http://no-ip.org e selecionar a opção "Personal Use". A seguir selecione o serviço "No-IP Free"  e crie um usuário, senha e hostname para a sua câmera. Após criar a conta você receberá uma confirmação por e-mail e poderá acessar o seu cadastro.

No primeiro acesso, escolha a opção "Update Host"  e configure conforme abaixo, usando obviamente o seu hostname e o seu IP público.


Reparem que eu marquei a opção "Port 80 Redirect". Isso permitirá o acesso à URL  http://gelson.no-ip.org  e o no-ip vai converter em http://186.213.135.8:8080

Ainda falta configurar o modem/router para atualizar o IP público toda vez que ele trocar. No GVT Power Box isso se faz dessa forma:


Observação: A Câmera também possui uma tela para configuração de DDNS, porém as opções lá são bastante limitadas. Na minha câmera as opções são DynDns.org que é um serviço pago, 3322.org e Oray.net. Estes últimos apresentam páginas em caracteres asiáticos, impossíveis de serem compreendidas.

Parabéns, voce completou a configuração. Agora já pode acessar a sua câmera a partir da Internet usando a URL http://seunome.no-ip.org. Lembre-se que os acessos só funcionam de fora da sua rede doméstica. Para acessar a câmera de dentro da rede continue usando o endereço IP fixo que você definiu no passo 1.

Em caso de dúvidas perguntem nos comentários abaixo.


quarta-feira, 29 de fevereiro de 2012

Teclado ABNT sem interrogação e barra

O Problema: 
Nesta semana descobri que os novos notebooks vendidos no Brasil com teclado padrão ABNT estão saindo de fábrica sem a tecla "? /". É isso mesmo, a tecla dedicada a estes dois caracteres, muito usados em qualquer idioma, simplesmente foi abolida do teclado. Agora, para digitá-los é preciso uma ginástica com os dedos, apertando simultaneamente AltGr + W para digitar um "?" ou AltGr + Q para digitar um "/". Ridículo, não? Veja só a foto do teclado do netbook Asus 1015 PEM (clique na imagem para ampliar):


Para piorar ainda mais, a sequencia AltGr + W é equivalente a Control + Alt + W, que é muito usada como atalhos em alguns programas (por exemplo, no ambiente de programação Eclipse) gerando conflitos com aqueles programas.
Inicialmente achei que era uma limitação dos netbooks baratinhos de origem asiática, pois percebi esse "detalhe"  enquanto ajudava minha esposa a escolher o seu netbook. Porém, examinei modelos mais sofisticados disponíveis nas lojas e percebi que Sony Vaio, LG, Samsung, MSI, Acer e outros já adotaram o teclado sem a tecla "? /". Parece que apenas a Dell e a HP ainda não aderiram.

A Solução:
Felizmente, existe uma solução fácil para o problema. Reparem que os teclados de qualquer computador moderno possui uma tecla "Menu" dedicada ao "menu de contexto"  do Windows (aquele menu que aparece quando se clica em algum lugar com o botão direito do mouse). Bem, ocorre que eu sempre uso o botão do mouse e jamais apertei aquela tecla. Também não conheço ninguém que faça uso dela. Esta tecla fica geralmente do lado direito em baixo, próximo de onde a tecla "? /" deveria estar. Assim, basta redefinir a função da tecla "Menu" transformando ela na "? /".

Como fazer no Windows:
1) Baixe e instale o programa SharpKeys disponível neste endereço: http://www.randyrants.com/sharpkeys/
2) Execute o programa e clique em ADD.
3) Na lista da esquerda (Map this key) selecione "Special: Application (E0_5D)".
4) Na lista da direita (To this key) selecione "Unknown: 0x0073 (00_73)".

O resultado fica assim:


5) Clique em " Write to Registry".

Agora é só reinicializar o Windows e usar a tecla normalmente, ou seja: Menu para digitar um "/" e Shift + Menu para digitar um "?". Se preferir, você pode colar um adesivo na tecla para identificá-la, ou usar um "Letraset"  branco para adicionar os caracteres nela. Existem também adesivos para teclados que são vendidos no Mercado Livre e servem para trocar o layout de um teclado americano para o brasileiro ABNT, mas eu acho um desperdício comprá-los para usar apenas uma tecla.

Se você achou essa dica útil, por favor deixe um comentário abaixo.