1dnssec-trigger(8)             dnssec-trigger 0.17            dnssec-trigger(8)
2
3
4

NAME

6       dnssec-trigger,  dnssec-triggerd, dnssec-trigger-panel, dnssec-trigger-
7       control, dnssec-trigger-control-setup, dnssec-trigger.conf - check  DNS
8       servers for DNSSEC support and adjust to compensate.
9

SYNOPSIS

11       dnssec-triggerd [-d] [-v] [-u] [-c file]
12
13       dnssec-trigger-control [-c file] [-s ip[@port] ] command [arguments]
14
15       dnssec-trigger-panel [-d] [-c file]
16

DESCRIPTION

18       The dnssec-trigger programs steer unbound(8) towards DNSSEC capable DNS
19       servers.  A DHCP hook installed on the system calls dnssec-trigger-con‐
20       trol  that  contacts the daemon dnssec-triggerd that probes the list of
21       servers.  The  daemon  then  adjusts  a  running  unbound  through  un‐
22       bound-control(8)  and notifies the user applet dnssec-trigger-panel for
23       GUI display.
24
25       The dnssec-trigger-panel runs after user login, displays  notifications
26       and  status  to  the user.  It may popup a warning if no DNSSEC capable
27       servers are available, with options to disconnect or to  connect  inse‐
28       curely.
29
30       The dnssec-trigger-control tool is used in the background by scripts to
31       notify the daemon of new (DHCP) DNS servers.  It can be  used  to  test
32       the system by providing a (fake) list of DNS server IP addresses.
33
34       The  dnssec-trigger-control-setup  tool  is  used to setup the SSL keys
35       that the daemon and user panel use to communicate securely.  It must be
36       run once after installation.
37

THE DNSSEC-TRIGGERD DAEMON

39       Thus  the dnssec-triggerd daemon runs continually, and is started after
40       boot.  It receives a list of IP addresses, probes them, and adjusts un‐
41       bound  and resolv.conf.  Unbound acts as the validating local resolver,
42       running  on  127.0.0.1.   And  resolv.conf  is  modified  to  point  to
43       127.0.0.1.
44
45       -c cfgfile
46              Set  the  config  file  with settings for the dnssec-triggerd to
47              read instead of  reading  the  file  at  the  default  location,
48              /etc/dnssec-trigger/dnssec-trigger.conf. The syntax is described
49              below.
50
51       -d     Debug flag, do not fork into the background, but  stay  attached
52              to the console.
53
54       -u     uninstall  dns  override:  makes  resolv.conf  mutable again, or
55              other OS action.
56
57       -v     Increase verbosity. If given multiple times, more information is
58              logged.   This is in addition to the verbosity (if any) from the
59              config file.
60

THE DNSSEC-TRIGGER.CONF FILE

