mirror of
https://github.com/vyos/vyos-documentation.git
synced 2025-10-26 08:41:46 +01:00
Updating docs as a follow up from this forum post: https://forum.vyos.io/t/dynamic-dns-with-namecheap/5015/5
165 lines
5.3 KiB
ReStructuredText
165 lines
5.3 KiB
ReStructuredText
.. _dynamic-dns:
|
|
|
|
###########
|
|
Dynamic DNS
|
|
###########
|
|
|
|
VyOS is able to update a remote DNS record when an interface gets a new IP
|
|
address. In order to do so, VyOS includes ddclient_, a Perl script written for
|
|
this only one purpose.
|
|
|
|
ddclient_ uses two methods to update a DNS record. The first one will send
|
|
updates directly to the DNS daemon, in compliance with :rfc:`2136`. The second
|
|
one involves a third party service, like DynDNS.com or any other similar
|
|
website. This method uses HTTP requests to transmit the new IP address. You
|
|
can configure both in VyOS.
|
|
|
|
Configuration
|
|
=============
|
|
|
|
:rfc:`2136` Based
|
|
-----------------
|
|
|
|
.. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name>
|
|
|
|
Create new :rfc:`2136` DNS update configuration which will update the IP
|
|
address assigned to `<interface>` on the service you configured under
|
|
`<service-name>`.
|
|
|
|
.. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> key <keyfile>
|
|
|
|
File identified by `<keyfile>` containing the secret RNDC key shared with
|
|
remote DNS server.
|
|
|
|
.. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> server <server>
|
|
|
|
Configure the DNS `<server>` IP/FQDN used when updating this dynamic
|
|
assignment.
|
|
|
|
.. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> zone <zone>
|
|
|
|
Configure DNS `<zone>` to be updated.
|
|
|
|
.. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> record <record>
|
|
|
|
Configure DNS `<record>` which should be updated. This can be set multiple
|
|
times.
|
|
|
|
.. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> ttl <ttl>
|
|
|
|
Configure optional TTL value on the given resource record. This defualts to
|
|
600 seconds.
|
|
|
|
Example
|
|
^^^^^^^
|
|
|
|
* Register DNS record ``example.vyos.io`` on DNS server ``ns1.vyos.io``
|
|
* Use auth key file at ``/config/auth/my.key``
|
|
* Set TTL to 300 seconds
|
|
|
|
.. code-block:: none
|
|
|
|
vyos@vyos# show service dns dynamic
|
|
interface eth0.7 {
|
|
rfc2136 VyOS-DNS {
|
|
key /config/auth/my.key
|
|
record example.vyos.io
|
|
server ns1.vyos.io
|
|
ttl 300
|
|
zone vyos.io
|
|
}
|
|
}
|
|
|
|
This will render the following ddclient_ configuration entry:
|
|
|
|
.. code-block:: none
|
|
|
|
#
|
|
# ddclient configuration for interface "eth0.7":
|
|
#
|
|
use=if, if=eth0.7
|
|
|
|
# RFC2136 dynamic DNS configuration for example.vyos.io.vyos.io
|
|
server=ns1.vyos.io
|
|
protocol=nsupdate
|
|
password=/config/auth/my.key
|
|
ttl=300
|
|
zone=vyos.io
|
|
example.vyos.io
|
|
|
|
.. note:: You can also keep different DNS zone updated. Just create a new
|
|
config node: ``set service dns dynamic interface <interface> rfc2136
|
|
<other-service-name>``
|
|
|
|
HTTP based services
|
|
-------------------
|
|
|
|
VyOS is also able to use any service relying on protocols supported by ddclient.
|
|
|
|
To use such a service, one must define a login, password, one or multiple
|
|
hostnames, protocol and server.
|
|
|
|
.. cfgcmd:: set service dns dynamic interface <interface> service <service> host-name <hostname>
|
|
|
|
Setup the dynamic DNS hostname `<hostname>` associated with the DynDNS
|
|
provider identified by `<service>` when the IP address on interface
|
|
`<interface>` changes.
|
|
|
|
.. cfgcmd:: set service dns dynamic interface <interface> service <service> login <username>
|
|
|
|
Configure `<username>` used when authenticating the update request for
|
|
DynDNS service identified by `<service>`.
|
|
For Namecheap, set the <domain> you wish to update.
|
|
|
|
.. cfgcmd:: set service dns dynamic interface <interface> service <service> password <password>
|
|
|
|
Configure `<password>` used when authenticating the update request for
|
|
DynDNS service identified by `<service>`.
|
|
|
|
.. cfgcmd:: set service dns dynamic interface <interface> service <service> protocol <protocol>
|
|
|
|
When a ``custom`` DynDNS provider is used the protocol used for communicating
|
|
to the provider must be specified under `<protocol>`. See the embedded
|
|
completion helper for available protocols.
|
|
|
|
.. cfgcmd:: set service dns dynamic interface <interface> service <service> server <server>
|
|
|
|
When a ``custom`` DynDNS provider is used the `<server>` where update
|
|
requests are being sent to must be specified.
|
|
|
|
Example:
|
|
^^^^^^^^
|
|
|
|
Use DynDNS as your preferred provider:
|
|
|
|
.. code-block:: none
|
|
|
|
set service dns dynamic interface eth0 service dyndns
|
|
set service dns dynamic interface eth0 service dyndns login my-login
|
|
set service dns dynamic interface eth0 service dyndns password my-password
|
|
set service dns dynamic interface eth0 service dyndns host-name my-dyndns-hostname
|
|
|
|
.. note:: Multiple services can be used per interface. Just specify as many
|
|
serives per interface as you like!
|
|
|
|
Running Behind NAT
|
|
------------------
|
|
|
|
By default, ddclient_ will update a dynamic dns record using the IP address
|
|
directly attached to the interface. If your VyOS instance is behind NAT, your
|
|
record will be updated to point to your internal IP.
|
|
|
|
ddclient_ has another way to determine the WAN IP address. This is controlled
|
|
by:
|
|
|
|
.. cfgcmd:: set service dns dynamic interface <interface> use-web url <url>
|
|
|
|
Use configured `<url>` to determine your IP address. ddclient_ will load
|
|
`<url>` and tries to extract your IP address from the response.
|
|
|
|
.. cfgcmd:: set service dns dynamic interface <interface> use-web skip <pattern>
|
|
|
|
ddclient_ will skip any address located before the string set in `<pattern>`.
|
|
|
|
.. _ddclient: https://github.com/ddclient/ddclient
|