Encaminhamento de porta e DNS dinâmico no Raspberry Pi

Fala galera, tudo bem? Neste tutorial, aprenderemos como configurar o encaminhamento de porta e DNS dinâmico no Raspberry Pi. Ambos se complementam, mas o encaminhamento de porta é muito importante se você quiser que os aplicativos da Web sejam acessíveis pela Internet.

Caso você ainda não tenha instalado um sistema operacional no seu Rasbperry Pi, clique aqui para ver o nosso tutorial completo para a instalação do Raspberry Pi OS.

É importante lembrar que a abertura de portas terá um risco maior de segurança. Ferramentas como o Fail2ban ajudarão a proteger seu Raspberry Pi da invasão. Além disso, certifique-se de escolher senhas fortes e seguras.

1 – Configurando o redirecionamento de porta do Raspberry Pi

O encaminhamento de porta é um método que permite o acesso externo ao Pi. Para fazer isso, precisaremos alterar algumas configurações no roteador. Todos os roteadores são diferentes, mas tentarei torná-lo o mais genérico possível, mas ainda assim poderá haver muitas diferenças entre essas instruções e seu roteador.

O roteador que estou usando para este tutorial é o roteador gigabit de banda dupla wireless TP-Link AC1750. Em um computador conectado à rede local, conecte-se à página de administração do roteador por meio de um navegador da web. O IP do roteador normalmente é 192.168.1.1 ou 192.168.1.254.

1.1 – Configurando o roteador

Digite o nome de usuário e senha para o roteador. Por padrão, isso geralmente é admin e admin. Na página de administração do roteador, siga para forwarding-> virtual server.

Nesta página, digite o seguinte:

  • Porta de serviço: esta é a porta externa.
  • Endereço IP: Este é o IP do Pi.
  • Porta Interna: Defina isto para a porta de aplicação do Pi. (Um servidor da Web é executado na porta 80, por exemplo).
  • Protocolo: Defina para ALL, a menos que seja especificado.
  • Status: defina para ativado.

Essas configurações rotearão o tráfego destinado à porta especificada para a porta no Raspberry Pi. Agora você deve conseguir se conectar ao aplicativo no Raspberry Pi fora da sua rede.

A melhor maneira de verificar se você tem a porta encaminhada corretamente seria pedir para um amigo tentar se conectar, ir a algum lugar fora de sua rede local ou através de uma VPN.

Abaixo está um exemplo de configuração de acesso a um servidor da Web que está sendo executado na porta 80 com o Raspberry Pi tendo um IP de 192.168.1.103.

1.2 – Solução de problemas

Existem alguns problemas que podem ocorrer ao tentar configurar seu Pi para acesso externo, listamos abaixo algumas possíveis soluções para caso a sua configuração não esteja funcionando como o esperado:

  • Verifique as configurações do seu roteador e confirme se estão corretas.
  • Verifique se o seu IP externo não mudou. O ISP fornecerá um IP dinâmico em vez de um IP estático.
  • Reiniciar o roteador pode eliminar problemas.
  • Reiniciar o Raspberry Pi também pode eliminar qualquer problema.

2 – Configurando o DNS dinâmico para o Raspberry Pi

Se o seu ISP lhe fornecer um IP dinâmico (um IP que muda com frequência), provavelmente valerá a pena configurar o DNS dinâmico no Raspberry Pi (às vezes, os roteadores têm esse recurso neles).

Através desse método você sempre será capaz de se conectar ao aplicativo no Pi mesmo se o seu IP externo mudar. Para começar, precisaremos instalar o DDclient, e é um processo bastante direto que não demorará muito para ser instalado.

2.1 – Instalando o DDClient

Para começar, abra o prompt de comando (linha de comando) e execute as seguintes linhas para instalar o DDclient:

sudo apt-get update 
sudo apt-get install ddclient libjson-any-perl

