Provavelmente não sou o primeiro a fazer isso, mas precisei usar o serviço DNS dinâmico do NO-IP para poder configurar facilmente dispositivos e computadores para acessar recursos em minha LAN quando estiver ausente. Para aqueles menos familiarizados com o NO-IP, é um serviço DNS dinâmico gratuito. A maioria das conexões domésticas e de pequenos escritórios com a Internet tem um IP dinâmico, o que significa que os endereços IP mudam sempre que a conexão do roteador é estabelecida. Normalmente, um nome de domínio requer um endereço IP estático para funcionar. O DNS dinâmico permite que um nome de domínio (ou seja, subdomínio.exemplo.com) use um IP dinâmico atualizando o NO-IP com um novo endereço IP quando o endereço IP muda. O NO-IP então associa esse IP ao nome de domínio para que os serviços possam ser configurados no domínio em vez do IP que muda. Isso torna a configuração das coisas mais fácil.
Muitos roteadores possuem um cliente NO-IP integrado, mas meu roteador não suporta NO-IP e, por alguma razão, nunca consegui fazer com que o cliente NO-IP recomendado para um host Linux funcionasse. Baixei o código-fonte e compilei seguindo as instruções, e ele parecia estar em execução, mas nunca atualizou meu endereço IP. Não houve saída para o console ou para um arquivo de log para diagnosticar o problema que pude encontrar, então decidi escrever o meu próprio, o que realmente não foi tão difícil de fazer usando um script bash e alguns utilitários simples na minha caixa Linux. Aqui está meu guia prático e documentação para configurar isso. Estou executando o servidor Ubuntu, então estou usando o apt e o nano, mas isso deve funcionar em qualquer coisa baseada em POSIX, como Mac OS X, BSD, qualquer sabor de Linux - até mesmo o Raspberry Pi.
O script pode ser executado como uma única instância com parâmetros de linha de comando, como um daemon, usando crontabs (um utilitário para executar programas em um agendamento) ou como um serviço Linux.
Este script possui uma dependência, que é wget. Geralmente é instalado por padrão na maioria das distros Linux e BSD, mas se não, use seu gerenciador de pacotes para instalá-lo.
sudo apt-get install wget
-ou-
sudo yum install wget
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
Parâmetros:
-u, --username
Nome de usuário para fazer logon em no-ip.com.
-p, --password
Senha para fazer login no no-ip.com.
-h, --hostname
O nome de domínio a ser atualizado.
-d, --detectip
Diz ao script para detectar seu endereço IP externo. Isso tem precedência sobre -i.
-i, --ip
Maually define o endereço IP para atualização. Se nem -d nem -i forem especificados, no-ip usará o endereço IP que detectar.
-n, --interval
Ao executar o script como um daemon/serviço (consulte Instalação), isso atualizará o no-ip a cada n minutos.
-l, --logfile
Define o caminho para um arquivo de log. Este arquivo deve ser gravável.
-c, --config
Define o caminho para um arquivo de configuração. Este arquivo deve ser legível. Os parâmetros do arquivo de configuração têm precedência sobre os parâmetros da linha de comando.
no-ip.sh
Executa o script com as configurações do arquivo de configuração no local padrão /etc/no-ip/no-ip.conf
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
Faz uma atualização única, detectando o UP e registrando os resultados
no-ip.sh -c=/home/username/no-ip.conf
Execute o script com as configurações do arquivo de configuração.
no-ip.sh /dev/null 2>&1 &
Executa o script como um daemon com as configurações do arquivo de configuração no local padrão /etc/no-ip/no-ip.conf.
O arquivo de configuração usa uma sintaxe simples para definir parâmetros. Qualquer parâmetro de linha de comando (exceto --config) também pode ser especificado no arquivo de configuração. As mesmas regras se aplicam aos parâmetros do arquivo de configuração como parâmetros de linha caommand (ou seja, "detectip" substitui "ip" se ambos forem especificados).
Exemplo:
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
Antes de instalar o script, baixe e extraia os arquivos para sua máquina local. As instruções assumem que você está na pasta no-ip-master.
cd ~
wget https://github.com/theonemule/no-ip/archive/master.zip
unzip master.zip
cd no-ip-master
Método 1: crontabs
O Crontabs permite que você especifique um agendamento para executar o script e também executará o script conforme o usuário para o qual o crontab está configurado. Certifique-se de que o usuário tenha permissões de execução no script, permissões de leitura no arquivo de configuração e permissões de gravação no arquivo de log. O Crontabs executará o script de forma programada, portanto não há necessidade de especificar um intervalo.
Veja como executar o script como root.
1.) Crie uma pasta em etc.
sudo mkdir /etc/no-ip
2.) Crie um arquivo de configuração.
sudo touch /etc/no-ip/no-ip.conf
3.) Defina os parâmetros com seu editor favorito. Eu uso nano. Consulte a seção Arquivo de configuração acima para obter detalhes.
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
detectip=true
4.) Copie no-ip.sh para /usr/sbin
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) Torne o script executável
sudo chmod +x /usr/sbin/no-ip.sh
6.) Faça logon como root
sudo -i
7.) Edite o crontab do root
crontab -e
8.) Adicione a entrada na parte inferior. */10 diz ao crontab para executar o script sempre que o horário atual for divisível por 10 ou a cada 10 minutos e salvar o crontab.
*/10 * * * * /usr/sbin/no-ip.sh
Método 2: Serviço Linux (escrito para distros baseadas em Debian. Isso pode variar para outras distros)
Certifique-se de que o root tenha permissões de execução no script, permissões de leitura no arquivo de configuração e permissões de gravação no arquivo de log.
1.) Crie uma pasta em/etc.
sudo mkdir /etc/no-ip
2.) Crie um arquivo de configuração.
sudo touch /etc/no-ip/no-ip.conf
3.) Defina os parâmetros com seu editor favorito. Eu uso nano. Consulte a seção Arquivo de configuração acima para obter detalhes.
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
4.) Copie no-ip.sh para /usr/sbin
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) Torne o script executável
sudo chmod +x /usr/sbin/no-ip.sh
6.) Copie no-ip-service para init.d
sudo cp no-ip-service /etc/init.d/no-ip-service
7.) Torne o executável no-ip-service
sudo chmod +x /etc/init.d/no-ip-service
8.) Inicie o serviço
sudo service no-ip-service start
9.) Adicione o serviço para iniciar na inicialização.
update-rc.d no-ip-service defaults