The tests when assigning DNS name servers has been extended so that if no working forwarder can be found, we will test if the local recursor mode is an option.
If not, we will configure unbound's validator module into permissive mode so that at least some DNS functionality is available.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org --- config/rootfiles/core/110/filelists/files | 1 + lfs/unbound | 1 + src/initscripts/init.d/unbound | 67 ++++++++++++++++++++-- ...ting-validator-permissive-mode-at-runtime.patch | 43 ++++++++++++++ 4 files changed, 107 insertions(+), 5 deletions(-) create mode 100644 src/patches/unbound-allow-setting-validator-permissive-mode-at-runtime.patch
diff --git a/config/rootfiles/core/110/filelists/files b/config/rootfiles/core/110/filelists/files index 670b9ae..f4ce989 100644 --- a/config/rootfiles/core/110/filelists/files +++ b/config/rootfiles/core/110/filelists/files @@ -1,5 +1,6 @@ etc/system-release etc/issue +etc/rc.d/init.d/unbound srv/web/ipfire/cgi-bin/index.cgi srv/web/ipfire/cgi-bin/vpnmain.cgi usr/lib/libssp.so.0 diff --git a/lfs/unbound b/lfs/unbound index 2b7745c..f361f24 100644 --- a/lfs/unbound +++ b/lfs/unbound @@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/unbound-allow-setting-validator-permissive-mode-at-runtime.patch cd $(DIR_APP) && \ ./configure \ --prefix=/usr \ diff --git a/src/initscripts/init.d/unbound b/src/initscripts/init.d/unbound index 8802781..bbf9c00 100644 --- a/src/initscripts/init.d/unbound +++ b/src/initscripts/init.d/unbound @@ -114,17 +114,38 @@ update_forwarders() { echo_warning fi
- if [ -n "${broken_forwarders}" -a -z "${forwarders}" ]; then - boot_mesg "Falling back to recursor mode" ${WARNING} - echo_warning - - elif [ -n "${forwarders}" ]; then + if [ -n "${forwarders}" ]; then boot_mesg "Configuring upstream name server(s): ${forwarders:1}" ${INFO} echo_ok
+ # Make sure DNSSEC is activated + enable_dnssec + echo "${forwarders}" > /var/ipfire/red/dns unbound-control -q forward ${forwarders} return 0 + + # In case we have found no working forwarders + else + # Test if the recursor mode is available + if can_resolve_root +bufsize=${new_edns_buffer_size}; then + # Make sure DNSSEC is activated + enable_dnssec + + boot_mesg "Falling back to recursor mode" ${WARNING} + echo_warning + + # If not, we set DNSSEC in permissive mode and allow using all recursors + elif [ -n "${broken_forwarders}" ]; then + disable_dnssec + + boot_mesg "DNSSEC has been set to permissive mode" ${FAILURE} + echo_failure + + echo "${broken_forwarders}" > /var/ipfire/red/dns + unbound-control -q forward ${broken_forwarders} + return 0 + fi fi fi
@@ -370,6 +391,42 @@ ns_determine_edns_buffer_size() { return 1 }
+get_root_nameservers() { + while read -r hostname ttl record address; do + # Searching for A records + [ "${record}" = "A" ] || continue + + echo "${address}" + done < /etc/unbound/root.hints +} + +can_resolve_root() { + local ns + for ns in $(get_root_nameservers); do + if dig @${ns} +dnssec SOA . $@ >/dev/null; then + return 0 + fi + done + + # none of the servers was reachable + return 1 +} + +enable_dnssec() { + local status=$(unbound-control get_option val-permissive-mode) + + # Don't do anything if DNSSEC is already activated + [ "${status}" = "no" ] && return 0 + + # Activate DNSSEC and flush cache with any stale and unvalidated data + unbound-control -q set_option val-permissive-mode: no + unbound-control -q flush_zone . +} + +disable_dnssec() { + unbound-control -q set_option val-permissive-mode: yes +} + case "$1" in start) # Print a nicer messagen when unbound is already running diff --git a/src/patches/unbound-allow-setting-validator-permissive-mode-at-runtime.patch b/src/patches/unbound-allow-setting-validator-permissive-mode-at-runtime.patch new file mode 100644 index 0000000..f476d08 --- /dev/null +++ b/src/patches/unbound-allow-setting-validator-permissive-mode-at-runtime.patch @@ -0,0 +1,43 @@ +diff --git a/validator/validator.c b/validator/validator.c +index 676dcdf..7c19f3d 100644 +--- a/validator/validator.c ++++ b/validator/validator.c +@@ -113,7 +113,7 @@ val_apply_cfg(struct module_env* env, struct val_env* val_env, + int c; + val_env->bogus_ttl = (uint32_t)cfg->bogus_ttl; + val_env->clean_additional = cfg->val_clean_additional; +- val_env->permissive_mode = cfg->val_permissive_mode; ++ val_env->permissive_mode = &cfg->val_permissive_mode; + if(!env->anchors) + env->anchors = anchors_create(); + if(!env->anchors) { +@@ -170,7 +170,6 @@ val_init(struct module_env* env, int id) + } + env->modinfo[id] = (void*)val_env; + env->need_to_validate = 1; +- val_env->permissive_mode = 0; + lock_basic_init(&val_env->bogus_lock); + lock_protect(&val_env->bogus_lock, &val_env->num_rrset_bogus, + sizeof(val_env->num_rrset_bogus)); +@@ -2084,7 +2083,7 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, + } + } + /* If we are in permissive mode, bogus gets indeterminate */ +- if(ve->permissive_mode) ++ if(*ve->permissive_mode) + vq->orig_msg->rep->security = sec_status_indeterminate; + } + +diff --git a/validator/validator.h b/validator/validator.h +index 23d3072..f8464b8 100644 +--- a/validator/validator.h ++++ b/validator/validator.h +@@ -104,7 +104,7 @@ struct val_env { + * This allows an operator to run validation 'shadow' without + * hurting responses to clients. + */ +- int permissive_mode; ++ int* permissive_mode; + + /** + * Number of entries in the NSEC3 maximum iteration count table.
Hello,
so I wanted to highlight this patch a little which has been merged into next.
It will change fallback behaviour of DNS again which before switched to recursor mode if no usable forwarder could be found. Now IPFire will test if any of the root servers is available and if so, fall back to recursor mode. If not, it will change DNSSEC into permissive mode and will use all given forwarders.
The idea behind this is to always be able to provide at least *some* DNS, although DNSSEC will be practically deactivated.
It is still missing that we show a big warning where necessary, but at least for some people who were forced by their providers to use their own name servers which do not support DNSSEC at all.
So, for the people who have been affected by this issue I can only recommend to test this and give us feedback within about one week. I would like to close the merge window for the next core update around then.
Best, -Michael
On Wed, 2017-03-01 at 16:11 +0000, Michael Tremer wrote:
The tests when assigning DNS name servers has been extended so that if no working forwarder can be found, we will test if the local recursor mode is an option.
If not, we will configure unbound's validator module into permissive mode so that at least some DNS functionality is available.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
config/rootfiles/core/110/filelists/files | 1 + lfs/unbound | 1 + src/initscripts/init.d/unbound | 67 ++++++++++++++++++++-- ...ting-validator-permissive-mode-at-runtime.patch | 43 ++++++++++++++ 4 files changed, 107 insertions(+), 5 deletions(-) create mode 100644 src/patches/unbound-allow-setting-validator- permissive-mode-at-runtime.patch
diff --git a/config/rootfiles/core/110/filelists/files b/config/rootfiles/core/110/filelists/files index 670b9ae..f4ce989 100644 --- a/config/rootfiles/core/110/filelists/files +++ b/config/rootfiles/core/110/filelists/files @@ -1,5 +1,6 @@ etc/system-release etc/issue +etc/rc.d/init.d/unbound srv/web/ipfire/cgi-bin/index.cgi srv/web/ipfire/cgi-bin/vpnmain.cgi usr/lib/libssp.so.0 diff --git a/lfs/unbound b/lfs/unbound index 2b7745c..f361f24 100644 --- a/lfs/unbound +++ b/lfs/unbound @@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
- cd $(DIR_APP) && patch -Np1 <
$(DIR_SRC)/src/patches/unbound-allow-setting-validator-permissive- mode-at-runtime.patch cd $(DIR_APP) && \ ./configure \ --prefix=/usr \ diff --git a/src/initscripts/init.d/unbound b/src/initscripts/init.d/unbound index 8802781..bbf9c00 100644 --- a/src/initscripts/init.d/unbound +++ b/src/initscripts/init.d/unbound @@ -114,17 +114,38 @@ update_forwarders() { echo_warning fi
if [ -n "${broken_forwarders}" -a -z "${forwarders}"
]; then
boot_mesg "Falling back to recursor mode"
${WARNING}
echo_warning
elif [ -n "${forwarders}" ]; then
if [ -n "${forwarders}" ]; then
boot_mesg "Configuring upstream name server(s): ${forwarders:1}" ${INFO} echo_ok
# Make sure DNSSEC is activated
enable_dnssec
echo "${forwarders}" > /var/ipfire/red/dns unbound-control -q forward ${forwarders} return 0
# In case we have found no working forwarders
else
# Test if the recursor mode is available
if can_resolve_root
+bufsize=${new_edns_buffer_size}; then
# Make sure DNSSEC is activated
enable_dnssec
boot_mesg "Falling back to recursor
mode" ${WARNING}
echo_warning
# If not, we set DNSSEC in permissive mode
and allow using all recursors
elif [ -n "${broken_forwarders}" ]; then
disable_dnssec
boot_mesg "DNSSEC has been set to
permissive mode" ${FAILURE}
echo_failure
echo "${broken_forwarders}" >
/var/ipfire/red/dns
unbound-control -q forward
${broken_forwarders}
return 0
fi
fi fi @@ -370,6 +391,42 @@ ns_determine_edns_buffer_size() { return 1 } +get_root_nameservers() {
- while read -r hostname ttl record address; do
# Searching for A records
[ "${record}" = "A" ] || continue
echo "${address}"
- done < /etc/unbound/root.hints
+}
+can_resolve_root() {
- local ns
- for ns in $(get_root_nameservers); do
if dig @${ns} +dnssec SOA . $@ >/dev/null; then
return 0
fi
- done
- # none of the servers was reachable
- return 1
+}
+enable_dnssec() {
- local status=$(unbound-control get_option val-permissive-
mode)
- # Don't do anything if DNSSEC is already activated
- [ "${status}" = "no" ] && return 0
- # Activate DNSSEC and flush cache with any stale and
unvalidated data
- unbound-control -q set_option val-permissive-mode: no
- unbound-control -q flush_zone .
+}
+disable_dnssec() {
- unbound-control -q set_option val-permissive-mode: yes
+}
case "$1" in start) # Print a nicer messagen when unbound is already running diff --git a/src/patches/unbound-allow-setting-validator-permissive- mode-at-runtime.patch b/src/patches/unbound-allow-setting-validator- permissive-mode-at-runtime.patch new file mode 100644 index 0000000..f476d08 --- /dev/null +++ b/src/patches/unbound-allow-setting-validator-permissive-mode-at- runtime.patch @@ -0,0 +1,43 @@ +diff --git a/validator/validator.c b/validator/validator.c +index 676dcdf..7c19f3d 100644 +--- a/validator/validator.c ++++ b/validator/validator.c +@@ -113,7 +113,7 @@ val_apply_cfg(struct module_env* env, struct val_env* val_env, + int c; + val_env->bogus_ttl = (uint32_t)cfg->bogus_ttl; + val_env->clean_additional = cfg->val_clean_additional; +- val_env->permissive_mode = cfg->val_permissive_mode; ++ val_env->permissive_mode = &cfg->val_permissive_mode; + if(!env->anchors) + env->anchors = anchors_create(); + if(!env->anchors) { +@@ -170,7 +170,6 @@ val_init(struct module_env* env, int id) + } + env->modinfo[id] = (void*)val_env; + env->need_to_validate = 1; +- val_env->permissive_mode = 0; + lock_basic_init(&val_env->bogus_lock); + lock_protect(&val_env->bogus_lock, &val_env-
num_rrset_bogus,
+ sizeof(val_env->num_rrset_bogus)); +@@ -2084,7 +2083,7 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, + } + } + /* If we are in permissive mode, bogus gets indeterminate */ +- if(ve->permissive_mode) ++ if(*ve->permissive_mode) + vq->orig_msg->rep->security = sec_status_indeterminate; + } + +diff --git a/validator/validator.h b/validator/validator.h +index 23d3072..f8464b8 100644 +--- a/validator/validator.h ++++ b/validator/validator.h +@@ -104,7 +104,7 @@ struct val_env { + * This allows an operator to run validation 'shadow' without + * hurting responses to clients. + */ +- int permissive_mode; ++ int* permissive_mode; + + /** + * Number of entries in the NSEC3 maximum iteration count table.
On Wed, 2017-03-01 at 16:17 +0000, Michael Tremer wrote:
Hello,
so I wanted to highlight this patch a little which has been merged into next.
It will change fallback behaviour of DNS again which before switched to recursor mode if no usable forwarder could be found. Now IPFire will test if any of the root servers is available and if so, fall back to recursor mode. If not, it will change DNSSEC into permissive mode and will use all given forwarders.
The idea behind this is to always be able to provide at least *some* DNS, although DNSSEC will be practically deactivated.
It is still missing that we show a big warning where necessary, but at least for some people who were forced by their providers to use their own name servers which do not support DNSSEC at all.
So, for the people who have been affected by this issue I can only recommend to test this and give us feedback within about one week. I would like to close the merge window for the next core update around then.
Best, -Michael
On Wed, 2017-03-01 at 16:11 +0000, Michael Tremer wrote:
The tests when assigning DNS name servers has been extended so that if no working forwarder can be found, we will test if the local recursor mode is an option.
If not, we will configure unbound's validator module into permissive mode so that at least some DNS functionality is available.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
config/rootfiles/core/110/filelists/files | 1 + lfs/unbound | 1 + src/initscripts/init.d/unbound | 67 ++++++++++++++++++++-- ...ting-validator-permissive-mode-at-runtime.patch | 43 ++++++++++++++ 4 files changed, 107 insertions(+), 5 deletions(-) create mode 100644 src/patches/unbound-allow-setting-validator- permissive-mode-at-runtime.patch
diff --git a/config/rootfiles/core/110/filelists/files b/config/rootfiles/core/110/filelists/files index 670b9ae..f4ce989 100644 --- a/config/rootfiles/core/110/filelists/files +++ b/config/rootfiles/core/110/filelists/files @@ -1,5 +1,6 @@ etc/system-release etc/issue +etc/rc.d/init.d/unbound srv/web/ipfire/cgi-bin/index.cgi srv/web/ipfire/cgi-bin/vpnmain.cgi usr/lib/libssp.so.0 diff --git a/lfs/unbound b/lfs/unbound index 2b7745c..f361f24 100644 --- a/lfs/unbound +++ b/lfs/unbound @@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
- cd $(DIR_APP) && patch -Np1 <
$(DIR_SRC)/src/patches/unbound-allow-setting-validator-permissive- mode-at-runtime.patch cd $(DIR_APP) && \ ./configure \ --prefix=/usr \ diff --git a/src/initscripts/init.d/unbound b/src/initscripts/init.d/unbound index 8802781..bbf9c00 100644 --- a/src/initscripts/init.d/unbound +++ b/src/initscripts/init.d/unbound @@ -114,17 +114,38 @@ update_forwarders() { echo_warning fi
if [ -n "${broken_forwarders}" -a -z
"${forwarders}" ]; then
boot_mesg "Falling back to recursor mode"
${WARNING}
echo_warning
elif [ -n "${forwarders}" ]; then
if [ -n "${forwarders}" ]; then
boot_mesg "Configuring upstream name server(s): ${forwarders:1}" ${INFO} echo_ok
# Make sure DNSSEC is activated
enable_dnssec
echo "${forwarders}" > /var/ipfire/red/dns unbound-control -q forward ${forwarders} return 0
# In case we have found no working forwarders
else
# Test if the recursor mode is available
if can_resolve_root
+bufsize=${new_edns_buffer_size}; then
# Make sure DNSSEC is activated
enable_dnssec
boot_mesg "Falling back to
recursor mode" ${WARNING}
echo_warning
# If not, we set DNSSEC in permissive mode
and allow using all recursors
elif [ -n "${broken_forwarders}" ]; then
disable_dnssec
boot_mesg "DNSSEC has been set to
permissive mode" ${FAILURE}
echo_failure
echo "${broken_forwarders}" >
/var/ipfire/red/dns
unbound-control -q forward
${broken_forwarders}
return 0
fi
fi fi @@ -370,6 +391,42 @@ ns_determine_edns_buffer_size() { return 1 } +get_root_nameservers() {
- while read -r hostname ttl record address; do
# Searching for A records
[ "${record}" = "A" ] || continue
echo "${address}"
- done < /etc/unbound/root.hints
+}
+can_resolve_root() {
- local ns
- for ns in $(get_root_nameservers); do
if dig @${ns} +dnssec SOA . $@ >/dev/null; then
return 0
fi
- done
- # none of the servers was reachable
- return 1
+}
+enable_dnssec() {
- local status=$(unbound-control get_option val-permissive-
mode)
- # Don't do anything if DNSSEC is already activated
- [ "${status}" = "no" ] && return 0
- # Activate DNSSEC and flush cache with any stale and
unvalidated data
- unbound-control -q set_option val-permissive-mode: no
- unbound-control -q flush_zone .
+}
+disable_dnssec() {
- unbound-control -q set_option val-permissive-mode: yes
+}
case "$1" in start) # Print a nicer messagen when unbound is already running diff --git a/src/patches/unbound-allow-setting-validator- permissive- mode-at-runtime.patch b/src/patches/unbound-allow-setting- validator- permissive-mode-at-runtime.patch new file mode 100644 index 0000000..f476d08 --- /dev/null +++ b/src/patches/unbound-allow-setting-validator-permissive-mode- at- runtime.patch @@ -0,0 +1,43 @@ +diff --git a/validator/validator.c b/validator/validator.c +index 676dcdf..7c19f3d 100644 +--- a/validator/validator.c ++++ b/validator/validator.c +@@ -113,7 +113,7 @@ val_apply_cfg(struct module_env* env, struct val_env* val_env, + int c; + val_env->bogus_ttl = (uint32_t)cfg->bogus_ttl; + val_env->clean_additional = cfg->val_clean_additional; +- val_env->permissive_mode = cfg->val_permissive_mode; ++ val_env->permissive_mode = &cfg->val_permissive_mode; + if(!env->anchors) + env->anchors = anchors_create(); + if(!env->anchors) { +@@ -170,7 +170,6 @@ val_init(struct module_env* env, int id) + } + env->modinfo[id] = (void*)val_env; + env->need_to_validate = 1; +- val_env->permissive_mode = 0; + lock_basic_init(&val_env->bogus_lock); + lock_protect(&val_env->bogus_lock, &val_env-
num_rrset_bogus,
+ sizeof(val_env->num_rrset_bogus)); +@@ -2084,7 +2083,7 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, + } + } + /* If we are in permissive mode, bogus gets indeterminate */ +- if(ve->permissive_mode) ++ if(*ve->permissive_mode) + vq->orig_msg->rep->security = sec_status_indeterminate; + } + +diff --git a/validator/validator.h b/validator/validator.h +index 23d3072..f8464b8 100644 +--- a/validator/validator.h ++++ b/validator/validator.h +@@ -104,7 +104,7 @@ struct val_env { + * This allows an operator to run validation 'shadow' without + * hurting responses to clients. + */ +- int permissive_mode; ++ int* permissive_mode; + + /** + * Number of entries in the NSEC3 maximum iteration count table.
I have nightly commit c016773b9816ad9be4ffc8643c30457e87c094e3 available locally, and will beg my users for downtime to test.
Thank you, and best regards, Paul
On Wed, 2017-03-01 at 12:00 -0600, Paul Simmons wrote:
On Wed, 2017-03-01 at 16:17 +0000, Michael Tremer wrote:
Hello,
so I wanted to highlight this patch a little which has been merged into next.
It will change fallback behaviour of DNS again which before switched to recursor mode if no usable forwarder could be found. Now IPFire will test if any of the root servers is available and if so, fall back to recursor mode. If not, it will change DNSSEC into permissive mode and will use all given forwarders.
The idea behind this is to always be able to provide at least *some* DNS, although DNSSEC will be practically deactivated.
It is still missing that we show a big warning where necessary, but at least for some people who were forced by their providers to use their own name servers which do not support DNSSEC at all.
So, for the people who have been affected by this issue I can only recommend to test this and give us feedback within about one week. I would like to close the merge window for the next core update around then.
Best, -Michael
On Wed, 2017-03-01 at 16:11 +0000, Michael Tremer wrote:
The tests when assigning DNS name servers has been extended so that if no working forwarder can be found, we will test if the local recursor mode is an option.
If not, we will configure unbound's validator module into permissive mode so that at least some DNS functionality is available.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
config/rootfiles/core/110/filelists/files | 1 + lfs/unbound | 1 + src/initscripts/init.d/unbound | 67 ++++++++++++++++++++-- ...ting-validator-permissive-mode-at-runtime.patch | 43 ++++++++++++++ 4 files changed, 107 insertions(+), 5 deletions(-) create mode 100644 src/patches/unbound-allow-setting-validator- permissive-mode-at-runtime.patch
diff --git a/config/rootfiles/core/110/filelists/files b/config/rootfiles/core/110/filelists/files index 670b9ae..f4ce989 100644 --- a/config/rootfiles/core/110/filelists/files +++ b/config/rootfiles/core/110/filelists/files @@ -1,5 +1,6 @@ etc/system-release etc/issue +etc/rc.d/init.d/unbound srv/web/ipfire/cgi-bin/index.cgi srv/web/ipfire/cgi-bin/vpnmain.cgi usr/lib/libssp.so.0 diff --git a/lfs/unbound b/lfs/unbound index 2b7745c..f361f24 100644 --- a/lfs/unbound +++ b/lfs/unbound @@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
- cd $(DIR_APP) && patch -Np1 <
$(DIR_SRC)/src/patches/unbound-allow-setting-validator- permissive- mode-at-runtime.patch cd $(DIR_APP) && \ ./configure \ --prefix=/usr \ diff --git a/src/initscripts/init.d/unbound b/src/initscripts/init.d/unbound index 8802781..bbf9c00 100644 --- a/src/initscripts/init.d/unbound +++ b/src/initscripts/init.d/unbound @@ -114,17 +114,38 @@ update_forwarders() { echo_warning fi
if [ -n "${broken_forwarders}" -a -z
"${forwarders}" ]; then
boot_mesg "Falling back to recursor
mode" ${WARNING}
echo_warning
elif [ -n "${forwarders}" ]; then
if [ -n "${forwarders}" ]; then
boot_mesg "Configuring upstream name server(s): ${forwarders:1}" ${INFO} echo_ok
# Make sure DNSSEC is activated
enable_dnssec
echo "${forwarders}" > /var/ipfire/red/dns unbound-control -q forward ${forwarders} return 0
# In case we have found no working forwarders
else
# Test if the recursor mode is available
if can_resolve_root
+bufsize=${new_edns_buffer_size}; then
# Make sure DNSSEC is activated
enable_dnssec
boot_mesg "Falling back to
recursor mode" ${WARNING}
echo_warning
# If not, we set DNSSEC in permissive
mode and allow using all recursors
elif [ -n "${broken_forwarders}" ]; then
disable_dnssec
boot_mesg "DNSSEC has been set
to permissive mode" ${FAILURE}
echo_failure
echo "${broken_forwarders}" >
/var/ipfire/red/dns
unbound-control -q forward
${broken_forwarders}
return 0
fi
fi fi @@ -370,6 +391,42 @@ ns_determine_edns_buffer_size() { return 1 } +get_root_nameservers() {
- while read -r hostname ttl record address; do
# Searching for A records
[ "${record}" = "A" ] || continue
echo "${address}"
- done < /etc/unbound/root.hints
+}
+can_resolve_root() {
- local ns
- for ns in $(get_root_nameservers); do
if dig @${ns} +dnssec SOA . $@ >/dev/null; then
return 0
fi
- done
- # none of the servers was reachable
- return 1
+}
+enable_dnssec() {
- local status=$(unbound-control get_option val-
permissive- mode)
- # Don't do anything if DNSSEC is already activated
- [ "${status}" = "no" ] && return 0
- # Activate DNSSEC and flush cache with any stale and
unvalidated data
- unbound-control -q set_option val-permissive-mode: no
- unbound-control -q flush_zone .
+}
+disable_dnssec() {
- unbound-control -q set_option val-permissive-mode: yes
+}
case "$1" in start) # Print a nicer messagen when unbound is already running diff --git a/src/patches/unbound-allow-setting-validator- permissive- mode-at-runtime.patch b/src/patches/unbound-allow-setting- validator- permissive-mode-at-runtime.patch new file mode 100644 index 0000000..f476d08 --- /dev/null +++ b/src/patches/unbound-allow-setting-validator-permissive- mode- at- runtime.patch @@ -0,0 +1,43 @@ +diff --git a/validator/validator.c b/validator/validator.c +index 676dcdf..7c19f3d 100644 +--- a/validator/validator.c ++++ b/validator/validator.c +@@ -113,7 +113,7 @@ val_apply_cfg(struct module_env* env, struct val_env* val_env, + int c; + val_env->bogus_ttl = (uint32_t)cfg->bogus_ttl; + val_env->clean_additional = cfg->val_clean_additional; +- val_env->permissive_mode = cfg->val_permissive_mode; ++ val_env->permissive_mode = &cfg->val_permissive_mode; + if(!env->anchors) + env->anchors = anchors_create(); + if(!env->anchors) { +@@ -170,7 +170,6 @@ val_init(struct module_env* env, int id) + } + env->modinfo[id] = (void*)val_env; + env->need_to_validate = 1; +- val_env->permissive_mode = 0; + lock_basic_init(&val_env->bogus_lock); + lock_protect(&val_env->bogus_lock, &val_env-
num_rrset_bogus,
+ sizeof(val_env->num_rrset_bogus)); +@@ -2084,7 +2083,7 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, + } + } + /* If we are in permissive mode, bogus gets indeterminate */ +- if(ve->permissive_mode) ++ if(*ve->permissive_mode) + vq->orig_msg->rep->security = sec_status_indeterminate; + } + +diff --git a/validator/validator.h b/validator/validator.h +index 23d3072..f8464b8 100644 +--- a/validator/validator.h ++++ b/validator/validator.h +@@ -104,7 +104,7 @@ struct val_env { + * This allows an operator to run validation 'shadow' without + * hurting responses to clients. + */ +- int permissive_mode; ++ int* permissive_mode; + + /** + * Number of entries in the NSEC3 maximum iteration count table.
I have nightly commit c016773b9816ad9be4ffc8643c30457e87c094e3 available locally, and will beg my users for downtime to test.
Thank you, and best regards, Paul
Bad juju - build c016773b couldn't resolve any hosts (other than those in "localdomain").
Provider is "hughes.net" and is the only ISP available (no hardlines or other LOS/NLOS WISPs available).
Tried assigning DNS servers 74.113.60.185 and 156.154.70.1 - no change.
Paul
Hi,
can you confirm if unbound is running?
What is the output of /etc/init.d/unbound restart?
-Michael
On Fri, 2017-03-03 at 14:54 -0600, Paul Simmons wrote:
On Wed, 2017-03-01 at 12:00 -0600, Paul Simmons wrote:
On Wed, 2017-03-01 at 16:17 +0000, Michael Tremer wrote:
Hello,
so I wanted to highlight this patch a little which has been merged into next.
It will change fallback behaviour of DNS again which before switched to recursor mode if no usable forwarder could be found. Now IPFire will test if any of the root servers is available and if so, fall back to recursor mode. If not, it will change DNSSEC into permissive mode and will use all given forwarders.
The idea behind this is to always be able to provide at least *some* DNS, although DNSSEC will be practically deactivated.
It is still missing that we show a big warning where necessary, but at least for some people who were forced by their providers to use their own name servers which do not support DNSSEC at all.
So, for the people who have been affected by this issue I can only recommend to test this and give us feedback within about one week. I would like to close the merge window for the next core update around then.
Best, -Michael
On Wed, 2017-03-01 at 16:11 +0000, Michael Tremer wrote:
The tests when assigning DNS name servers has been extended so that if no working forwarder can be found, we will test if the local recursor mode is an option.
If not, we will configure unbound's validator module into permissive mode so that at least some DNS functionality is available.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
config/rootfiles/core/110/filelists/files | 1 + lfs/unbound | 1 + src/initscripts/init.d/unbound | 67 ++++++++++++++++++++-- ...ting-validator-permissive-mode-at-runtime.patch | 43 ++++++++++++++ 4 files changed, 107 insertions(+), 5 deletions(-) create mode 100644 src/patches/unbound-allow-setting- validator- permissive-mode-at-runtime.patch
diff --git a/config/rootfiles/core/110/filelists/files b/config/rootfiles/core/110/filelists/files index 670b9ae..f4ce989 100644 --- a/config/rootfiles/core/110/filelists/files +++ b/config/rootfiles/core/110/filelists/files @@ -1,5 +1,6 @@ etc/system-release etc/issue +etc/rc.d/init.d/unbound srv/web/ipfire/cgi-bin/index.cgi srv/web/ipfire/cgi-bin/vpnmain.cgi usr/lib/libssp.so.0 diff --git a/lfs/unbound b/lfs/unbound index 2b7745c..f361f24 100644 --- a/lfs/unbound +++ b/lfs/unbound @@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
- cd $(DIR_APP) && patch -Np1 <
$(DIR_SRC)/src/patches/unbound-allow-setting-validator- permissive- mode-at-runtime.patch cd $(DIR_APP) && \ ./configure \ --prefix=/usr \ diff --git a/src/initscripts/init.d/unbound b/src/initscripts/init.d/unbound index 8802781..bbf9c00 100644 --- a/src/initscripts/init.d/unbound +++ b/src/initscripts/init.d/unbound @@ -114,17 +114,38 @@ update_forwarders() { echo_warning fi
if [ -n "${broken_forwarders}" -a -z
"${forwarders}" ]; then
boot_mesg "Falling back to recursor
mode" ${WARNING}
echo_warning
elif [ -n "${forwarders}" ]; then
if [ -n "${forwarders}" ]; then
boot_mesg "Configuring upstream name server(s): ${forwarders:1}" ${INFO} echo_ok
# Make sure DNSSEC is activated
enable_dnssec
echo "${forwarders}" > /var/ipfire/red/dns unbound-control -q forward ${forwarders} return 0
# In case we have found no working forwarders
else
# Test if the recursor mode is
available
if can_resolve_root
+bufsize=${new_edns_buffer_size}; then
# Make sure DNSSEC is
activated
enable_dnssec
boot_mesg "Falling back to
recursor mode" ${WARNING}
echo_warning
# If not, we set DNSSEC in permissive
mode and allow using all recursors
elif [ -n "${broken_forwarders}" ];
then
disable_dnssec
boot_mesg "DNSSEC has been set
to permissive mode" ${FAILURE}
echo_failure
echo "${broken_forwarders}" >
/var/ipfire/red/dns
unbound-control -q forward
${broken_forwarders}
return 0
fi
fi fi @@ -370,6 +391,42 @@ ns_determine_edns_buffer_size() { return 1 } +get_root_nameservers() {
- while read -r hostname ttl record address; do
# Searching for A records
[ "${record}" = "A" ] || continue
echo "${address}"
- done < /etc/unbound/root.hints
+}
+can_resolve_root() {
- local ns
- for ns in $(get_root_nameservers); do
if dig @${ns} +dnssec SOA . $@ >/dev/null;
then
return 0
fi
- done
- # none of the servers was reachable
- return 1
+}
+enable_dnssec() {
- local status=$(unbound-control get_option val-
permissive- mode)
- # Don't do anything if DNSSEC is already activated
- [ "${status}" = "no" ] && return 0
- # Activate DNSSEC and flush cache with any stale and
unvalidated data
- unbound-control -q set_option val-permissive-mode: no
- unbound-control -q flush_zone .
+}
+disable_dnssec() {
- unbound-control -q set_option val-permissive-mode: yes
+}
case "$1" in start) # Print a nicer messagen when unbound is already running diff --git a/src/patches/unbound-allow-setting-validator- permissive- mode-at-runtime.patch b/src/patches/unbound-allow-setting- validator- permissive-mode-at-runtime.patch new file mode 100644 index 0000000..f476d08 --- /dev/null +++ b/src/patches/unbound-allow-setting-validator-permissive- mode- at- runtime.patch @@ -0,0 +1,43 @@ +diff --git a/validator/validator.c b/validator/validator.c +index 676dcdf..7c19f3d 100644 +--- a/validator/validator.c ++++ b/validator/validator.c +@@ -113,7 +113,7 @@ val_apply_cfg(struct module_env* env, struct val_env* val_env, + int c; + val_env->bogus_ttl = (uint32_t)cfg->bogus_ttl; + val_env->clean_additional = cfg-
val_clean_additional;
+- val_env->permissive_mode = cfg->val_permissive_mode; ++ val_env->permissive_mode = &cfg->val_permissive_mode; + if(!env->anchors) + env->anchors = anchors_create(); + if(!env->anchors) { +@@ -170,7 +170,6 @@ val_init(struct module_env* env, int id) + } + env->modinfo[id] = (void*)val_env; + env->need_to_validate = 1; +- val_env->permissive_mode = 0; + lock_basic_init(&val_env->bogus_lock); + lock_protect(&val_env->bogus_lock, &val_env-
num_rrset_bogus,
+ sizeof(val_env->num_rrset_bogus)); +@@ -2084,7 +2083,7 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, + } + } + /* If we are in permissive mode, bogus gets indeterminate */ +- if(ve->permissive_mode) ++ if(*ve->permissive_mode) + vq->orig_msg->rep->security = sec_status_indeterminate; + } + +diff --git a/validator/validator.h b/validator/validator.h +index 23d3072..f8464b8 100644 +--- a/validator/validator.h ++++ b/validator/validator.h +@@ -104,7 +104,7 @@ struct val_env { + * This allows an operator to run validation 'shadow' without + * hurting responses to clients. + */ +- int permissive_mode; ++ int* permissive_mode; + + /** + * Number of entries in the NSEC3 maximum iteration count table.
I have nightly commit c016773b9816ad9be4ffc8643c30457e87c094e3 available locally, and will beg my users for downtime to test.
Thank you, and best regards, Paul
Bad juju - build c016773b couldn't resolve any hosts (other than those in "localdomain").
Provider is "hughes.net" and is the only ISP available (no hardlines or other LOS/NLOS WISPs available).
Tried assigning DNS servers 74.113.60.185 and 156.154.70.1 - no change.
Paul
On Sun, 2017-03-05 at 11:42 +0000, Michael Tremer wrote:
Hi,
can you confirm if unbound is running?
What is the output of /etc/init.d/unbound restart?
-Michael
----<% snip %>----
I have nightly commit c016773b9816ad9be4ffc8643c30457e87c094e3 available locally, and will beg my users for downtime to test.
Thank you, and best regards, Paul
Bad juju - build c016773b couldn't resolve any hosts (other than those in "localdomain").
Provider is "hughes.net" and is the only ISP available (no hardlines or other LOS/NLOS WISPs available).
Tried assigning DNS servers 74.113.60.185 and 156.154.70.1 - no change.
Paul
Sorry for the lllooonnnggg delay - had to get a testing time window.
Unbound was indeed running - verified with "/etc/init.d/unbound status"
Command and output from "restart":
# /etc/init.d/unbound restart Stopping Unbound DNS Proxy... [ OK ] Starting Unbound DNS Proxy... [ OK ] Ignoring broken upstream name server(s): 74.113.60.185 156.154.70.1 [ WARN ] Falling back to recursor mode [ WARN ]
Thank you, Paul
Hi,
On Mon, 2017-03-06 at 12:18 -0600, Paul Simmons wrote:
On Sun, 2017-03-05 at 11:42 +0000, Michael Tremer wrote:
Hi,
can you confirm if unbound is running?
What is the output of /etc/init.d/unbound restart?
-Michael
----<% snip %>----
I have nightly commit c016773b9816ad9be4ffc8643c30457e87c094e3 available locally, and will beg my users for downtime to test.
Thank you, and best regards, Paul
Bad juju - build c016773b couldn't resolve any hosts (other than those in "localdomain").
Provider is "hughes.net" and is the only ISP available (no hardlines or other LOS/NLOS WISPs available).
Tried assigning DNS servers 74.113.60.185 and 156.154.70.1 - no change.
Paul
Sorry for the lllooonnnggg delay - had to get a testing time window.
Unbound was indeed running - verified with "/etc/init.d/unbound status"
Command and output from "restart":
# /etc/init.d/unbound restart Stopping Unbound DNS Proxy... [ OK ] Starting Unbound DNS Proxy... [ OK ] Ignoring broken upstream name server(s): 74.113.60.185 156.154.70.1 [ WARN ] Falling back to recursor mode [ WARN ]
So, can you remind me what your provider does again? Is any access to other name servers forbidden? If so the updated script should have detected that and should not have activated the recursor mode.
Could you manually execute the following commands from the console of IPFire for me?
dig @198.41.0.4 +dnssec SOA .
The dot at the end is important. What is the output of it?
Best, -Michael
Thank you, Paul
On Mon, 2017-03-06 at 21:00 +0000, Michael Tremer wrote:
Hi,
On Mon, 2017-03-06 at 12:18 -0600, Paul Simmons wrote:
On Sun, 2017-03-05 at 11:42 +0000, Michael Tremer wrote:
Hi,
can you confirm if unbound is running?
What is the output of /etc/init.d/unbound restart?
-Michael
----<% snip %>----
I have nightly commit c016773b9816ad9be4ffc8643c30457e87c094e3 available locally, and will beg my users for downtime to test.
Thank you, and best regards, Paul
Bad juju - build c016773b couldn't resolve any hosts (other than those in "localdomain").
Provider is "hughes.net" and is the only ISP available (no hardlines or other LOS/NLOS WISPs available).
Tried assigning DNS servers 74.113.60.185 and 156.154.70.1 - no change.
Paul
Sorry for the lllooonnnggg delay - had to get a testing time window.
Unbound was indeed running - verified with "/etc/init.d/unbound status"
Command and output from "restart":
# /etc/init.d/unbound restart Stopping Unbound DNS Proxy... [ OK ] Starting Unbound DNS Proxy... [ OK ] Ignoring broken upstream name server(s): 74.113.60.185 156.154.70.1 [ WARN ] Falling back to recursor mode [ WARN ]
So, can you remind me what your provider does again? Is any access to other name servers forbidden? If so the updated script should have detected that and should not have activated the recursor mode.
Could you manually execute the following commands from the console of IPFire for me?
dig @198.41.0.4 +dnssec SOA .
The dot at the end is important. What is the output of it?
Best, -Michael
Thank you, Paul
# dig @198.41.0.4 +dnssec SOA .
; <<>> DiG 9.11.0-P3 <<>> @198.41.0.4 +dnssec SOA . ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 811 ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 14, ADDITIONAL: 27 ;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 4096 ;; QUESTION SECTION: ;. IN SOA
;; ANSWER SECTION: . 86400 IN SOA a.root- servers.net. nstld.verisign-grs.com. 2017030601 1800 900 604800 86400 . 86400 IN RRSIG SOA 8 0 86400 20170319170000 20170306160000 61045 . X2xWv3z0ZmFxXkF9ybMgxMv6dcZ+SmnG3XHcNtAavuPNPLW3cVBwolDP lOU5/tfOaKwbu7HENFWysaekMpb6O7ycg+kryuCP7z6Q4WyG0O2160l1 DDG0UbBW5yidfcghq1r6sdz30RI5cSBGcAOmlktnPkjs9wv9/S/ZPyrC qMPJR9A60R52NcWEONS3DiyGxR66KA4S4grJnDgcI6pcytJGXm/b5WRO +v51tnLT0UVbgXvV03Itn/3MR72muzKXWzzj5LFJST5iqWCgAHJryG3T vNKEYLQ76nwl6B3YVJDjC1InmpIujwXBbxMKpyL1Sh0RLdlHq2TtZS8O qk4V0Q==
;; AUTHORITY SECTION: . 518400 IN NS e.root- servers.net. . 518400 IN NS h.root- servers.net. . 518400 IN NS l.root- servers.net. . 518400 IN NS i.root- servers.net. . 518400 IN NS a.root- servers.net. . 518400 IN NS d.root- servers.net. . 518400 IN NS c.root- servers.net. . 518400 IN NS b.root- servers.net. . 518400 IN NS j.root- servers.net. . 518400 IN NS k.root- servers.net. . 518400 IN NS g.root- servers.net. . 518400 IN NS m.root- servers.net. . 518400 IN NS f.root- servers.net. . 518400 IN RRSIG NS 8 0 518400 20170319170000 20170306160000 61045 . iQVPY67dNDj6w14dY1tDFgwRFqhEXVVLmY8q1woIX1eU7t1k/XaPi+tX 3+PDCFQlrQmWSWUtLPaA6pmrACB6EL2YvWzAiLVyocGCBpUpnbUCNAwm nD4SvBZb0ET2jWbSiAzo8iy+1+Hr84I8RXtbcrcpF5Y/J5Oataxt5z9o dHGQSKru0eYEbwfszq0L5L8KECk6skm7iQ0RAIspdTfjDsIwtvoAhEGV B8qjFQP5Bkcn38b35eWHneCmc3cgG0J+pK/eX/YHpqClcINGh3eavBlC 1KpUkDDMAwCvo+X/MhDE2Ol/VR00/M/YCzXbEv97IWenM1Xi4ArX9F1C xBc0gA==
;; ADDITIONAL SECTION: e.root-servers.net. 518400 IN A 192.203.230 .10 e.root-servers.net. 518400 IN AAAA 2001:500 :a8::e h.root-servers.net. 518400 IN A 198.97.190. 53 h.root-servers.net. 518400 IN AAAA 2001:500 :1::53 l.root-servers.net. 518400 IN A 199.7.83.42 l.root-servers.net. 518400 IN AAAA 2001:500 :9f::42 i.root-servers.net. 518400 IN A 192.36.148. 17 i.root-servers.net. 518400 IN AAAA 2001:7fe ::53 a.root-servers.net. 518400 IN A 198.41.0.4 a.root-servers.net. 518400 IN AAAA 2001:503 :ba3e::2:30 d.root-servers.net. 518400 IN A 199.7.91.13 d.root-servers.net. 518400 IN AAAA 2001:500 :2d::d c.root-servers.net. 518400 IN A 192.33.4.12 c.root-servers.net. 518400 IN AAAA 2001:500 :2::c b.root-servers.net. 518400 IN A 192.228.79. 201 b.root-servers.net. 518400 IN AAAA 2001:500 :84::b j.root-servers.net. 518400 IN A 192.58.128. 30 j.root-servers.net. 518400 IN AAAA 2001:503 :c27::2:30 k.root-servers.net. 518400 IN A 193.0.14.12 9 k.root-servers.net. 518400 IN AAAA 2001:7fd ::1 g.root-servers.net. 518400 IN A 192.112.36. 4 g.root-servers.net. 518400 IN AAAA 2001:500 :12::d0d m.root-servers.net. 518400 IN A 202.12.27.3 3 m.root-servers.net. 518400 IN AAAA 2001:dc3 ::35 f.root-servers.net. 518400 IN A 192.5.5.241 f.root-servers.net. 518400 IN AAAA 2001:500 :2f::f
;; Query time: 836 msec ;; SERVER: 198.41.0.4#53(198.41.0.4) ;; WHEN: Mon Mar 06 15:40:58 CST 2017 ;; MSG SIZE rcvd: 1440 #
I suspect the ISP mangles DNS requests directed outside their net.
Thank you, Paul
Hi,
On Mon, 2017-03-06 at 15:47 -0600, Paul Simmons wrote:
On Mon, 2017-03-06 at 21:00 +0000, Michael Tremer wrote:
Hi,
On Mon, 2017-03-06 at 12:18 -0600, Paul Simmons wrote:
On Sun, 2017-03-05 at 11:42 +0000, Michael Tremer wrote:
Hi,
can you confirm if unbound is running?
What is the output of /etc/init.d/unbound restart?
-Michael
> > > ----<% snip %>----
I have nightly commit c016773b9816ad9be4ffc8643c30457e87c094e3 available locally, and will beg my users for downtime to test.
Thank you, and best regards, Paul
Bad juju - build c016773b couldn't resolve any hosts (other than those in "localdomain").
Provider is "hughes.net" and is the only ISP available (no hardlines or other LOS/NLOS WISPs available).
Tried assigning DNS servers 74.113.60.185 and 156.154.70.1 - no change.
Paul
Sorry for the lllooonnnggg delay - had to get a testing time window.
Unbound was indeed running - verified with "/etc/init.d/unbound status"
Command and output from "restart":
# /etc/init.d/unbound restart Stopping Unbound DNS Proxy... [ OK ] Starting Unbound DNS Proxy... [ OK ] Ignoring broken upstream name server(s): 74.113.60.185 156.154.70.1 [ WARN ] Falling back to recursor mode [ WARN ]
So, can you remind me what your provider does again? Is any access to other name servers forbidden? If so the updated script should have detected that and should not have activated the recursor mode.
Could you manually execute the following commands from the console of IPFire for me?
dig @198.41.0.4 +dnssec SOA .
The dot at the end is important. What is the output of it?
Best, -Michael
Thank you, Paul
# dig @198.41.0.4 +dnssec SOA .
; <<>> DiG 9.11.0-P3 <<>> @198.41.0.4 +dnssec SOA . ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 811 ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 14, ADDITIONAL: 27 ;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 4096 ;; QUESTION SECTION: ;. IN SOA
;; ANSWER SECTION: . 86400 IN SOA a.root- servers.net. nstld.verisign-grs.com. 2017030601 1800 900 604800 86400 . 86400 IN RRSIG SOA 8 0 86400 20170319170000 20170306160000 61045 . X2xWv3z0ZmFxXkF9ybMgxMv6dcZ+SmnG3XHcNtAavuPNPLW3cVBwolDP lOU5/tfOaKwbu7HENFWysaekMpb6O7ycg+kryuCP7z6Q4WyG0O2160l1 DDG0UbBW5yidfcghq1r6sdz30RI5cSBGcAOmlktnPkjs9wv9/S/ZPyrC qMPJR9A60R52NcWEONS3DiyGxR66KA4S4grJnDgcI6pcytJGXm/b5WRO +v51tnLT0UVbgXvV03Itn/3MR72muzKXWzzj5LFJST5iqWCgAHJryG3T vNKEYLQ76nwl6B3YVJDjC1InmpIujwXBbxMKpyL1Sh0RLdlHq2TtZS8O qk4V0Q==
;; AUTHORITY SECTION: . 518400 IN NS e.root- servers.net. . 518400 IN NS h.root- servers.net. . 518400 IN NS l.root- servers.net. . 518400 IN NS i.root- servers.net. . 518400 IN NS a.root- servers.net. . 518400 IN NS d.root- servers.net. . 518400 IN NS c.root- servers.net. . 518400 IN NS b.root- servers.net. . 518400 IN NS j.root- servers.net. . 518400 IN NS k.root- servers.net. . 518400 IN NS g.root- servers.net. . 518400 IN NS m.root- servers.net. . 518400 IN NS f.root- servers.net. . 518400 IN RRSIG NS 8 0 518400 20170319170000 20170306160000 61045 . iQVPY67dNDj6w14dY1tDFgwRFqhEXVVLmY8q1woIX1eU7t1k/XaPi+tX 3+PDCFQlrQmWSWUtLPaA6pmrACB6EL2YvWzAiLVyocGCBpUpnbUCNAwm nD4SvBZb0ET2jWbSiAzo8iy+1+Hr84I8RXtbcrcpF5Y/J5Oataxt5z9o dHGQSKru0eYEbwfszq0L5L8KECk6skm7iQ0RAIspdTfjDsIwtvoAhEGV B8qjFQP5Bkcn38b35eWHneCmc3cgG0J+pK/eX/YHpqClcINGh3eavBlC 1KpUkDDMAwCvo+X/MhDE2Ol/VR00/M/YCzXbEv97IWenM1Xi4ArX9F1C xBc0gA==
;; ADDITIONAL SECTION: e.root-servers.net. 518400 IN A 192.203.230 .10 e.root-servers.net. 518400 IN AAAA 2001:500 :a8::e h.root-servers.net. 518400 IN A 198.97.190. 53 h.root-servers.net. 518400 IN AAAA 2001:500 :1::53 l.root-servers.net. 518400 IN A 199.7.83.42 l.root-servers.net. 518400 IN AAAA 2001:500 :9f::42 i.root-servers.net. 518400 IN A 192.36.148. 17 i.root-servers.net. 518400 IN AAAA 2001:7fe ::53 a.root-servers.net. 518400 IN A 198.41.0.4 a.root-servers.net. 518400 IN AAAA 2001:503 :ba3e::2:30 d.root-servers.net. 518400 IN A 199.7.91.13 d.root-servers.net. 518400 IN AAAA 2001:500 :2d::d c.root-servers.net. 518400 IN A 192.33.4.12 c.root-servers.net. 518400 IN AAAA 2001:500 :2::c b.root-servers.net. 518400 IN A 192.228.79. 201 b.root-servers.net. 518400 IN AAAA 2001:500 :84::b j.root-servers.net. 518400 IN A 192.58.128. 30 j.root-servers.net. 518400 IN AAAA 2001:503 :c27::2:30 k.root-servers.net. 518400 IN A 193.0.14.12 9 k.root-servers.net. 518400 IN AAAA 2001:7fd ::1 g.root-servers.net. 518400 IN A 192.112.36. 4 g.root-servers.net. 518400 IN AAAA 2001:500 :12::d0d m.root-servers.net. 518400 IN A 202.12.27.3 3 m.root-servers.net. 518400 IN AAAA 2001:dc3 ::35 f.root-servers.net. 518400 IN A 192.5.5.241 f.root-servers.net. 518400 IN AAAA 2001:500 :2f::f
;; Query time: 836 msec ;; SERVER: 198.41.0.4#53(198.41.0.4) ;; WHEN: Mon Mar 06 15:40:58 CST 2017 ;; MSG SIZE rcvd: 1440 #
I suspect the ISP mangles DNS requests directed outside their net.
Well, that command shouldn't have worked then.
Could you give me an example for something that you cannot resolve?
-Michael
Thank you, Paul
On Mon, 2017-03-06 at 22:37 +0000, Michael Tremer wrote:
Hi,
On Mon, 2017-03-06 at 15:47 -0600, Paul Simmons wrote:
On Mon, 2017-03-06 at 21:00 +0000, Michael Tremer wrote:
Hi,
On Mon, 2017-03-06 at 12:18 -0600, Paul Simmons wrote:
On Sun, 2017-03-05 at 11:42 +0000, Michael Tremer wrote:
Hi,
can you confirm if unbound is running?
What is the output of /etc/init.d/unbound restart?
-Michael
> > > > > > > > ----<% snip %>---- > > I have nightly commit > c016773b9816ad9be4ffc8643c30457e87c094e3 > available locally, and will beg my users for downtime to > test. > > Thank you, and best regards, > Paul > >
Bad juju - build c016773b couldn't resolve any hosts (other than those in "localdomain").
Provider is "hughes.net" and is the only ISP available (no hardlines or other LOS/NLOS WISPs available).
Tried assigning DNS servers 74.113.60.185 and 156.154.70.1
- no
change.
Paul
Sorry for the lllooonnnggg delay - had to get a testing time window.
Unbound was indeed running - verified with "/etc/init.d/unbound status"
Command and output from "restart":
# /etc/init.d/unbound restart Stopping Unbound DNS Proxy... [ OK ] Starting Unbound DNS Proxy... [ OK ] Ignoring broken upstream name server(s): 74.113.60.185 156.154.70.1 [ WARN ] Falling back to recursor mode [ WARN ]
So, can you remind me what your provider does again? Is any access to other name servers forbidden? If so the updated script should have detected that and should not have activated the recursor mode.
Could you manually execute the following commands from the console of IPFire for me?
dig @198.41.0.4 +dnssec SOA .
The dot at the end is important. What is the output of it?
Best, -Michael
Thank you, Paul
# dig @198.41.0.4 +dnssec SOA .
; <<>> DiG 9.11.0-P3 <<>> @198.41.0.4 +dnssec SOA . ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 811 ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 14, ADDITIONAL: 27 ;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 4096 ;; QUESTION SECTION: ;. IN SOA
;; ANSWER SECTION: . 86400 IN SOA a.root- servers.net. nstld.verisign-grs.com. 2017030601 1800 900 604800 86400 . 86400 IN RRSIG SOA 8 0 86400 20170319170000 20170306160000 61045 . X2xWv3z0ZmFxXkF9ybMgxMv6dcZ+SmnG3XHcNtAavuPNPLW3cVBwolDP lOU5/tfOaKwbu7HENFWysaekMpb6O7ycg+kryuCP7z6Q4WyG0O2160l1 DDG0UbBW5yidfcghq1r6sdz30RI5cSBGcAOmlktnPkjs9wv9/S/ZPyrC qMPJR9A60R52NcWEONS3DiyGxR66KA4S4grJnDgcI6pcytJGXm/b5WRO +v51tnLT0UVbgXvV03Itn/3MR72muzKXWzzj5LFJST5iqWCgAHJryG3T vNKEYLQ76nwl6B3YVJDjC1InmpIujwXBbxMKpyL1Sh0RLdlHq2TtZS8O qk4V0Q==
;; AUTHORITY SECTION: . 518400 IN NS e.root- servers.net. . 518400 IN NS h.root- servers.net. . 518400 IN NS l.root- servers.net. . 518400 IN NS i.root- servers.net. . 518400 IN NS a.root- servers.net. . 518400 IN NS d.root- servers.net. . 518400 IN NS c.root- servers.net. . 518400 IN NS b.root- servers.net. . 518400 IN NS j.root- servers.net. . 518400 IN NS k.root- servers.net. . 518400 IN NS g.root- servers.net. . 518400 IN NS m.root- servers.net. . 518400 IN NS f.root- servers.net. . 518400 IN RRSIG NS 8 0 518400 20170319170000 20170306160000 61045 . iQVPY67dNDj6w14dY1tDFgwRFqhEXVVLmY8q1woIX1eU7t1k/XaPi+tX 3+PDCFQlrQmWSWUtLPaA6pmrACB6EL2YvWzAiLVyocGCBpUpnbUCNAwm nD4SvBZb0ET2jWbSiAzo8iy+1+Hr84I8RXtbcrcpF5Y/J5Oataxt5z9o dHGQSKru0eYEbwfszq0L5L8KECk6skm7iQ0RAIspdTfjDsIwtvoAhEGV B8qjFQP5Bkcn38b35eWHneCmc3cgG0J+pK/eX/YHpqClcINGh3eavBlC 1KpUkDDMAwCvo+X/MhDE2Ol/VR00/M/YCzXbEv97IWenM1Xi4ArX9F1C xBc0gA==
;; ADDITIONAL SECTION: e.root-servers.net. 518400 IN A 192.203 .230 .10 e.root-servers.net. 518400 IN AAAA 2001 :500 :a8::e h.root-servers.net. 518400 IN A 198.97. 190. 53 h.root-servers.net. 518400 IN AAAA 2001 :500 :1::53 l.root-servers.net. 518400 IN A 199.7.8 3.42 l.root-servers.net. 518400 IN AAAA 2001 :500 :9f::42 i.root-servers.net. 518400 IN A 192.36. 148. 17 i.root-servers.net. 518400 IN AAAA 2001 :7fe ::53 a.root-servers.net. 518400 IN A 198.41. 0.4 a.root-servers.net. 518400 IN AAAA 2001 :503 :ba3e::2:30 d.root-servers.net. 518400 IN A 199.7.9 1.13 d.root-servers.net. 518400 IN AAAA 2001 :500 :2d::d c.root-servers.net. 518400 IN A 192.33. 4.12 c.root-servers.net. 518400 IN AAAA 2001 :500 :2::c b.root-servers.net. 518400 IN A 192.228 .79. 201 b.root-servers.net. 518400 IN AAAA 2001 :500 :84::b j.root-servers.net. 518400 IN A 192.58. 128. 30 j.root-servers.net. 518400 IN AAAA 2001 :503 :c27::2:30 k.root-servers.net. 518400 IN A 193.0.1 4.12 9 k.root-servers.net. 518400 IN AAAA 2001 :7fd ::1 g.root-servers.net. 518400 IN A 192.112 .36. 4 g.root-servers.net. 518400 IN AAAA 2001 :500 :12::d0d m.root-servers.net. 518400 IN A 202.12. 27.3 3 m.root-servers.net. 518400 IN AAAA 2001 :dc3 ::35 f.root-servers.net. 518400 IN A 192.5.5 .241 f.root-servers.net. 518400 IN AAAA 2001 :500 :2f::f
;; Query time: 836 msec ;; SERVER: 198.41.0.4#53(198.41.0.4) ;; WHEN: Mon Mar 06 15:40:58 CST 2017 ;; MSG SIZE rcvd: 1440 #
I suspect the ISP mangles DNS requests directed outside their net.
Well, that command shouldn't have worked then.
Could you give me an example for something that you cannot resolve?
-Michael
Thank you, Paul
Ah, I see... so the problem is that we're not forwarding requests outside the local domain? Latest testing sequence follows:
# /etc/init.d/unbound restart Stopping Unbound DNS Proxy... [ OK ] Starting Unbound DNS Proxy... [ OK ] Ignoring broken upstream name server(s): 74.113.60.185 156.154.70.1 [ WARN ] Falling back to recursor mode [ WARN ]
# dig @198.41.0.4 +dnssec SOA .
; <<>> DiG 9.11.0-P3 <<>> @198.41.0.4 +dnssec SOA . ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23002 ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 14, ADDITIONAL: 27 ;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 1472 ;; QUESTION SECTION: ;. IN SOA
;; ANSWER SECTION: . 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2017030601 1800 900 604800 86400 . 86400 IN RRSIG SOA 8 0 86400 20170319170000 20170306160000 61045 . X2xWv3z0ZmFxXkF9ybMgxMv6dcZ+SmnG3XHcNtAavuPNPLW3cVBwolDP lOU5/tfOaKwbu7HENFWysaekMpb6O7ycg+kryuCP7z6Q4WyG0O2160l1 DDG0UbBW5yidfcghq1r6sdz30RI5cSBGcAOmlktnPkjs9wv9/S/ZPyrC qMPJR9A60R52NcWEONS3DiyGxR66KA4S4grJnDgcI6pcytJGXm/b5WRO +v51tnLT0UVbgXvV03Itn/3MR72muzKXWzzj5LFJST5iqWCgAHJryG3T vNKEYLQ76nwl6B3YVJDjC1InmpIujwXBbxMKpyL1Sh0RLdlHq2TtZS8O qk4V0Q==
;; AUTHORITY SECTION: . 518400 IN NS a.root-servers.net. . 518400 IN NS b.root-servers.net. . 518400 IN NS c.root-servers.net. . 518400 IN NS d.root-servers.net. . 518400 IN NS e.root-servers.net. . 518400 IN NS f.root-servers.net. . 518400 IN NS g.root-servers.net. . 518400 IN NS h.root-servers.net. . 518400 IN NS i.root-servers.net. . 518400 IN NS j.root-servers.net. . 518400 IN NS k.root-servers.net. . 518400 IN NS l.root-servers.net. . 518400 IN NS m.root-servers.net. . 518400 IN RRSIG NS 8 0 518400 20170319170000 20170306160000 61045 . iQVPY67dNDj6w14dY1tDFgwRFqhEXVVLmY8q1woIX1eU7t1k/XaPi+tX 3+PDCFQlrQmWSWUtLPaA6pmrACB6EL2YvWzAiLVyocGCBpUpnbUCNAwm nD4SvBZb0ET2jWbSiAzo8iy+1+Hr84I8RXtbcrcpF5Y/J5Oataxt5z9o dHGQSKru0eYEbwfszq0L5L8KECk6skm7iQ0RAIspdTfjDsIwtvoAhEGV B8qjFQP5Bkcn38b35eWHneCmc3cgG0J+pK/eX/YHpqClcINGh3eavBlC 1KpUkDDMAwCvo+X/MhDE2Ol/VR00/M/YCzXbEv97IWenM1Xi4ArX9F1C xBc0gA==
;; ADDITIONAL SECTION: a.root-servers.net. 518400 IN A 198.41.0.4 b.root-servers.net. 518400 IN A 192.228.79.201 c.root-servers.net. 518400 IN A 192.33.4.12 d.root-servers.net. 518400 IN A 199.7.91.13 e.root-servers.net. 518400 IN A 192.203.230.10 f.root-servers.net. 518400 IN A 192.5.5.241 g.root-servers.net. 518400 IN A 192.112.36.4 h.root-servers.net. 518400 IN A 198.97.190.53 i.root-servers.net. 518400 IN A 192.36.148.17 j.root-servers.net. 518400 IN A 192.58.128.30 k.root-servers.net. 518400 IN A 193.0.14.129 l.root-servers.net. 518400 IN A 199.7.83.42 m.root-servers.net. 518400 IN A 202.12.27.33 a.root-servers.net. 518400 IN AAAA 2001:503:ba3e::2:30 b.root-servers.net. 518400 IN AAAA 2001:500:84::b c.root-servers.net. 518400 IN AAAA 2001:500:2::c d.root-servers.net. 518400 IN AAAA 2001:500:2d::d e.root-servers.net. 518400 IN AAAA 2001:500:a8::e f.root-servers.net. 518400 IN AAAA 2001:500:2f::f g.root-servers.net. 518400 IN AAAA 2001:500:12::d0d h.root-servers.net. 518400 IN AAAA 2001:500:1::53 i.root-servers.net. 518400 IN AAAA 2001:7fe::53 j.root-servers.net. 518400 IN AAAA 2001:503:c27::2:30 k.root-servers.net. 518400 IN AAAA 2001:7fd::1 l.root-servers.net. 518400 IN AAAA 2001:500:9f::42 m.root-servers.net. 518400 IN AAAA 2001:dc3::35
;; Query time: 797 msec ;; SERVER: 198.41.0.4#53(198.41.0.4) ;; WHEN: Mon Mar 06 17:03:12 CST 2017 ;; MSG SIZE rcvd: 1440
# host www.google.com Host www.google.com not found: 2(SERVFAIL)
# host www.ipfire.org ;; connection timed out; no servers could be reached
# nslookup www.google.com Server: 127.0.0.1 Address: 127.0.0.1#53
** server can't find www.google.com: SERVFAIL
# nslookup www.ipfire.org 8.8.8.8 Server: 8.8.8.8 Address: 8.8.8.8#53
Non-authoritative answer: www.ipfire.org class="Apple-tab-span" style="white-space:pre"> canonical name = web01.ipfire.org. Name: web01.ipfire.org Address: 81.3.27.41
Thanks, Paul
No, it is supposed to resolve everything.
For that it only needs to be able to contact the root name servers and practically all others on the internet. That seems to fail here.
What does unbound log?
On 6 Mar 2017, at 11:29 pm, Paul Simmons redneckmother@hughes.net wrote:
On Mon, 2017-03-06 at 22:37 +0000, Michael Tremer wrote: Hi,
On Mon, 2017-03-06 at 15:47 -0600, Paul Simmons wrote:
On Mon, 2017-03-06 at 21:00 +0000, Michael Tremer wrote:
Hi,
On Mon, 2017-03-06 at 12:18 -0600, Paul Simmons wrote:
On Sun, 2017-03-05 at 11:42 +0000, Michael Tremer wrote:
Hi,
can you confirm if unbound is running?
What is the output of /etc/init.d/unbound restart?
-Michael
> > >> >> >>> >>> >>> ----<% snip %>---- >> >> I have nightly commit >> c016773b9816ad9be4ffc8643c30457e87c094e3 >> available locally, and will beg my users for downtime to >> test. >> >> Thank you, and best regards, >> Paul >> >> > > Bad juju - build c016773b couldn't resolve any hosts (other > than > those in "localdomain"). > > Provider is "hughes.net" and is the only ISP available (no > hardlines > or other LOS/NLOS WISPs available). > > Tried assigning DNS servers 74.113.60.185 and 156.154.70.1 > - no > change. > > Paul >
Sorry for the lllooonnnggg delay - had to get a testing time window.
Unbound was indeed running - verified with "/etc/init.d/unbound status"
Command and output from "restart":
# /etc/init.d/unbound restart Stopping Unbound DNS Proxy... [ OK ] Starting Unbound DNS Proxy... [ OK ] Ignoring broken upstream name server(s): 74.113.60.185 156.154.70.1 [ WARN ] Falling back to recursor mode [ WARN ]
So, can you remind me what your provider does again? Is any access to other name servers forbidden? If so the updated script should have detected that and should not have activated the recursor mode.
Could you manually execute the following commands from the console of IPFire for me?
dig @198.41.0.4 +dnssec SOA .
The dot at the end is important. What is the output of it?
Best, -Michael
Thank you, Paul
# dig @198.41.0.4 +dnssec SOA .
; <<>> DiG 9.11.0-P3 <<>> @198.41.0.4 +dnssec SOA . ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 811 ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 14, ADDITIONAL: 27 ;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 4096 ;; QUESTION SECTION: ;. IN SOA
;; ANSWER SECTION: . 86400 IN SOA a.root- servers.net. nstld.verisign-grs.com. 2017030601 1800 900 604800 86400 . 86400 IN RRSIG SOA 8 0 86400 20170319170000 20170306160000 61045 . X2xWv3z0ZmFxXkF9ybMgxMv6dcZ+SmnG3XHcNtAavuPNPLW3cVBwolDP lOU5/tfOaKwbu7HENFWysaekMpb6O7ycg+kryuCP7z6Q4WyG0O2160l1 DDG0UbBW5yidfcghq1r6sdz30RI5cSBGcAOmlktnPkjs9wv9/S/ZPyrC qMPJR9A60R52NcWEONS3DiyGxR66KA4S4grJnDgcI6pcytJGXm/b5WRO +v51tnLT0UVbgXvV03Itn/3MR72muzKXWzzj5LFJST5iqWCgAHJryG3T vNKEYLQ76nwl6B3YVJDjC1InmpIujwXBbxMKpyL1Sh0RLdlHq2TtZS8O qk4V0Q==
;; AUTHORITY SECTION: . 518400 IN NS e.root- servers.net. . 518400 IN NS h.root- servers.net. . 518400 IN NS l.root- servers.net. . 518400 IN NS i.root- servers.net. . 518400 IN NS a.root- servers.net. . 518400 IN NS d.root- servers.net. . 518400 IN NS c.root- servers.net. . 518400 IN NS b.root- servers.net. . 518400 IN NS j.root- servers.net. . 518400 IN NS k.root- servers.net. . 518400 IN NS g.root- servers.net. . 518400 IN NS m.root- servers.net. . 518400 IN NS f.root- servers.net. . 518400 IN RRSIG NS 8 0 518400 20170319170000 20170306160000 61045 . iQVPY67dNDj6w14dY1tDFgwRFqhEXVVLmY8q1woIX1eU7t1k/XaPi+tX 3+PDCFQlrQmWSWUtLPaA6pmrACB6EL2YvWzAiLVyocGCBpUpnbUCNAwm nD4SvBZb0ET2jWbSiAzo8iy+1+Hr84I8RXtbcrcpF5Y/J5Oataxt5z9o dHGQSKru0eYEbwfszq0L5L8KECk6skm7iQ0RAIspdTfjDsIwtvoAhEGV B8qjFQP5Bkcn38b35eWHneCmc3cgG0J+pK/eX/YHpqClcINGh3eavBlC 1KpUkDDMAwCvo+X/MhDE2Ol/VR00/M/YCzXbEv97IWenM1Xi4ArX9F1C xBc0gA==
;; ADDITIONAL SECTION: e.root-servers.net. 518400 IN A 192.203 .230 .10 e.root-servers.net. 518400 IN AAAA 2001 :500 :a8::e h.root-servers.net. 518400 IN A 198.97. 190. 53 h.root-servers.net. 518400 IN AAAA 2001 :500 :1::53 l.root-servers.net. 518400 IN A 199.7.8 3.42 l.root-servers.net. 518400 IN AAAA 2001 :500 :9f::42 i.root-servers.net. 518400 IN A 192.36. 148. 17 i.root-servers.net. 518400 IN AAAA 2001 :7fe ::53 a.root-servers.net. 518400 IN A 198.41. 0.4 a.root-servers.net. 518400 IN AAAA 2001 :503 :ba3e::2:30 d.root-servers.net. 518400 IN A 199.7.9 1.13 d.root-servers.net. 518400 IN AAAA 2001 :500 :2d::d c.root-servers.net. 518400 IN A 192.33. 4.12 c.root-servers.net. 518400 IN AAAA 2001 :500 :2::c b.root-servers.net. 518400 IN A 192.228 .79. 201 b.root-servers.net. 518400 IN AAAA 2001 :500 :84::b j.root-servers.net. 518400 IN A 192.58. 128. 30 j.root-servers.net. 518400 IN AAAA 2001 :503 :c27::2:30 k.root-servers.net. 518400 IN A 193.0.1 4.12 9 k.root-servers.net. 518400 IN AAAA 2001 :7fd ::1 g.root-servers.net. 518400 IN A 192.112 .36. 4 g.root-servers.net. 518400 IN AAAA 2001 :500 :12::d0d m.root-servers.net. 518400 IN A 202.12. 27.3 3 m.root-servers.net. 518400 IN AAAA 2001 :dc3 ::35 f.root-servers.net. 518400 IN A 192.5.5 .241 f.root-servers.net. 518400 IN AAAA 2001 :500 :2f::f
;; Query time: 836 msec ;; SERVER: 198.41.0.4#53(198.41.0.4) ;; WHEN: Mon Mar 06 15:40:58 CST 2017 ;; MSG SIZE rcvd: 1440 #
I suspect the ISP mangles DNS requests directed outside their net.
Well, that command shouldn't have worked then.
Could you give me an example for something that you cannot resolve?
-Michael
Thank you, Paul
Ah, I see... so the problem is that we're not forwarding requests outside the local domain? Latest testing sequence follows:
# /etc/init.d/unbound restart Stopping Unbound DNS Proxy... [ OK ] Starting Unbound DNS Proxy... [ OK ] Ignoring broken upstream name server(s): 74.113.60.185 156.154.70.1 [ WARN ] Falling back to recursor mode [ WARN ]
# dig @198.41.0.4 +dnssec SOA .
; <<>> DiG 9.11.0-P3 <<>> @198.41.0.4 +dnssec SOA . ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23002 ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 14, ADDITIONAL: 27 ;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 1472 ;; QUESTION SECTION: ;. IN SOA
;; ANSWER SECTION: . 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2017030601 1800 900 604800 86400 . 86400 IN RRSIG SOA 8 0 86400 20170319170000 20170306160000 61045 . X2xWv3z0ZmFxXkF9ybMgxMv6dcZ+SmnG3XHcNtAavuPNPLW3cVBwolDP lOU5/tfOaKwbu7HENFWysaekMpb6O7ycg+kryuCP7z6Q4WyG0O2160l1 DDG0UbBW5yidfcghq1r6sdz30RI5cSBGcAOmlktnPkjs9wv9/S/ZPyrC qMPJR9A60R52NcWEONS3DiyGxR66KA4S4grJnDgcI6pcytJGXm/b5WRO +v51tnLT0UVbgXvV03Itn/3MR72muzKXWzzj5LFJST5iqWCgAHJryG3T vNKEYLQ76nwl6B3YVJDjC1InmpIujwXBbxMKpyL1Sh0RLdlHq2TtZS8O qk4V0Q==
;; AUTHORITY SECTION: . 518400 IN NS a.root-servers.net. . 518400 IN NS b.root-servers.net. . 518400 IN NS c.root-servers.net. . 518400 IN NS d.root-servers.net. . 518400 IN NS e.root-servers.net. . 518400 IN NS f.root-servers.net. . 518400 IN NS g.root-servers.net. . 518400 IN NS h.root-servers.net. . 518400 IN NS i.root-servers.net. . 518400 IN NS j.root-servers.net. . 518400 IN NS k.root-servers.net. . 518400 IN NS l.root-servers.net. . 518400 IN NS m.root-servers.net. . 518400 IN RRSIG NS 8 0 518400 20170319170000 20170306160000 61045 . iQVPY67dNDj6w14dY1tDFgwRFqhEXVVLmY8q1woIX1eU7t1k/XaPi+tX 3+PDCFQlrQmWSWUtLPaA6pmrACB6EL2YvWzAiLVyocGCBpUpnbUCNAwm nD4SvBZb0ET2jWbSiAzo8iy+1+Hr84I8RXtbcrcpF5Y/J5Oataxt5z9o dHGQSKru0eYEbwfszq0L5L8KECk6skm7iQ0RAIspdTfjDsIwtvoAhEGV B8qjFQP5Bkcn38b35eWHneCmc3cgG0J+pK/eX/YHpqClcINGh3eavBlC 1KpUkDDMAwCvo+X/MhDE2Ol/VR00/M/YCzXbEv97IWenM1Xi4ArX9F1C xBc0gA==
;; ADDITIONAL SECTION: a.root-servers.net. 518400 IN A 198.41.0.4 b.root-servers.net. 518400 IN A 192.228.79.201 c.root-servers.net. 518400 IN A 192.33.4.12 d.root-servers.net. 518400 IN A 199.7.91.13 e.root-servers.net. 518400 IN A 192.203.230.10 f.root-servers.net. 518400 IN A 192.5.5.241 g.root-servers.net. 518400 IN A 192.112.36.4 h.root-servers.net. 518400 IN A 198.97.190.53 i.root-servers.net. 518400 IN A 192.36.148.17 j.root-servers.net. 518400 IN A 192.58.128.30 k.root-servers.net. 518400 IN A 193.0.14.129 l.root-servers.net. 518400 IN A 199.7.83.42 m.root-servers.net. 518400 IN A 202.12.27.33 a.root-servers.net. 518400 IN AAAA 2001:503:ba3e::2:30 b.root-servers.net. 518400 IN AAAA 2001:500:84::b c.root-servers.net. 518400 IN AAAA 2001:500:2::c d.root-servers.net. 518400 IN AAAA 2001:500:2d::d e.root-servers.net. 518400 IN AAAA 2001:500:a8::e f.root-servers.net. 518400 IN AAAA 2001:500:2f::f g.root-servers.net. 518400 IN AAAA 2001:500:12::d0d h.root-servers.net. 518400 IN AAAA 2001:500:1::53 i.root-servers.net. 518400 IN AAAA 2001:7fe::53 j.root-servers.net. 518400 IN AAAA 2001:503:c27::2:30 k.root-servers.net. 518400 IN AAAA 2001:7fd::1 l.root-servers.net. 518400 IN AAAA 2001:500:9f::42 m.root-servers.net. 518400 IN AAAA 2001:dc3::35
;; Query time: 797 msec ;; SERVER: 198.41.0.4#53(198.41.0.4) ;; WHEN: Mon Mar 06 17:03:12 CST 2017 ;; MSG SIZE rcvd: 1440
# host www.google.com Host www.google.com not found: 2(SERVFAIL)
# host www.ipfire.org ;; connection timed out; no servers could be reached
# nslookup www.google.com Server: 127.0.0.1 Address: 127.0.0.1#53
** server can't find www.google.com: SERVFAIL
# nslookup www.ipfire.org 8.8.8.8 Server: 8.8.8.8 Address: 8.8.8.8#53
Non-authoritative answer: www.ipfire.org class="Apple-tab-span" style="white-space:pre"> canonical name = web01.ipfire.org. Name: web01.ipfire.org Address: 81.3.27.41
Thanks, Paul