blob: ed133b08b2bd929dc990e354f5ef76336da52ef2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
.. _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.
CLI and RFC2136
===============
First, create an :rfc:`2136` config node :
.. code-block:: none
edit service dns dynamic interface eth0 rfc2136 <confignodename>
Present your RNDC key to ddclient :
.. code-block:: none
set key /config/dyndns/mydnsserver.rndc.key
Set the DNS server IP/FQDN :
.. code-block:: none
set server dns.mydomain.com
Set the NS zone to be updated :
.. code-block:: none
set zone mydomain.com
Set the records to be updated :
.. code-block:: none
set record dyn
set record dyn2
You can optionally set a TTL (note : default value is 600 seconds) :
.. code-block:: none
set ttl 600
This will generate the following ddclient config blocks:
.. code-block:: none
server=dns.mydomain.com
protocol=nsupdate
password=/config/dyndns/mydnsserver.rndc.key
ttl=600
zone=mydomain.com
dyn
server=dns.mydomain.com
protocol=nsupdate
password=/config/dyndns/mydnsserver.rndc.key
ttl=600
zone=mydomain.com
dyn2
You can also keep a different dns zone updated. Just create a new config node:
.. code-block:: none
edit service dns dynamic interface eth0 rfc2136 <confignode2>
CLI and HTTP dynamic DNS services
=================================
VyOS is also able to use any service relying on protocols supported
by ddclient.
To use such a service, you must define a login, a password, one or multiple
hostnames, a protocol and a server.
.. code-block:: none
edit service dns dynamic interface eth0 service HeNet
set login my-login # set password my-password
set host-name my-tunnel-id
set protocol dyndns2
set server ipv4.tunnelbroker.net
VyOS is also shipped with a list of known services. You don't need to set the
protocol and server value as VyOS has defaults provided for those. These are
the services VyOS knows about:
* afraid
* changeip
* dnspark
* dslreports
* dyndns
* easydns
* namecheap
* noip
* zoneedit
To use DynDNS for example:
.. code-block:: none
edit service dns dynamic interface eth0 service dyndns
set login my-login
set password my-password
set host-name my-dyndns-hostname
It's possible to use multiple services :
.. code-block:: none
edit service dns dynamic interface eth0 service dyndns
set login my-login
set password my-password
set host-name my-dyndns-hostname
edit service dns dynamic interface eth0 service HeNet
set login my-login
set password my-password
set host-name my-tunnel-id
set protocol dyndns2
set server ipv4.tunnelbroker.net
ddclient 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 these two options:
.. code-block:: none
set service dns dynamic interface eth0 use-web url
set service dns dynamic interface eth0 use-web skip
ddclient_ will load the webpage at `[url]` and will try to extract an IP
address for the response. ddclient_ will skip any address located before the
string set in `[skip]`.
.. include:: references.rst
|