Como acessar pc remoto com IP dinâmico

Muitas vezes precisamos acessar remotamente um computador que não possui um link com ip fixo – conectado por uma rede 3G, por exemplo, com IP dinâmico. Para resolver esse problema, é possível criar um host e instalar um daemon de um serviço de DNS dinâmico.

O DNS (Domain Name System) funciona como uma lista telefônica: você escreve um nome (hostname) na barra de endereços de um navegador e o DNS fornece um número, que é o endereço de IP. Esse número identifica o computador na internet. No entanto, em casos como conexões ADSL (Net, Speed, Velox, etc), esse número varia a cada conexão, o que é chamado de IP dinâmico. Isso impossibilita que seu computador seja encontrado na internet para acesso remoto.

O DDNS (Dynamic Domain Name System) é um dns dinâmico, que associa o endereço IP da sua conexão atual a um nome fixo (subdomínio). Desse modo, seu computador pessoal agora pode ser encontrado através de um endereço tipo “seucomputador.ddns.com.br”, possibilitando o acesso remoto.

Logo do Duck DNS
Logo do Duck DNS

Dentre os mais famosos serviços de DNS dinâmico estão o dyndns (somente pago), no-ip (parcialmente pago) e o DuckDNS (grátis).

Duck DNS

Acesse o site do Duck DNS e faça o login usando alguma conta das opções nos botões do cabeçalho. Para criar um subdomínio, escreva alguma coisa no campo e clique em “add domain”. Por padrão, será utilizado o IP da máquina que você está utilizando, mas pode ser atualizado abrindo-se o navegador no computador a ser acessado, logando e clicando em “update ip”.

Também deve-se instalar o “sistema” no computador. Para isso, entre na página do Duck DNS, clique em “install“, escolha o subdomínio e o sistema operacional da sua máquina. Toda a instrução gerada está personalizada para seu subdomínio, token e sistema operacional; basta seguir os passos.

Por exemplo, em uma Raspberry Pi, deve-se criar a pasta “/home/pi/duckdns” e o script “duck.sh” dentro, com as seguintes instruções (adaptadas para seus dados):

echo url="https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=" | curl -k -o ~/duckdns/duck.log -K -

Permite que o arquivo seja executável com o comando “chmod 700 duck.sh” e insira no crontab (comando “crontab -e”) a seguinte linha:

*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1

Dessa forma, a cada cinco minutos, o ip da sua máquina é atualizado no Duck DNS. Teste executando o script e vendo o arquivo de log gerado (aparecendo OK, está tudo certo). Para reiniciar o cron, use o comando “sudo service cron start”.

Fonte: Homelaber

Roteador e redirecionamento de portas

Caso tenha um roteador entre o computador a ser acessado remotamente e a rede externa (do provedor de internet), serão necessários algumas configurações extras.

Primeiro, fixe um IP para o seu computador. No Linux, isso pode ser feito no arquivo “/etc/network/interfaces”, conforme segue o exemplo:

auto eth0
iface eth0 inet static
        address 192.168.1.250 # endereço que você escolhe
        netmask 255.255.255.0 # máscara de rede
        gateway 192.168.1.1 # endereço do roteador na LAN
        dns-nameservers 8.8.8.8 # servidor de nomes do Google

Verifique na configuração do roteador a faixa de IPs utilizada. Dessa forma, você evita que o roteador dê um IP diferente no caso de reinicialização e tenha que ficar verificando e atualizando as configurações.

Também é preciso configurar o redirecionamento de portas no roteador. Isso é necessário porque o IP externo está ligado ao roteador, mas como do roteador o sinal vai encontrar o computador certo? Você deve especificar uma porta para ser colocada junto do comando SSH para conseguir acessar seu computador.

Cada roteador tem um menu diferente (vários “passo-a-passo” podem ser vistos no site portforward), mas basicamente procure por “redirecionamento de porta” ou “port forward” ou também “virtual servers” (geralmente dentro de abas como “NAT” ou “Advanced”). Nele, escolha uma porta pública (o valor que vem junto com o comando SSH), uma porta privada (no caso do SSH, o padrão é a porta 22), protocolos TCP/UDP e o endereço IP fixo configurado acima no seu computador.

Dessa forma, usando duck DNS, é possível acessar o seu computador remotamente usando SSH conforme comando abaixo:

ssh -p 420 user@exampledomain.duckdns.org

Nesse caso, a porta pública configurada é 420 (verifique no roteador se já não tem máquinas ligadas a essa porta antes de colocar o valor), usuário “user” e domínio é “exampledomain.duckdns.org”.

no-ip

Primeiramente entre no site do no-ip e crie uma conta free. Então logue no site e crie um novo host (“Add New Host”): meuhost.ddns.net (por exemplo).

Logado no computador que deverá ser acessado remotamente, siga as instruções abaixo:

# Verificar se os pacotes 'make' e 'gcc' estão instalados
sudo apt-get install make gcc
# Criar diretório de trabalho
mkdir /home/pi/noip
cd /home/pi/noip
# Baixar e Descompactar arquivo
wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
tar xvf noip-duc-linux.tar.gz
cd noip-2.1.9-1
# Compilar e instalar
sudo make
sudo make install

Durante a instalação, ele fará algumas perguntas: interface de rede a ser utilizada, login e senha da conta criada no no-ip.org. Veja outras perguntas e respostas recomendadas (pode ser usada a opção default simplesmente dando ENTER em todas as perguntas):

  1. “Do you wish to have them all updated?” Y (atualização de IP)
  2. “Please enter an update interval:” 30 (escolher o tempo, em minutos, para fazer essa verificação do IP)
  3. “Do you wish to run something at successful update?” N (se deseja executar algum script após a atualização de IP)
  4. “Please enter the script/program name”

Após instalar e configurar o daemon no-ip, o arquivo de configurações “no-ip2.conf” será movido para “/usr/local/etc/”. Para iniciar o programa e verificar seu funcionamento, use:

sudo /usr/local/bin/noip2
sudo noip2 ­-S

Para testar, aguarde alguns minutos, faça uma pesquisa DNS e veja o resultado, algo como:

$ host meuhost.ddns.net
meuhost.ddns.net has address 200.200.1.1

Utilizando o navegador, entre no roteador digitando o IP dele (geralmente 192.168.0.1 ou algo assim, verifique no próprio equipamento) com seu respectivos login e senha (os de fábrica geralmente são admin/1234). Então configure um redirecionamento de porta (avançado -> port forwarding) usando um número qualquer de porta pública e porta privada como 22.

Tente acessar essa máquina pelo host criado – o ssh é uma forma, veja outras no post sobre acesso remoto:

ssh meuhost.ddns.net -p PORTA

Se o computador reiniciar, esse serviço não estará mais rodando. Para que inicie a partir do boot, realize os seguintes comandos:

# cp -r debian.noip2.sh /etc/init.d/noip # copia o script
# chmod 755 /etc/init.d/noip # dá permissões ao arquivo 
# ln -s /etc/init.d/noip /etc/rc5.d/S99noip # Copia link simbólico para o serviço iniciar com o sistema (modo gráfico)
# ln -s /etc/init.d/noip /etc/rc3.d/S99noip # Copia link simbólico para o serviço iniciar com o sistema (modo texto)

O nome do link como “S99noip” é apenas uma sugestão, mas é importante que seja um número entre 93 e 99 para que esse serviço seja um dos últimos a ser executado.

2 comments

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.