Depois de tudo isso, precisaremos substituir essa versão do DDclient por uma mais recente. Esta nova versão permitirá um melhor suporte para serviços como o Cloudflare. Para baixar a versão mais recente, insira os seguintes comandos.

wget encurtador.com.br/ejAJ5 tar -zxvf ddclient-3.9.0.tar.gz

Uma vez terminado o download e a extração, faremos uso da mais nova versão copiando-o sobre o atual usando o seguinte comando:

sudo cp -f ddclient-3.9.0/ddclient /usr/sbin/ddclient

Devido as alterações feitas na versão mais recente do DDclient, o local do arquivo de configuração foi movido. Nós usaremos os seguintes comandos para reposicionar o que veio com a primeira instalação.

sudo mkdir /etc/ddclient 
sudo mv /etc/ddclient.conf /etc/ddclient

2.2 – Configurando o DDClient

Uma vez que o DDClient tenha completado a instalação, iremos agora editar diretamente o arquivo de configuração para fazer algumas mudanças cruciais. Use o comando abaixo para iniciar um editor para o arquivo.

sudo nano /etc/ddclient/ddclient.conf

Vamos precisar adicionar algumas linhas a este arquivo, e usaremos essas mesmas linhas em todas as configurações diferentes. Eles definem se devem usar SSL e como obter o endereço IP externo do Raspberry Pi.

Adicione o seguinte comando abaixo do cabeçalho comentado no arquivo, também remova qualquer outra coisa no arquivo.

use=web, web=checkip.dyndns.com/, web-skip='IP Address' ssl=yes

OK, agora que isso foi feito, podemos prosseguir para os próximos passos sobre como configurar o ddclient com um provedor de DNS dinâmico.

2 .3 Diferenças entre CloudFlare e No-IP

Apenas para salientar rapidamente que a principal diferença entre CloudFlare e No-IP é que você precisa possuir um nome de domínio para fazer uso do CloudFlare. No-IP no entanto, oferece subdomínios gratuitos, o que significa que é um serviço sem custo para usar.

É importante observar que, embora o Cloudflare não seja realmente um provedor de DNS dinâmico, podemos usá-lo da mesma maneira, graças à API.

O Cloudflare também oferece mais proteção, como SSL grátis, IP anônimo, proteção DDOS e muito mais. Você pode desativar os recursos do Cloudflare e usá-lo apenas como um provedor DNS, se desejar.

3 – DNS dinâmico usando o Cloudflare

Antes de começar a usar o Cloudflare como um provedor de DNS dinâmico, você precisará adquirir um nome de domínio.

Se você já tem um nome de domínio, pode pular para a próxima etapa deste tutorial. Caso contrário, você pode comprar um nome de domínio de algum lugar, como GoDaddy, HostGator, entre outros.

Agora você precisa se cadastrar no Cloudflare, não se preocupe, pois não lhe custará nada. Inscreva-se e siga os passos indicados para atualizar seu nome de domínio para apontar para o DNS da Cloudflare.

Em seguida, você precisará da chave da API da Cloudflare que pode encontrar na página da conta. Quando pegar a chave de API global, copie e cole isso em algum lugar seguro por enquanto.

3.1 – Configurando o arquivo do DDclient com os dados do Cloudflare

Agora precisamos inserir os detalhes do Cloudflare no arquivo de configuração do DDclient. Abra-o executando o seguinte comando.

sudo nano /etc/ddclient/ddclient.conf

Atualize ou adicione as seguintes linhas à parte inferior do arquivo, certificando-se de substituir o nome de usuário, a chave de acesso, a zona e o nome do host pelos que você usou para configurar sua conta do Cloudflare.

A zona é o próprio nome de domínio e, em seguida, abaixo está o registro / domínio que você deseja atualizar. Digite um subdomínio ou o domínio principal. Certifique-se de que o registro exista no Cloudflare na página DNS, ele precisará ser um registro “a”.

