即使与 VPN 服务器断开连接后,也会出现这种情况resolv.conf
(使用 建立连接openvpn --config <path>.ovpn
):
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers
nameserver 10.4.X.X
nameserver 10.4.Y.Y
nameserver 127.0.0.53
search Z.ac.in
我想删除search Z.ac.in
和10.4
ns。但是,我在 中找不到它们/etc/resolvconf/resolv.conf.d/{head,base,tail}
。我甚至grep 10.4.X.X
在目录中也/etc/resolvconf
找不到它们。同样,我的/etc/network/interfaces
文件几乎是空的:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
目前我刚刚重启了电脑来删除它们。但是如何从 resolv.conf 文件中正确删除它们呢?
答案1
用于sudo systemd-resolve --revert --interface vpn0
断开VPN后重置resolv.conf。
如果可行,您可以通过创建/etc/network/if-post-down.d/vpn0
以下内容在断开 VPN 连接时自动运行它:
#!/bin/sh
if [ "$IFACE" = "vpn0" ]; then
systemd-resolve --revert --interface vpn0
fi
然后
chmod 755 /etc/network/if-post-down.d/vpn0
允许其执行。
用您的 vpn 接口替换vpn0
以上所有内容。
答案2
可能,当你强制重启网络管理器时,这些设置会被清除。尝试
sudo service network-manager restart
这仍然是一个相当粗暴的解决方案,但比重启 PC 好一点。如果可行,可以通过在 /etc/NetworkManager/dispatcher.d 中放入以下内容的脚本来实现自动化:
#!/bin/sh
if [[ "$2"="vpn-down" ]]; then
/usr/sbin/service network-manager restart
fi
您甚至可以在测试中使用参数 $1 来实现网络接口的多样化。不要忘记通过以下方式使脚本可执行:
sudo chmod +x /etc/NetworkManager/dispatcher.d/<yourscriptname>