web-dev-qa-db-ja.com

openconnectによる/etc/resolv.confの変更を停止するにはどうすればよいですか?

(デフォルトのvpncスクリプトを使用して)openconnectを実行すると、/etc/resolv.confが変更され、実際には変更されません。完全なインターネット接続ではなく、いくつかの特定のホストにVPNを使用しています。

5
chx

次のスクリプトを作成します/ etc/vpnc/no_resolverupdate.sh

#!/bin/sh
#
#
export INTERNAL_IP4_DNS=

. /usr/share/vpnc-scripts/vpnc-script

実行可能にします。

chmod +x /etc/vpnc/no_resolverupdate.sh

次に、接続構成ファイルに行を追加します(ここでは/ etc/vpnc/customer.conf

echo 'Script /etc/vpnc/no_resolverupdate.sh' >> /etc/vpnc/customer.conf
8
MartinW

Vpnc-scriptは this のように見えますか?もしそうなら、以下のコードはあなたの/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
}

「ダーティ」な方法は、/etc/resolv.confファイルを不変にすることです。

# chattr +i /etc/resolv.conf

適切な方法は、vpnc-scriptを編集して、/etc/resolv.confが変更されないようにすることです。

7
quanta