当我断开与 expressvpn 的连接时,resolv.conf 文件包含我连接时不存在的 expressvpn 引用。
具体来说,它将设置nameserver
为不存在的 IP 地址并添加expressvpn
到search
域中。
恢复我之前的 resolv.conf的最佳方法是什么expressvpn disconnect
?我可以将断开连接包装在从备份中恢复的脚本中,但这需要 root 权限——并且可能存在标准方法。我在 expressvpn 网站上没有看到任何内容。
答案1
正如其他人所说,它看起来像是一个错误expressvpn
。我使用这个解决方法来使其工作:我曾经备份过我的resolv.conf
文件,使用:
sudo cp /etc/resolv.conf /etc/resolv.conf.bak
此后,当我想断开连接时,我不会运行通常的命令:
expressvpn disconnect
相反,我运行:
expressvpn disconnect && sudo cp /etc/resolv.conf.bak /etc/resolv.conf
我没有完整地输入它,而是使用Ctrl+R在 bash 历史记录中快速找到它。希望它能有所帮助!
答案2
ExpressVPN 回复说他们认为这是一个功能。所以我做了以下事情:
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
然后我将 /etc/resolv.conf 硬编码为至少:
nameserver 1.1.1.1
nameserver 1.0.0.1
在 ExpressVPN 连接时,此文件将被 VPN DNS IP 替换,断开连接时,此 resolv.conf 将恢复。
它从 19.04 到 19.10 一直运行,没有出现比我以前systemd-resolved
管理 DNS 时遇到的问题更少的问题。
答案3
这对我来说很管用。问题完全一样,ExpressVPN 修改了 resolv.conf,但在我断开 VPN 连接时没有替换它。现在它运行正常。
sudo apt-get 安装 resolvconf
sudo vi /etc/resolvconf/resolv.conf.d/base
将您的名称服务器添加到基础并保存,例如:
名称服务器 8.8.8.8
名称服务器 8.8.4.4
将基础复制到 resolv.conf
cp /etc/resolvconf/resolv.conf.d/base /etc/resolv.conf