我公司的员工网站可以访问:
- 通过其 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.com
为192.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