O último lançamento está sempre disponível no GitHub em
https://github.com/troglobit/inadyn/releases
Dica: o manual HTML UNIX está em https://man.troglobit.com, por exemplo, inadyn.conf (5)
Inadyn, ou In-Dyn, é um DNS dinâmico pequeno e simples, DDNS, cliente com suporte HTTPS. Geralmente disponível em muitas distribuições GNU/Linux, usadas nos roteadores de prateleira e gateways da Internet para automatizar a tarefa de manter o nome da Internet em sincronia com o seu endereço IP público. Também pode ser usado em instalações com conexões redundantes (backup) com a Internet.
A maioria das pessoas não tem consciência de compartilhar um conjunto de endereços da Internet com outros usuários do mesmo provedor de serviços de Internet (ISP). Protocolos como DHCP, PPPOE ou PPPOA são usados para fornecer um endereço e uma maneira de se conectar à Internet, mas geralmente não uma maneira de outras pessoas se conectarem a você. Se você deseja executar um servidor da Internet em uma conexão, corre o risco de perder seu endereço IP toda vez que se reconectar ou no caso do DHCP, mesmo quando o contrato é renegociado.
Ao usar um cliente DDNS como inadyn você pode registrar um nome de internet com um provedor DDNS, como o FreedNS. O cliente DDNS atualiza seu DNS registra periodicamente e/ou sob demanda quando o endereço IP mudar. O Inadyn pode manter vários registros de host com o mesmo endereço IP, usar uma combinação de um script, o endereço de uma interface voltada para a Internet ou padrão para usar o detector de alteração de endereço IP do provedor DDNS.
__
O endereço IP público é o padrão, os endereços privados também podem ser usados.
Alguns desses serviços são gratuitos para uso não comercial, outros recebem uma pequena taxa, mas também fornecem mais domínios para escolher.
Os seguintes provedores de nível one têm "plugins" dedicados, embora muitos compartilhem o plug-in original do DynDNS. Abaixo está uma lista de provedores de DDNs conhecidos, ordenados pelo plug -in que os apoiem:
Para a lista completa, consulte inadyn -L , para obter a saída JSON, use inadyn -L -j .
Os provedores DDNs não suportados podem ser ativados usando o plug -in DDNS personalizado ou genérico. Veja abaixo para exemplos de configuração.
O in-a-dyn padrão é HTTPS, mas nem todos os provedores podem suportar isso; portanto, tente desativar o SSL para a atualização ( ssl = false ) ou a fase de verificação ( checkip-ssl = false ) na seção provider , caso você encontre problemas.
O HTTPS é ativado por padrão, pois protege suas credenciais de serem bisbilhos e reduz o risco de alguém sequestrar sua conta.
O IN-A-DYN suporta a atualização de vários servidores DDNS, várias contas, mesmo em diferentes provedores de DDNs. O exemplo do exemplo /etc/inadyn.conf mostra como isso pode ser feito. Para verificar sua configuração, sem iniciar o daemon, use:
inadyn --check-config
Isso procura o arquivo .conf padrão, para verificar qualquer arquivo, use:
inadyn --check-config -f /path/to/file.conf
# In-A-Dyn v2.0 configuration file format
period = 300
user-agent = Mozilla/5.0
# The FreeDNS username must be in lower case
# The password (max 16 chars) is case sensitive
provider freedns {
username = lower-case-username
password = case-sensitive-pwd
hostname = some.example.com
}
# We override checkip server with the In-a-dyn built-in 'default',
# http://ifconfig.me/ip, for details on this, see below.
provider freemyip {
password = YOUR_TOKEN
hostname = YOUR_DOMAIN.freemyip.com
checkip-server = default
}
provider dyn {
ssl = false
username = charlie
password = snoopy
hostname = { peanuts, woodstock }
user-agent = Mozilla/4.0
}
provider duckdns.org {
username = YOUR_TOKEN
password = noPasswordForDuckdns
hostname = YOUR_DOMAIN.duckdns.org
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:1 {
username = ian
password = secret
hostname = flemming.no-ip.com
user-agent = inadyn/2.2
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:2 {
username = james
password = bond
hostname = spectre.no-ip.com
checkip-ssl = false
checkip-server = ifconfig.me
checkip-path = /ip
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:3 {
username = spaceman
password = bowie
hostname = spaceman.no-ip.com
checkip-command = "/sbin/ifconfig eth0 | grep 'inet6 addr'"
}
# Google Domains - notice use of '@' to update root entry
provider domains.google.com:1 {
hostname = @.mydomain.com
username = your_username
password = your_password
}
# Wildcard subdomains - notice the quotes (required!)
provider domains.google.com:2 {
hostname = "*.mydomain.com"
username = your_username
password = your_password
}
# Note: hostname == update-key from Advanced tab in the Web UI
provider tunnelbroker.net {
username = futurekid
password = dreoadsad/+dsad21321 # update-key-in-advanced-tab
hostname = 1234534245321 # tunnel-id
}
# dynv6.com update using a custom checkip-command, which works
# if you have access to an Internet-connected interface. Make
# sure to verify the command works on your system first
allow-ipv6 = true # required option for IPv6 atm.
provider dynv6.com {
username = your_token
password = not_used
hostname = { host1.dynv6.net, host2.dynv6.net }
checkip-command = "/sbin/ip -6 addr | grep inet6 | awk -F '[ t]+|/' '{print $3}' | grep -v ^::1 | grep -v ^fe80"
}
provider cloudxns.net {
username = your_api_key
password = your_secret_key
hostname = yourhost.example.com
}
provider dnspod.cn {
username = your_api_id
password = your_api_token
hostname = yourhost.example.com
}
# Create a unique custom API token with the following permissions:
# -> Zone.Zone - Read, Zone.DNS - Edit.
provider cloudflare.com {
username = zone.name
password = api_token_important_read_comment
hostname = hostname.zone.name
ttl = 1 # optional, value of 1 is 'automatic'.
proxied = false # optional.
}
provider goip.de {
username = user.name
password = user.password
hostname = hostname.zone.name
}
Observe como a configuração tem três usuários diferentes do provedor de não IP-isso é alcançado anexando um :ID ao nome do provedor.
Também definimos um diretório de cache personalizado, o padrão é usar /var/cache . No nosso caso /mnt é um armazenamento persistente específico do sistema para armazenar em cache seu endereço IP, conforme relatado a cada provedor. A Inadyn use isso para garantir que você não esteja bloqueado da sua conta para atualizações excessivas, o que pode acontecer se o seu dispositivo internet gateway em execução inadyn ficar preso em um loop de reinicialização ou similar.
No entanto, para que o mecanismo de armazenamento em cache seja 100% à prova de falhas, o relógio do sistema deve ser definido corretamente-se você tiver problemas com o relógio do sistema não sendo definido corretamente na inicialização, por exemplo, recibo pendente de uma mensagem NTP, use a opção de linha de comando --startup-delay=SEC . Para dizer inadyn que não há problema em prosseguir antes do tempo limite SEC , use SIGUSR2 .
O último sistema definido é o serviço IPv6 https://tunnelbroker.net fornecido pela Hurricane Electric. Aqui hostname está definido como o ID do túnel e a senha deve ser a chave de atualização encontrada na guia Configuração avançada .
NOTA: O
checkip-commandpara dynv6, acima, é apenas uma maneira de fazê-lo. Aqui está outra variante, a partir de seu próprio script:ip -6 addr list scope global $device | grep -v " fd" | sed -n 's/.*inet6 ([0-9a-f:]+).*/1/p' | head -n 1
Às vezes, o checkip-server padrão para um provedor DDNS pode demorar a responder, mesmo que o tempo limite. Suporte in-a-Dyn substituindo o padrão do provedor com um comando personalizado ou personalizado. A maneira mais fácil de alterá-lo é definir checkip-server = default na configuração do seu provedor, acionando em um dyn para usar o padrão http://ifconfig.me/ip , que também é o padrão para qualquer configuração DDNS personalizada. Veja as páginas do homem, ou a seção abaixo, para obter mais informações.
Alguns provedores exigem o uso de um navegador específico para enviar atualizações, isso pode ser trabalhado usando a configuração user-agent = STRING , como mostrado acima. Está disponível tanto em um nível global quanto em um nível por provedor.
NOTA: Em uma configuração de servidor multi-usuário, certifique-se de Chmod seu .conf a 600 (Leia-se apenas por você/root) para proteger contra outros usuários que leem suas credenciais do DDNS Server.
Além dos provedores de DDNs padrão suportados pela Inadyn, os provedores DDNs personalizados podem ser definidos no arquivo de configuração. Use a seção custom {} in em vez da seção provider {} usada nos exemplos acima.
IN-A-DYN Use a autenticação básica HTTP (base64 codificada) para comunicar o nome de usuário e a senha ao servidor. Se você não tiver um nome de usuário e/ou senha, poderá deixar esses campos fora. Autenticação básica, ainda será usada na comunicação com o servidor, mas com nome de usuário e senha vazios.
Um provedor DDNS personalizado pode ser configurado como este:
custom example {
username = myuser
password = mypass
checkip-server = checkip.example.com
checkip-path = /
ddns-server = update.example.com
ddns-path = "/update?hostname="
hostname = myhostname.example.net
}
As seguintes variáveis podem ser substituídas na configuração:
%u - username
%p - password, if HTTP basic auth is not used
%h - hostname
%i - IP address
Para https://www.namecheap.com, pode parecer o seguinte. Observe como a sintaxe do nome do host difere do acima:
custom namecheap {
username = YOURDOMAIN.TLD
password = mypass
ddns-server = dynamicdns.park-your-domain.com
ddns-path = "/update?domain=%u&password=%p&host=%h&ip=%i"
hostname = { "@", "www", "test" }
ddns-response = "<ErrCount>0</ErrCount>"
}
Aqui, três nomes de host são atualizados, uma solicitação de atualização HTTP para cada nome de host listado. Alguns provedores, como o FreedNS, suportam a criação de registros CNAME (aliases) para reduzir a quantidade de registros que você precisa atualizar. O FreedNS até padrão vincula vários registros à mesma atualização, o que pode ser muito confuso se você deseja que cada registro DNS seja atualizado a partir de um endereço IP exclusivo - verifique suas configurações no provedor DDNS !
O plug -in genérico também pode ser usado com fornecedores que exigem o novo endereço IP do cliente na solicitação de atualização. Aqui está um exemplo de como isso pode ser feito se fingirmos que http://dyn.com não é suportado pela Inadyn. O ddns-path difere entre os provedores e é algo que você deve descobrir. As páginas de suporte às vezes listam isso em uma seção de API, ou similar.
# This emulates dyndns.org
custom dyn {
username = DYNUSERNAME
password = DYNPASSWORD
ddns-server = members.dyndns.org
ddns-path = "/nic/update?hostname=%h.dyndns.org&myip=%i"
hostname = { YOURHOST, alias }
}
Aqui, são usados um ddns-path totalmente personalizado com especificadores de formato, consulte a página inadyn.conf(5) para obter detalhes sobre isso.
Outro exemplo:
# Custom configuration for dnsmadeeasy
custom dyn {
username = DNSMADEEASYUSERNAME
password = DNSMADEEASYPASSWORDFORTHISHOST
ddns-server = cp.dnsmadeeasy.com
ddns-path = "/servlet/updateip?username=%u&password=%p&id=DNSMADEEASYHOSTID&ip=%i"
hostname = HOST
}
Ao usar o plug -in genérico, você deve primeiro inspecionar a resposta do provedor DDNS. Por padrão, a Inadyn procura um código OK de resposta 200 HTTP e as strings "good" , "OK" , "true" , "success" ou "updated" no corpo de resposta HTTP. Se o provedor DDNS retornar outra coisa, você poderá adicionar uma lista de possíveis ddns-response = { Arrr, kilroy } ou apenas um único ddns-response = Cool -se o seu provedor der alguma resposta, use ddns-response = "" .
Se o seu provedor DDNS não fornecer um checkip-server , você poderá usar outros serviços, como http://ifconfig.me/ip, que é o padrão se você não especificar um para o seu provedor personalizado Config:
checkip-server = ifconfig.me
checkip-path = /ip
checkip-ssl = false
ou até usar um script ou comando:
checkip-command = /sbin/ifconfig eth0 | grep 'inet addr'
Essas duas configurações também podem ser usadas nas seções provider{} .
Nota: hostname é necessário, mesmo que tudo esteja codificado no ddns-path ! O nome do host fornecido é anexado ao ddns-path usado para atualizações, a menos que você use a configuração append-myip ; nesse caso, seu endereço IP será anexado. Ao usar append-myip você provavelmente precisa codificar seu nome de host DNS no ddns-path , como é feito no último exemplo acima.
Um problema comum está começando, o que é compreensível, pois o In-Dyn tem muitas opções confusas.
Depois de salvar seu /etc/inadyn.conf , tente iniciá -lo em primeiro plano com logs de depuração completa:
inadyn -l debug --foreground --force
Quaisquer respostas incorretas ou incorretas do servidor devem ser muito mais fáceis de detectar. Lembre -se de censurar seus logs de qualquer senhas e informações de domínio se você registrar um relatório de bug ou fazer uma pergunta no fórum/IRC!
Tente limpar o cache:
sudo systemctl stop inadyn.servicesudo rm -rf /var/cache/inadyn/*sudo systemctl restart inadyn.service Por um longo tempo, o projeto manteve sua própria embalagem .deb e infraestrutura básica de APT. No entanto, o nível crescente de recursos em In-Dyn e, portanto, a quantidade de dependências, bem como as demandas por apoiar mais arquiteturas e diferentes distribuições, o suporte pré-construído .deb foi descontinuado a partir de v2.9.1.
O projeto Debian agora tem um mantenedor ativo para a Inadyn, que é o upstream para o Ubuntu e outros. Relate problemas e solicitações à sua respectiva distribuição:
NOTA: Os arquivos de embalagem do projeto foram movidos para uma filial Debian separada no repositório Git. Não é atualizado ou suportado ativamente para lançamentos. Para usá -lo, consulte a filial e edite
debian/changelog) para criar novos arquivos.debpara o seu sistema.
Imagens construídas automaticamente disponíveis aqui:
Um Dockerfile é fornecido para simplificar a construção e a corrida inadyn .
docker build -t inadyn:latest .
docker run --rm -v "$PWD/inadyn.conf:/etc/inadyn.conf" inadyn:latest
Se você não quiser correr em A-Dyn como um daemon de fundo, pode configurar um Cronjob:
inadyn.confcrontab -e * * * * * docker run --rm -v " path/to/inadyn.conf:/etc/inadyn.conf " -v " path/to/cache:/var/cache/inadyn " troglobit/inadyn:latest -1 --cache-dir=/var/cache/inadyn > /dev/null 2>&1Para executar a versão estável mais recente no macOS, digite:
brew install inadyn
Para executar a versão mais recente do The Master Branch, instale o toque git:
brew install --HEAD troglobit/inadyn/inadyn
Qualquer um deles instalará todas as dependências.
Você também pode instalar o In-Dyn no macOS usando o Macports:
sudo port install inadyn
Você pode encontrar mais informações na página de portas da O-A-Dyn.
Primeiro baixe o último lançamento oficial do Github Official In-A-Dyn:
In-a-Dyn exige algumas bibliotecas para construir. O sistema de construção procura por eles, em suas versões necessárias, usando a ferramenta pkg-config :
Eles estão disponíveis na maioria das distribuições UNIX como pacotes pré-criados. Certifique -se de instalar o pacote -dev ou -devel dos pacotes de distribuição ao criar o Inadyn. Em Debian/Ubuntu (derivativos):
$ sudo apt install gnutls-dev libconfuse-dev
Para construir, você também precisa de um compilador C, a ferramenta pkg-config e fazer:
$ sudo apt install build-essential pkg-config
Ao construir com suporte HTTPS (SSL/TLS), certifique-se de instalar também o pacote ca-certificates no seu sistema; caso contrário, a Inadyn não poderá validar os certificados HTTPS do provedor DDNS.
O sistema GNU Configure & Build System Use /usr/local como o prefixo de instalação padrão. Em muitos casos, isso é útil, mas isso significa que os arquivos de configuração e os arquivos de cache também usarão o mesmo prefixo. A maioria dos usuários espera que esses arquivos em /etc/ e /var/run/ e configure possuam algumas opções úteis que são recomendadas para usar:
$ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
$ make -j5
$ sudo make install-strip
Você pode remover a opção --prefix=/usr .
Por padrão, o Inadyn tenta construir com GNUTLS para suporte HTTPS. O GNUTLS é a biblioteca SSL recomendada a ser usada em distribuições UNIX que não fornecem OpenSSL/Libressl como uma biblioteca de sistemas. No entanto, quando o OpenSSL ou Libressl estão disponíveis como uma biblioteca de sistemas, por exemplo, em muitos sistemas incorporados:
./configure --enable-openssl
Para desativar completamente o suporte inadyn https (não recomendado!):
./configure --disable-ssl
Para mais detalhes sobre a emissão de licença OpenSSL e GNU GPL, consulte:
Algumas pessoas querem construir estaticamente, para fazer isso com autoconf adicione os seguintes LDFLAGS= após o script de configuração. Você também pode precisar adicionar LIBS=... , que dependerá do seu sistema específico:
./configure LDFLAGS="-static" ...
Em alguns sistemas, o caminho de instalação de configuração padrão, /usr/local , é desativado e não é pesquisado por ferramentas como ldconfig e pkg-config . Portanto, se a configuração não encontrar as bibliotecas libconfuse ou os arquivos .pc , crie o arquivo /etc/ld.so.conf.d/local.conf com este conteúdo:
/usr/local/lib
Atualize o cache do vinculador:
sudo ldconfig -v |egrep libconfuse
e execute o INADYN Configurar script como este:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure
Para integração do SystemD, você precisa instalar pkg-config , o que ajuda o sistema de construção Inadyn a descobrir os caminhos do SystemD. Quando instalado, basta ligar para systemctl para ativar e iniciar inadyn :
$ sudo systemctl enable inadyn.service
$ sudo systemctl start inadyn.service
Verifique se ele começou corretamente inspecionando o log do sistema ou:
$ sudo systemctl status inadyn.service
Para parar o serviço:
$ sudo systemctl stop inadyn.service
Quando embutidos em um roteador, alguns recursos geralmente não são usados e podem ser desativados para economizar espaço. A opção de configuração --enable-reduced construirá um binário de funcionalidade tão reduzido. Atualmente, isso desativa mensagens de log verbosas e seqüências de erros e elimina a verificação de arquivos de configuração e alguma compatibilidade com versões anteriores.
Se você deseja contribuir ou simplesmente experimentar os recursos mais recentes, mas não lançados, precisa saber algumas coisas sobre o sistema de construção da GNU:
configure.ac e um Makefile.am por diretório são arquivos-chaveconfigure e Makefile.in são gerados a partir de autogen.sh , eles não são armazenados no Git, mas gerados automaticamente para o Tarballs de liberaçãoMakefile é gerado por script configure Para construir a partir do Git; Clone o repositório e execute o script autogen.sh . Isso requer que o GNU Tools automake , autoconf e libtool sejam instalados no seu sistema. Tarballs lançados não exigem essas ferramentas.
$ sudo apt install git automake autoconf
Em seguida, você pode clonar o repositório e criar o script configure , que não faz parte do repo Git:
git clone https://github.com/troglobit/inadyn.git
cd inadyn/
./autogen.sh
./configure && make
O comando do Git exige, pelo menos, as dependências de biblioteca mencionadas anteriormente. As fontes Git são um alvo em movimento e não são recomendadas para sistemas de produção, a menos que você saiba o que está fazendo!
Esta é a continuação do Inadyn original de Narcis Ilisei. Agora mantido por Joachim Wiberg. Por favor, registre relatórios de bug ou envie solicitações de puxar para correções de bugs e extensões propostas no GitHub.
Um obrigado pessoal! vai para Robert Högberg, que patrocinou um pequeno roteador D-Link Dir-645 para que eu pudesse voltar às interwebs :-)