El último lanzamiento siempre está disponible en Github en
https://github.com/troglobit/inadyn/releases
Consejo: El manual HTML Unix está en https://man.troglobit.com, por ejemplo, inadyn.conf (5)
Inadyn, o in a-dyn, es un pequeño y simple DNS, DDNS, cliente con soporte HTTPS. Comúnmente disponible en muchas distribuciones GNU/Linux, utilizadas en los enrutadores de plataformas y puertas de enlace de Internet para automatizar la tarea de mantener su nombre de Internet en sincronización con su dirección IP pública. También se puede utilizar en instalaciones con conexiones redundantes (copia de seguridad) a Internet.
La mayoría de las personas no saben que comparten un grupo de direcciones de Internet con otros usuarios del mismo proveedor de servicios de Internet (ISP). Los protocolos como DHCP, PPPOE o PPPOA se utilizan para brindarle una dirección y una forma de conectarse a Internet, pero generalmente no es una forma para que otros se conecten con usted. Si desea ejecutar un servidor de Internet en una conexión de este tipo, corre el riesgo de perder su dirección IP cada vez que se vuelva a conectar, o como en el caso de DHCP, incluso cuando el arrendamiento se renegocia.
Al usar un cliente DDNS como inadyn puede registrar un nombre de Internet con un proveedor de DDNS, como Freedns. El cliente DDNS actualiza su registro de DNS periódicamente y/o bajo demanda cuando cambia su dirección IP. Inadyn puede mantener múltiples registros de host con la misma dirección IP, usar una combinación de un script, la dirección desde una interfaz orientada a Internet, o predeterminada utilizando el detector de cambio de dirección IP del proveedor DDNS.
__
La dirección IP pública es el valor predeterminado, las direcciones privadas también se pueden usar.
Algunos de estos servicios son gratuitos para el uso no comercial, algunos toman una pequeña tarifa, pero también proporcionan más dominios para elegir.
Los siguientes proveedores de nivel uno tienen "complementos" dedicados, aunque muchos comparten el complemento DYNDNS original. A continuación se muestra una lista de proveedores de DDNS conocidos, ordenados por el complemento que los admite:
Para la lista completa, consulte inadyn -L , para la salida JSON amigable con la máquina, use inadyn -L -j .
Los proveedores de DDNS no admitidos de forma nativa pueden habilitarse utilizando el complemento DDNS personalizado o genérico. Consulte a continuación los ejemplos de configuración.
In-A-Dyn predeterminado es HTTPS, pero no todos los proveedores pueden admitir esto, por lo tanto, intente deshabilitar SSL para la actualización ( ssl = false ) o la fase de checkip ( checkip-ssl = false ) en la sección provider , en caso de que tenga problemas.
HTTPS está habilitado de forma predeterminada, ya que protege sus credenciales de ser hisadas y reduce el riesgo de que alguien secuestre su cuenta.
In-A-Dyn admite la actualización de varios servidores DDNS, varias cuentas incluso en diferentes proveedores de DDNS. El siguiente ejemplo /etc/inadyn.conf muestra cómo se puede hacer esto. Para verificar su configuración, sin iniciar el demonio, use:
inadyn --check-config
Esto busca el archivo .conf predeterminado, para verificar cualquier archivo, 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 cómo la configuración tiene tres usuarios diferentes del proveedor sin-IP: esto se logra al agregar A :ID al nombre del proveedor.
También definimos un directorio de caché personalizado, el valor predeterminado es usar /var/cache . En nuestro caso /mnt es una tienda persistente específica del sistema para almacenar en caché su dirección IP como se informó a cada proveedor. Inadyn use esto para asegurarse de que no está bloqueado de su cuenta para actualizaciones excesivas, lo que puede ocurrir si su dispositivo de puerta de enlace de Internet que se ejecuta inadyn se atasca en un bucle de reinicio, o similar.
Sin embargo, para que el mecanismo de almacenamiento en caché sea 100% infalible, el reloj del sistema debe establecerse correctamente: si tiene problemas con el reloj del sistema que no se establece correctamente en el arranque, por ejemplo, en espera de la recepción de un mensaje NTP, use la opción de línea de comandos --startup-delay=SEC . Para decirle inadyn que está bien proceder antes del tiempo de espera SEC , use SIGUSR2 .
El último sistema definido es el servicio IPv6 https://tunnelbroker.net proporcionado por Hurricane Electric. Aquí hostname se establece en el ID del túnel y la contraseña debe ser la clave de actualización que se encuentra en la pestaña Configuración avanzada .
Nota: El
checkip-commandpara Dynv6, arriba, es solo una forma de hacerlo. Aquí hay otra variante, de su propio script:ip -6 addr list scope global $device | grep -v " fd" | sed -n 's/.*inet6 ([0-9a-f:]+).*/1/p' | head -n 1
A veces, el checkip-server predeterminado para un proveedor de DDNS puede ser lento para responder, incluso el tiempo de espera. In-A-Dyn Soporte anular el valor predeterminado del proveedor con uno personalizado o un comando personalizado. La forma más fácil de cambiarlo es establecer checkip-server = default en la configuración del proveedor, activando In-a-dyn para usar el predeterminado http://ifconfig.me/ip , que también es el valor predeterminado para cualquier configuración DDNS personalizada. Consulte las páginas del hombre, o la sección a continuación, para obtener más información.
Algunos proveedores requieren usar un navegador específico para enviar actualizaciones, esto se puede trabajar utilizando la configuración user-agent = STRING , como se muestra arriba. Está disponible tanto a nivel global como en un nivel por proveedor.
Nota: En una configuración de servidor de usuarios múltiples, asegúrese de ver su .conf a 600 (solo lectura-escritura/root) para proteger contra otros usuarios que leen las credenciales de su servidor DDNS.
Además de los proveedores de DDNS predeterminados compatibles con Inadyn, los proveedores de DDNS personalizados se pueden definir en el archivo de configuración. Use custom {} en en lugar de la sección provider {} utilizada en los ejemplos anteriores.
In-A-Dyn Utilice la autenticación básica HTTP (Base64 codificada) para comunicar el nombre de usuario y la contraseña al servidor. Si no tiene un nombre de usuario y/o contraseña, puede dejar estos campos fuera. La autenticación básica aún se utilizará en comunicación con el servidor, pero con nombre de usuario y contraseña vacíos.
Se puede configurar un proveedor de DDNS personalizado 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
}
Las siguientes variables se pueden sustituir en la configuración:
%u - username
%p - password, if HTTP basic auth is not used
%h - hostname
%i - IP address
Para https://www.namecheap.com puede verse de la siguiente manera. Observe cómo la sintaxis del nombre de host difiere de arriba:
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>"
}
Aquí se actualizan tres nombres de host, uno HTTP obtiene una solicitud de actualización para cada nombre de host enumerado. Algunos proveedores, como Freedns, admiten la configuración de registros CNAME (alias) para reducir la cantidad de registros que necesita actualizar. Freedns incluso predeterminando vincular múltiples registros con la misma actualización, lo que puede ser muy confuso si desea que cada registro DNS se actualice desde una dirección IP única, ¡asegúrese de verificar su configuración en el proveedor DDNS !
El complemento genérico también se puede utilizar con proveedores que requieren la nueva dirección IP del cliente en la solicitud de actualización. Aquí hay un ejemplo de cómo se puede hacer esto si fingimos que http://dyn.com no es compatible con inadyn. El ddns-path difiere entre los proveedores y es algo que debe resolver. Las páginas de soporte a veces enumeran esto en una sección API, o 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 }
}
Aquí se usa un ddns-path completamente personalizado con especificadores de formato, consulte la página del hombre inadyn.conf(5) para obtener detalles sobre esto.
Otro ejemplo:
# 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
}
Al usar el complemento genérico, primero debe inspeccionar la respuesta del proveedor DDNS. Por defecto, Inadyn busca un código OK de la respuesta 200 HTTP y las cadenas "good" , "OK" , "true" , "success" o "updated" en el cuerpo de respuesta HTTP. Si el proveedor de DDNS devuelve algo más, puede agregar una lista de posibles ddns-response = { Arrr, kilroy } , o simplemente un solo ddns-response = Cool , si su proveedor da alguna respuesta, use ddns-response = "" .
Si su proveedor DDNS no le proporciona un checkip-server , puede usar otros servicios, como http://ifconfig.me/ip, que es el valor predeterminado si no especifica uno para su configuración de proveedor personalizado:
checkip-server = ifconfig.me
checkip-path = /ip
checkip-ssl = false
o incluso usar un script o comando:
checkip-command = /sbin/ifconfig eth0 | grep 'inet addr'
Estas dos configuraciones también se pueden usar en las secciones provider{} .
Nota: ¡Se requiere hostname , incluso si todo está codificado en el ddns-path ! El nombre de host dado se adjunta al ddns-path utilizado para las actualizaciones, a menos que use la configuración append-myip , en cuyo caso su dirección IP se agregará en su lugar. Al usar append-myip probablemente necesite codificar su nombre de host DNS en el ddns-path , como se hace en el último ejemplo anterior.
Un problema común es comenzar, lo cual es comprensible ya que In-A-Dyn tiene muchas opciones confusas.
Habiendo guardado su /etc/inadyn.conf , primero intente comenzar en primer plano con registros de depuración completos:
inadyn -l debug --foreground --force
Cualquier configación errónea o respuestas de servidor incorrecto debería ser mucho más fácil de detectar. ¡Recuerde censurar sus registros de cualquier contraseña e información de dominio si presenta un informe de error o hace una pregunta en el Foro/IRC!
Intente borrar el caché:
sudo systemctl stop inadyn.servicesudo rm -rf /var/cache/inadyn/*sudo systemctl restart inadyn.service Durante mucho tiempo, el proyecto mantuvo su propio embalaje .deb e infraestructura básica APT. Sin embargo, el nivel creciente de características en In a-Dyn y, por lo tanto, la cantidad de dependencias, así como las demandas de soportar más arquitecturas y diferentes distribuciones, el soporte de .deb prebuilado se ha suspendido a v2.9.1.
El Proyecto Debian ahora tiene un mantenedor activo para Inadyn, que es el río arriba para Ubuntu y otros. Informe los problemas y solicitudes a su distribución respectiva:
Nota: Los archivos de empaque del proyecto se han trasladado a una rama de Debian separada en el repositorio de Git. No se actualiza o compatible activamente para lanzamientos. Para usarlo, consulte la rama y edite
debian/changelog) para crear nuevos archivos.debpara su sistema.
Imágenes construidas automáticamente disponibles aquí:
Se proporciona un Dockerfile para simplificar la construcción y la ejecución inadyn .
docker build -t inadyn:latest .
docker run --rm -v "$PWD/inadyn.conf:/etc/inadyn.conf" inadyn:latest
Si no desea ejecutar In-a-Dyn como un demonio de fondo, puede configurar un 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 ejecutar la última versión estable en macOS, escriba:
brew install inadyn
Para ejecutar la última versión desde la rama maestra, instale el toque git en su lugar:
brew install --HEAD troglobit/inadyn/inadyn
Cualquiera de estos instalará todas las dependencias.
También puede instalar in a-dyn en macOS usando macports:
sudo port install inadyn
Puede encontrar más información en la página de puertos de In-A-Dyn.
Primero descargue el último lanzamiento oficial en A-Dyn de GitHub:
In-A-Dyn requiere algunas bibliotecas para construir. El sistema de compilación los busca, en sus versiones requeridas, utilizando la herramienta pkg-config :
Están disponibles en la mayoría de las distribuciones de UNIX como paquetes preconstruidos. Asegúrese de instalar el paquete -dev o -devel de los paquetes de distribución al construir inadyn. En Debian/Ubuntu (derivados):
$ sudo apt install gnutls-dev libconfuse-dev
Para construir, también necesita un compilador C, la herramienta pkg-config y hacer:
$ sudo apt install build-essential pkg-config
Cuando se construya con soporte HTTPS (SSL/TLS), asegúrese de instalar también el paquete ca-certificates en su sistema, de lo contrario, inadyn no podrá validar los certificados HTTPS del proveedor DDNS.
El sistema de configuración y compilación de GNU usa /usr/local como el prefijo de instalación predeterminado. En muchos casos, esto es útil, pero esto significa que los archivos de configuración y los archivos de caché también usarán ese mismo prefijo. La mayoría de los usuarios esperan que esos archivos se encuentren en /etc/ y /var/run/ y configure tiene algunas opciones útiles que se recomienda usar:
$ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
$ make -j5
$ sudo make install-strip
Es posible que desee eliminar la opción --prefix=/usr .
Por defecto, Inadyn intenta construir con GNUTLS para soporte HTTPS. GNUTLS es la biblioteca SSL recomendada para usar en distribuciones de UNIX que no proporcionan OpenSSL/libressl como biblioteca de sistemas. Sin embargo, cuando OpenSSL o Libressl están disponibles como una biblioteca de sistemas, por ejemplo, en muchos sistemas integrados:
./configure --enable-openssl
Para deshabilitar completamente el soporte de HTTPS inadyn (¡no se recomienda!):
./configure --disable-ssl
Para obtener más detalles sobre la emisión de la licencia OpenSSL y GNU GPL, consulte:
Algunas personas quieren construir estáticamente, para hacer esto con autoconf Agregar los siguientes LDFLAGS= después del script de configuración. También es posible que deba agregar LIBS=... , que dependerá de su sistema particular:
./configure LDFLAGS="-static" ...
En algunos sistemas, la ruta de instalación de configuración predeterminada, /usr/local , está deshabilitada y no se busca en herramientas como ldconfig y pkg-config . Entonces, si Configure no puede encontrar las bibliotecas LibConfuse, o los archivos .pc , cree el archivo /etc/ld.so.conf.d/local.conf con este contenido:
/usr/local/lib
Actualizar el caché de enlazador:
sudo ldconfig -v |egrep libconfuse
y ejecute el script de configuración inadyn así:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure
Para la integración de Systemd, debe instalar pkg-config , que ayuda al sistema de compilación inadyn a descubrir las rutas Systemd. Cuando se instala, simplemente llame systemctl para habilitar e iniciar inadyn :
$ sudo systemctl enable inadyn.service
$ sudo systemctl start inadyn.service
Verifique que comenzó correctamente inspeccionando el registro del sistema o:
$ sudo systemctl status inadyn.service
Para detener el servicio:
$ sudo systemctl stop inadyn.service
Cuando se integran en un enrutador, algunas características generalmente no se usan y se pueden deshabilitar para ahorrar espacio. La opción Configurar --enable-reduced construirá un binario de funcionalidad reducido. Actualmente, esto deshabilita los mensajes de registro detallado y las cadenas de error y elimina la verificación de archivos de configuración y alguna compatibilidad con atraso.
Si desea contribuir, o simplemente pruebe las características últimas pero inéditas, entonces necesita saber algunas cosas sobre el sistema de compilación GNU:
configure.ac y un diirectorio Makefile.am son archivos claveconfigure y Makefile.in se generan desde autogen.sh , no se almacenan en GIT, sino que se generan automáticamente para los Tarballs de liberaciónMakefile se genera con Script configure Construir desde git; Clone el repositorio y ejecute el script autogen.sh . Esto requiere que el GNU Tools automake , autoconf y libtool se instalarán en su sistema. Los tarballs liberados no requieren estas herramientas.
$ sudo apt install git automake autoconf
Luego puede clonar el repositorio y crear el script configure , que no es parte del repositorio de git:
git clone https://github.com/troglobit/inadyn.git
cd inadyn/
./autogen.sh
./configure && make
La construcción de GIT requiere, al menos, las dependencias de la biblioteca mencionadas anteriormente. Las fuentes de GIT son un objetivo móvil y no se recomiendan para los sistemas de producción, ¡a menos que sepa lo que está haciendo!
Esta es la continuación del inadyn original de Narcis Ilisei. Ahora mantenido por Joachim Wiberg. POR FAVOR ARRIBA DE INFORMES DE ERROR o envíe solicitudes de extracción de correcciones de errores y extensiones propuestas en GitHub.
¡Un agradecimiento personal! Sale a Robert Högberg, quien patrocinó un pequeño enrutador D-Link Dir-645 para que pudiera volver a las interwebs :-)