每次更换网络时,DNS缓存都会显示错误IP。如何每次都自动修复?

每次更换网络时,DNS缓存都会显示错误IP。如何每次都自动修复?

我公司的员工网站可以访问:

  • 通过其 IP 地址 1.2.3.4 或名称从外界获取employees.corp.com
  • 通过 IP 地址 192.168.1.2 或名称从公司网络内部employees.corp.com

employees.corp.com问题:从家上下班后,从公司内部访问网站经常失败。

  • 当它失败时,如果我运行ping employees.corp.com它会说64 bytes from w91284.telco.com (1.2.3.4): icmp_seq=1 ttl=255 time=2.08 ms
  • 我是唯一遇到此问题的人。所有其他员工employees.corp.com都在内部和外部浏览,没有问题。我也是唯一使用 Linux 的人(我从头开始安装 Ubuntu 2018.04,但我在 2016.04 上遇到了同样的问题)。

当这种情况发生时,我发现了两种解决方法:

  • 解决方法 A:编辑 URL 以替换employees.corp.com192.168.1.2
  • 解决方法 B:运行sudo service network-manager restart

这两种解决方法都可以暂时解决问题,但都不令人满意,因为它们每天都在浪费时间。什么是永久的解决方案?

禁用或缩短 DNS 缓存会使整个互联网的访问速度变慢,因此我更希望将其限制在这个特定域中。我也愿意接受完全不同的解决方案。

答案1

此 systemd 脚本在从挂起状态恢复时重新启动网络管理器。

#!/bin/sh

MYNAME=$0

restart_network() {
    /usr/bin/logger $MYNAME 'restart_network BEGIN'
    systemctl restart NetworkManager.service
    /usr/bin/logger $MYNAME 'restart_network END'
}

/usr/bin/logger $MYNAME 'case=[' ${1}' ]'
case "${1}/${2}" in
    hibernate|suspend|pre*)
      ;;
    resume|thaw|post*)
      restart_network;;
esac

您需要创建一个名为 的脚本,network-reset使用 sudo 权限,并将其保存到目录/lib/systemd/system-sleep。然后使用以下命令将其标记为可执行:

chmod a+x /lib/systemd/system-sleep/network-reset

上述命令允许您通过运行或查看来logger审核结果。journalctl/var/log/syslog

答案2

我对 WinEunuuchs2Unix 的解决方案非常满意,但不知何故它有时仍会因为某种原因失败,所以我不得不经常重启网络,通常在公司办公桌前就重启四次。

我最终将我的 WiFi 连接设置为始终使用两个 DNS 地址:

在此处输入图片描述

有时这可能会导致连接速度变慢,但至少我可以可靠地连接到公司网站。

相关内容