protocol=cloudflare
server=www.cloudflare.com
login=seu_email
password=seu_api-key
zone=seu_dominio.com
algumacoisa.seu_dominio.com

Depois de atualizar o arquivo, você pode salvar e sair usando Ctrl-X. Agora, tudo o que precisamos fazer é reiniciar o DDclient, desde que você tenha inserido as informações corretas.

Use o seguinte comando para reiniciar o cliente DNS dinâmico. (Às vezes, você precisa reiniciar duas vezes para que as alterações ocorram).

sudo /etc/init.d/ddclient restart

O IP deve agora ser atualizado dentro do Cloudflare e agora você deve ser capaz de usar o nome do seu domínio escolhido para se conectar ao seu Raspberry Pi.

3.2 – Desativando o proxy do CloudFlare

Pode ser necessário desativar o proxy Cloudflare para que ele funcione, você pode fazer isso indo até a página DNS no Cloudflare e clicando na nuvem ao lado do registro de domínio, para que fique cinza.

Agora você vai continuar na seção “Executando o ddclient como um daemon” deste guia para que você possa ter o IP atualizado automaticamente caso contrário você precisará reiniciar o ddclient manualmente toda vez que quiser atualizar o IP.

4 – DNS dinâmico usando NOIP

Para configurar o DNS dinâmico com NOIP, você precisará criar uma conta gratuita no site deles. Certifique-se de anotar o nome de usuário, a senha e o nome do host escolhido, pois precisaremos deles na próxima etapa.

4.1 – Configurando o arquivo do DDclient para o NOIP

Depois de terminar de criar sua conta, é hora de configurar o DDclient. Você pode abrir o arquivo de configuração executando o seguinte comando.

sudo nano /etc/ddclient/ddclient.conf

Agora, atualize ou adicione as seguintes linhas à parte inferior do arquivo, certificando-se de substituir o nome de usuário, a senha e o nome do host pelos que você usou para criar sua conta No-IP.

protocol=dyndns2
server=dynupdate.no-ip.com
login=seu_usuario
password=sua_senha
seu_dominio.com

Depois de atualizar este arquivo, salve-o e saia usando ctrl-X. Agora, tudo o que precisamos fazer é reiniciar o ddclient, contanto que você tenha inserido as informações corretas. Use o seguinte comando para reiniciar o cliente.

sudo /etc/init.d/ddclient restart

O seu endereço IP deve agora ser atualizado, e você poderá usar o nome de domínio escolhido para se conectar ao seu Raspberry Pi, desde que as portas corretas estejam abertas. Continue o tutorial abaixo para garantir que o ddclient atualize automaticamente o IP.

5 – Executando ddclient como um daemon

Como não queremos apenas que o endereço IP seja atualizado uma vez, ainda precisamos configurar o ddclient para ser executado como um daemon para que ele possa verificar periodicamente a alteração do endereço IP e notificar o provedor DNS dinâmico escolhido, se necessário.

5 – 1 Configurando o DDclient como um Daemon

Para fazer o DDclient rodar como um Daemon, precisamos fazer uma mudança em um arquivo de configuração. Execute o seguinte comando para começar a editar o arquivo.

sudo nano /etc/default/ddclient

No arquivo, você precisará alterar o run_daemon. Esta mudança basicamente diz para executar o ddclient no modo daemon.

run_daemon="true"

Você também precisará verificar duas outras linhas nesse arquivo para ter certeza de que elas são falsas. Caso contrário, o ddclient não será executado no modo daemon corretamente.

Assegure-se de que as duas linhas a seguir estejam correspondentes, se estiverem configuradas como true, altere-as para false.

run_dhclient="false"
run_ipup="false"

Pressione Ctrl + X e, em seguida, Y para salvar as alterações no arquivo de configuração. Agora digite o seguinte comando para iniciar o ddclient como um serviço.

sudo service ddclient start

Para garantir que o serviço foi iniciado corretamente, você pode usar o seguinte comando para verificar seu status.

