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.
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):
- “Do you wish to have them all updated?” Y (atualização de IP)
- “Please enter an update interval:” 30 (escolher o tempo, em minutos, para fazer essa verificação do IP)
- “Do you wish to run something at successful update?” N (se deseja executar algum script após a atualização de IP)
- “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