【问题标题】:Ubuntu 18.04 - How can I ignore offline DNS servers?Ubuntu 18.04 - 如何忽略离线 DNS 服务器?
【发布时间】:2020-05-12 00:01:09
【问题描述】:

我的情况如下:

在办公室时,我使用站点到站点 VPN,而我的 DNS 服务器是办公室域的一部分,只能通过 VPN 访问。

在家时,我可以连接到点对点 VPN,并且 DNS 工作正常。

在未以任何一种方式连接到 VPN 时都会出现此问题。我正在使用 systemd-resolved 并且我的前 2 个 DNS 服务器是域服务器,而其余的 DNS 服务器可以在没有 VPN 的情况下访问。

每个请求都发送到前 2 个服务器,等待它们的响应,由于它们无法访问,每个请求都需要几秒钟才能到达正常工作的 DNS 服务器。

我的问题是,我可以将系统设置为在指定时间内忽略无法访问的 DNS 服务器,然后再重试吗?

【问题讨论】:

  • 您的系统是否手动配置了IP地址?
  • 不是,IP是DHCP接收的,但是DNS是手动配置的。
  • 1.通过请求拨号 VPN 使用的 DNS 服务器是否与您在站点到站点 VPN 上使用的服务器相同? 2.那些VPN服务器只用于解析内部域名吗?
  • 1.是的,同样的 2 个 DNS 服务器 2。是的,它们只解析“example.com”域

标签: dns vpn ubuntu-18.04


【解决方案1】:

您可以使用最简单的脚本来解决问题。如果您的 VPN 已关闭,只需更改 DNS。比如这个。

status=$(systemctl is-active --quiet service "your vpn site-to-site.service" && echo "running" );

if [ "$status" != "running" ]
then
     "put your command here to change DNS when VPN is OFF"
else
     "put your command here to change DNS when VPN is ON"
fi

当然您也可以检查当前的 DNS 设置以防止不需要 例如,如果您将使用 cron,则文件中的相同更改。

我可以帮助你完成这个脚本,但我需要看看你的 /etc/systemd/resolved.conf 首先。当然没有原创IP

【讨论】:

  • 谢谢你的回答,我会尽快更新。
【解决方案2】:

您的 DNS 设置也应该是动态配置的。如果(出于某种奇怪的原因)这是不可能的,您有两种选择:

  1. 您可以通过添加行在您的/etc/resolv.conf 中进行一些调整

    options timeout:1

    这将使内部解析器等待最大。在尝试下一个域名服务器之前等待 1 秒(默认值为 5)

  2. 安装本地 DNS 服务器,最好是轻量级的,如 dnsmasqunbound。将其配置为将“example.com”的请求转发到您的内部 DNS 服务器,并将所有其他请求转发到默认(公共)DNS 服务器。将您的操作系统解析器配置为使用本地 DNS 服务器。

【讨论】:

  • 首先感谢您的回答。我已经尝试过第一个选项,它确实改善了体验,但仍然太慢(许多网站必须加载更多地址,因此解析时间实际上不是 1 或 2 秒)。我知道第二种解决方案,尚未尝试过,但希望通过将 systemd-resolved 配置为忽略无法访问的服务器来避免它。如果没有办法做到这一点,我会试一试 dnsmasq/unbound 并相应地更新你的答案。
猜你喜欢
  • 2018-10-22
  • 1970-01-01
  • 2019-10-25
  • 2020-04-09
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 2017-01-20
相关资源
最近更新 更多