Почему DNS моего провайдера все еще находится в resolv.conf после подключения VPN и как это можно исправить?

Попробуйте:

file="/tmp/countries.properties"
3
22.02.2016, 00:24
1 ответ

NetworkManager может либо:

  • обновлять resolv.conf самостоятельно;

  • делегировать resolvconf (для интерфейса NetworkManager);

  • либо использовать netconfig.

Различные конфигурации, поступающие от каждого интерфейса, просто объединяются (см. update_dns()).

Если вы не используете NetworkManager для VPN, вы можете использовать openresolv в эксклюзивном режиме (-x), чтобы заменить серверы имен из NetworkManager на серверы из VPN вместо их добавления. Это можно сделать с помощью этого (уродливого) скрипта (OpenVPN hook):

#!/bin/sh

# Dump all foreign options (coming from environment variables foreign_option_N) to stdout
foreign_options() {
    local i
    i=1
    while true; do
      local varname=foreign_option_$i
      local value="$(eval echo \$$varname)"
      if [ -z "$value" ]; then
        return
      fi
      echo $value
      i=$((i+1))
  done
}

#Create a resolv.conf file from OpenVPN environment variables
create_resolvconf() {
    foreign_options | grep "^dhcp-option DNS " | sed "s/^dhcp-option DNS /nameserver /"
}

route_up() {    
    create_resolvconf | resolvconf -x -a $dev
}

down() {
    resolvconf -d $dev
}

case "$script_type" in
    route-up) route_up "$@" ;;
    down) down "$@" ;;
esac

Вы должны быть в состоянии адаптировать его для использования в качестве скрипта диспетчера NetworkManager (см. man 8 NetworkManager), используя:

  • VPN_IP4_NAMESERVERS
  • VPN_IP6_NAMESERVERS

Я не проверял это, но что-то вроде этого должно сработать:

#!/bin/sh

create_resolvconf() {
    for ip in $VPN_IP4_NAMESERVERS $VPN_IP6_NAMESERVERS; do
         echo "nameserver $ip"
    done
}

up() {
   create_resolvconf | resolvconf -x -a $VPN_IP_IFAC
}

down() {
   resolvconf -d $VPN_IP_IFAC
}

if [ -z "$VPN_IP_IFACE" ]; then
  return 0
fi

case "$2" in
   up) up ;;
   down) down ;;
esac
0
27.01.2020, 21:39

Теги

Похожие вопросы