62       The config file contains options.  It is  fairly  simple,  key:  value.
63       You  can  make  comments  with '#' and have empty lines.  The parser is
64       simple and expects one statement per line.
65
66       verbosity: <num>
67              Amount of logging, 1 is default. 0 is only errors, 2 is more de‐
68              tail, 4 for debug.
69
70       pidfile: "<file>"
71              The  filename  where  the  pid of the dnssec-triggerd is stored.
72              Default is /run/dnssec-triggerd.pid.
73
74       logfile: "<file>"
75              Log to a file instead of syslog, default is to syslog.
76
77       use-syslog: <yes or no>
78              Log to syslog, default is yes.  Set to no logs to stderr (if  no
79              logfile) or the configured logfile.
80
81       unbound-control: "<command>"
82              The  string  gives  the  command  to  execute.   It  can be "un‐
83              bound-control" to search the runtime PATH, or a  full  pathname.
84              With  a  space  after the command arguments can be configured to
85              the command, i.e. "/usr/local/bin/unbound-control -c my.conf".
86
87       resolvconf: "/etc/resolv.conf"
88              The resolv.conf file to edit (on  posix  systems).   The  daemon
89              keeps  the  file  readonly  and only make it writable shortly to
90              change it itself.  This is to keep other software from interfer‐
91              ing.   On OSX (if compiled in) also the DNS settings are changed
92              in the network configuration machinery (visible in  the  network
93              settings control panel).  On Windows (if compiled), it sets reg‐
94              istry settings for network configuration (may be visible in  the
95              control  panel tab for network devices) and does not write a re‐
96              solv.conf file.
97
98       domain: "example.com"
99              The domain to set in resolv.conf.  See  resolv.conf(5).   Picked
100              up  once  during installation, and not from DHCP since it allows
101              directing traffic elsewhere.
102
103       search: "example.com"
104              The domain name search path to  set  in  resolv.conf.   See  re‐
105              solv.conf(5).   Picked up once during installation, and not from
106              DHCP since it allows directing traffic elsewhere.
107
108       noaction: <yes or no>
109              Default is no.  If  yes,  no  action  is  taken  to  change  un‐
110              bound-control  or  resolv.conf.  The software can be tested with
111              this, probe results are available.
112
113       port: <8955>
114              Port number to use for communication with dnssec-triggerd.  Com‐
115              munication uses 127.0.0.1 (the loopback interface).  SSL is used
116              to secure it, and the keys are stored on the disk  (see  below).
117              The  other  tools  read this config file to find the port number
118              and key locations.
119
120       login-command: "/usr/bin/xdg-open"
121              The command that is run when the user clicks Login on the no web
122              access  dialog.  That is supposedly a web browser, that is aimed
123              to open some url so that the hot-spot network login  can  inter‐
124              cept and show its login page.  The default is a detected generic
125              web browser.  The "" empty string turns off this feature and  no
126              command gets run.
127
128       login-location: "http://hotspot-nocache.fedoraproject.org/"
129              The  url  that is opened with the web browser.  Used as command‐
130              line argument.
131
132       server-key-file: "/etc/dnssec-trigger/dnssec_trigger_server.key"
133
134       server-cert-file: "/etc/dnssec-trigger/dnssec_trigger_server.pem"
135
136       control-key-file: "/etc/dnssec-trigger/dnssec_trigger_control.key"
137
138       control-cert-file: "/etc/dnssec-trigger/dnssec_trigger_control.pem"
139              The files used for SSL secured communication  with  dnssec-trig‐
140              gerd.   These  files  can  be  created  with dnssec-trigger-con‐
141              trol-setup (run as root).
142
143       check-updates: <yes or no>
144              Check for software updates, if  there  are,  download  them  and
145              present  the user with a dialog that allows  them to run the in‐
146              staller to upgrade the software.  It checks a SHA256 checksum on
147              the  download,  the  checksum  is signed with DNSSEC (from a TXT
148              record).  On windows and osx the default is yes.  On other  sys‐
149              tems the default is no (it'll download the source tarball if en‐
150              abled).
151
152       url: "http://example.com OK"
153              This command adds an url to probe via HTTP (port 80). The  first
154              word,  before the space is the url to resolve.  The remainder is
155              the string that is expected as page contents (that may  be  pre‐
156              fixed or suffixed with whitespace).  The url is resolved, a HTTP
157              1.1 query is sent.  The reply must be type 2xx and  contain  the
158              page  contents.   If this is not true, dnssec-trigger knows that
159              there is a 'hot spot' of some sort interfering with traffic.  If
160              you  do not configure any urls, then no probes are done.  If you
161              configure multiple urls then it probes a random selection  of  3
162              urls, all of their IP addresses in turn, with IP4 and IP6 simul‐
163              taneously.  At most 5 of the DHCP DNS servers are  used  to  re‐
164              solve  (in  parallel).   If an answer is gotten and it fails the
165              probe stop, the probing continues if there is no  connection  or
166              response 404.
167
168       tcp80: <ip>
169              Add  an  IP4  or IP6 address to the list of fallback open DNSSEC
170              resolvers that are used on TCP port  80.   These  relay  traffic
171              from port 80 to regular DNS.
172
173       tcp443: <ip>
174              Add  an  IP4  or IP6 address to the list of fallback open DNSSEC
175              resolvers that are used on TCP port 443.   These  relay  traffic
176              from port 443 to regular DNS.
177
178       tcp443: <ip> or <ip> { <hash>}
179              Add  an  IP4  of  IP6  address  to the list of fallback SSL open
180              DNSSEC resolvers.  They  serve  plain-DNS(tcp-style)  over  port
181              443, encapsulated in SSL.  The SSL certificate online is checked
182              with the fingerprint (if configured here).   You  may  configure
183              multiple  hashes  (one space between), if one matches its OK, so
184              that pre-publish rollover of the certificates is possible.
185
186       use-vpn-forwarders: <yes or no>
187              Use DNS servers from VPN for all hosts, default is no. Only  do‐
188              mains  configured  for  this connection are forwarded to VPN re‐
189              solvers. If set yes, all DNS queries  are  resolved  on  servers
190              supplied by VPN.
191
192       use-private-addresses: <yes or no>
193              Forward  reverse  zones  of RFC 1918 private addresses to global
194              forwarders, default is yes.  If set no,  private  addresses  are
195              resolved  only  on  this  host. Addresses not configured locally
196              will return NXDOMAIN.
197

