VPN 断开连接后,如何从 resolv.conf 中删除名称服务器?

VPN 断开连接后,如何从 resolv.conf 中删除名称服务器?

即使与 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.in10.4ns。但是,我在 中找不到它们/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>

答案3

尝试

sudo vi /run/resolvconf/interface/NetworkManager

您也可以使用 nano 编辑器,删除或替换名称服务器,然后运行

sudo resolvconf -u

有关详细信息,请参阅或者

相关内容