sudo service ddclient status

5.2 – Evitando problemas de tempo excedido

Alguns provedores DNS dinâmicos exigem que você atualize seu endereço IP com bastante frequência. Podemos ajudar a garantir que você não tenha tempo excedido, forçando o ddclient a atualizar seu endereço IP uma vez por semana. Conseguimos isso primeiro abrindo o crontab semanal usando o seguinte comando.

sudo nano /etc/cron.weekly/ddclient

Para esse arquivo, adicione as seguintes linhas.

#!/bin/sh
/usr/sbin/ddclient -force

Salve as alterações pressionando Ctrl-X e Y para aceitar as alterações. Por fim, precisamos permitir que nosso novo script seja executado, e podemos fazer isso rapidamente, fazendo o seguinte.

sudo chmod +x /etc/cron.weekly/ddclient

5.3 – Checando se o DDClient está executando corretamente

O DDClient deve agora ser executado com sucesso como um daemon, use o seguinte comando para ter certeza de que está sendo executado corretamente.

sudo service ddclient status

Isso deve ser tudo o que você precisa fazer para que funcione corretamente. Se você achar que algo não está funcionando corretamente, a linha a seguir é ótima para depuração.

sudo ddclient -daemon=0 -debug -verbose -noquiet

Contanto que tudo esteja funcionando corretamente, agora você poderá acessar seu Pi fora da sua rede local usando um nome de domínio. Se as instruções acima não funcionarem para você, então você pode experimentar o método antigo que é detalhado abaixo.

6 – Configurando o DNS Dinâmico (Método Antigo)

Esta próxima parte é um processo antigo que eu substituí com o método acima. Ele ainda deve funcionar, mas o acima é muito mais fácil de ser instalado e executado.

Primeiro, você precisará criar uma conta no No-IP (Certifique-se de que “criar um nome de host mais tarde” seja desmarcado). Agora, no Raspberry Pi, digite os seguintes comandos.

sudo bash
cd /usr/local/src/
wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
tar xf noip-duc-linux.tar.gz
cd noip-2.1.9-1/
make install
  • Você precisará definir algumas configurações.
  • Digite o e-mail e a senha da conta à qual você deseja conectar o Pi.
  • Em seguida, defina o intervalo de atualização com o padrão sendo 30 minutos. (Isso verifica se o IP mudou).
  • Agora você também pode definir algo para executar sempre que o IP for atualizado.

Agora, adicione uma nova linha no arquivo rc.local logo antes da última saída da linha 0, isso garante que o no-ip será iniciado automaticamente na reinicialização. Para isso, insira os seguintes comandos:

nano /etc/rc.local

Digite a seguinte linha logo acima da linha 0 de saída.

/usr/local/bin/noip2

Use CTRL + X para sair (certifique-se de salvar). Você pode iniciar o no-ip com o seguinte comando:

sudo /usr/local/bin/noip2 -S

Você pode fechá-lo usando o seguinte comando. Substitua pid pelo pid do comando -S.

sudo /usr/local/bin/noip2 -C

Conclusão

Agora você possui uma configuração de servidor DNS dinâmico no Raspberry Pi e é capaz de se conectar com um nome de domínio em vez de um IP. Esse nome permanecerá o mesmo, mesmo que seu endereço IP seja alterado.

Essa configuração significa que você sempre poderá se conectar ao Pi ou a outros dispositivos de rede doméstica sem precisar descobrir seu novo IP externo. Se você tiver alguma dúvida ou sugestão quanto a este tutorial, por favor, não hesite em deixar um comentário abaixo.

Yuri Azevedo
Sobre Yuri Azevedo 3 artigos
Especialista em Engenharia de Automação e Controle e Engenheiro Eletricista.

1 Trackback / Pingback

  1. VNC Server: Configurando o Remote Desktop para o seu Raspberry Pi

Deixe uma resposta

O seu endereço de email não será publicado.


*