THE DNSSEC-TRIGGER-PANEL

199       The dnssec-trigger-panel is an applet that runs in the tray.  It  shows
200       the  DNSSEC status.  It can be invoked with -d to test in the build di‐
201       rectory.  The -c cfgfile option can set the config file away  from  the
202       default.  The applet keeps an SSL connection to the daemon and displays
203       the status, and can show the user dialogs.
204
205       The applet has a small menu.  The menu item Reprobe causes  the  daemon
206       to probe the last seen DHCP DNS servers again, which may now work after
207       a hotspot signon.  The menu item Hotspot Signon goes into insecure mode
208       for  hotspots  where  this must be used to sign on to the hot spot: use
209       reprobe when done to resume dnssec protection efforts.  The  Probe  Re‐
210       sult menu item shows the results of the previous probe to the user, for
211       technical help with network difficulties.
212

THE DNSSEC-TRIGGER-CONTROL TOOL

214       The dnssec-trigger-control tool can be used to test.  It is  also  used
215       inside  DHCP  scripts (platform specific).  It can send commands to the
216       daemon.
217
218       Options:
219
220       -c cfgfile
221              Set the config file to use away from the default.
222
223       -s ip[@port]
224              Default connects to 127.0.0.1 with the port  from  config  file,
225              but this options overrides that with an IPv4 or IPv6 address and
226              optional a port.
227
228       -v     increase verbosity of dnssec-trigger-control.
229
230       Commands:
231
232       submit <ips>
233              Submit a list of space separated IP addresses (from  DHCP)  that
234              are  the  DNS servers that the daemon will probe.  IPv4 and IPv6
235              addresses can be used.
236
237       unsafe Test command that probes some 127/8  addresses  in  a  way  that
238              makes  the  daemon conclude that no DNSSEC works.  Presents user
239              with 'Insecure?' dialog.
240
241       status Shows the last probe results.
242
243       reprobe
244              Probe the last probe again.  It  also  cancels  forced  insecure
245              state  from hotspot signon, causing probes for dnssec to resume.
246              This command acts as the menu item with the same name.
247
248       skip_http
249              Skip the http probe step.  Setup DNSSEC,  as  possible,  without
250              taking  the  result  of  the http probe into account.  Once http
251              works again, it'll stop skipping the http results.   Useful,  if
252              you  want  to  have  DNSSEC on a network where web access is not
253              possible.
254
255       hotspot_signon
256              This command acts as the menu item with the same name.   Use  it
257              to force insecure mode, where you can then interact with (weird)
258              hotspot set ups.  When you are done, do the reprobe  command  to
259              resume DNSSEC protection efforts.
260
261       results
262              continuous feed of probe results.
263
264       cmdtray
265              Continuous input feed, used by the tray icon to send commands to
266              the daemon.
267
268       stoppanels
269              Makes connected tray icons quit.   Useful  for  installers  that
270              need to update their executable.
271
272       stop   stops the daemon.
273

THE DNSSEC-TRIGGER-CONTROL-SETUP TOOL

275       This  tool  aids  setup of files.  Without arguments it creates the key
276       files.  If key files already exist, it resigns certificates with exist‐
277       ing private keys.  With -d dir the files are placed in the given direc‐
278       tory.
279
280       With -i the tool changes configuration files.  It tests if unbound  has
281       remote-control:  control-enable:  yes  and  if not appends lines to un‐
282       bound.conf  that  enable  unbound-control,  and  it  runs  unbound-con‐
283       trol-setup  to  generate the keys for unbound-control.  It tests if un‐
284       bound  has  a  trust  anchor,  if  not  it  enables  the  root.key   as
285       auto-trust-anchor-file  and  runs  unbound-anchor(8)  to initialize the
286       key.  It picks up the domain and search from resolv.conf and configures
287       the dnssec-trigger.conf to use that.
288
289       Note  the  tool trusts the domain and search path at install time.  You
290       should review them or perform configuration manually.
291
292       With -u it removes the options it enabled in unbound.conf(5).
293

FILES

295       /etc/dnssec-trigger/dnssec-trigger.conf
296              The default configuration file.
297
298       /etc/dnssec-trigger
299              Directory with keys used for SSL connections to dnssec-triggerd.
300
301       /run/dnssec-triggerd.pid
302              Default pidfile with the pid of the running dnssec-triggerd.
303

SEE ALSO

305       unbound(8), unbound-control(8), unbound.conf(5), resolv.conf(5).
306

AUTHORS

308       This program was developed by Wouter Wijngaards at NLnet Labs.
309
310
311
312NLnet Labs                        2018-06-25                 dnssec-trigger(8)
Impressum