当我运行 openconnect(使用默认的 vpnc 脚本)时,它会发生变化/etc/resolv.conf
,而且真的不应该这样做。我只是将 VPN 用于一些特定的主机,而不是用于完整的 Internet 连接。
小智 11
创建以下脚本/etc/vpnc/no_resolverupdate.sh
#!/bin/sh
#
#
export INTERNAL_IP4_DNS=
. /usr/share/vpnc-scripts/vpnc-script
Run Code Online (Sandbox Code Playgroud)
使其可执行:
chmod +x /etc/vpnc/no_resolverupdate.sh
Run Code Online (Sandbox Code Playgroud)
然后在您的连接配置文件中添加一行(此处为/etc/vpnc/customer.conf)
echo 'Script /etc/vpnc/no_resolverupdate.sh' >> /etc/vpnc/customer.conf
Run Code Online (Sandbox Code Playgroud)
使用vpn-slice设置分割隧道连接,其中您的 DNS 配置不会被修改,并且只有到少数主机或 IP 子网的流量通过 VPN 路由。
它就是为了这个目的而创建的:
我只是将 VPN 用于一些特定的主机,而不是用于完整的互联网连接。
安装 vpn-slice 后,将其与 OpenConnect 一起使用作为标准 vpnc-script 的替代品(您可以-v --dump
在确认其正常工作后将其删除):
$ openconnect --script "vpn-slice -v --dump host.you.need.to.access some.other.host" \
vpn-server.your.company.com
Run Code Online (Sandbox Code Playgroud)
这将设置路由表,以便仅通过 VPN 路由到这两个特定主机的流量,并将它们的条目添加到/etc/hosts
. 文档有更多详细信息。
(我是 vpn-slice 的作者,也是 OpenConnect 的主要贡献者之一。)
vpnc-script 看起来像这样吗?如果是这样,下面的代码就是它改变你的原因/etc/resolv.conf
:
if [ -x /sbin/resolvconf ]; then # Optional tool on Debian, Ubuntu, Gentoo
MODIFYRESOLVCONF=modify_resolvconf_manager
RESTORERESOLVCONF=restore_resolvconf_manager
elif [ -x /sbin/modify_resolvconf ]; then # Mandatory tool on Suse earlier than 11.1
MODIFYRESOLVCONF=modify_resolvconf_suse
RESTORERESOLVCONF=restore_resolvconf_suse
else # Generic for any OS
MODIFYRESOLVCONF=modify_resolvconf_generic
RESTORERESOLVCONF=restore_resolvconf_generic
fi
modify_resolvconf_manager() {
NEW_RESOLVCONF=""
for i in $INTERNAL_IP4_DNS; do
NEW_RESOLVCONF="$NEW_RESOLVCONF
nameserver $i"
done
if [ -n "$CISCO_DEF_DOMAIN" ]; then
NEW_RESOLVCONF="$NEW_RESOLVCONF
domain $CISCO_DEF_DOMAIN"
fi
echo "$NEW_RESOLVCONF" | /sbin/resolvconf -a $TUNDEV
}
Run Code Online (Sandbox Code Playgroud)
“脏”的方法是使/etc/resolv.conf
文件不可变:
# chattr +i /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
正确的方法是编辑您的 vpnc 脚本,使其不应该更改/etc/resolv.conf
.
归档时间: |
|
查看次数: |
12084 次 |
最近记录: |