GNU/Linux >> Znalost Linux >  >> Ubuntu

Klient Openvpn nedostává informace DNS?

Používám server OpenVPN běžící na routeru nainstalovaném s DD-WRT a používám jej ke směrování veškerého provozu přes server VPN. Připojuji se k němu z několika zařízení:notebook s Windows, zařízení Android a linuxové stroje. Problém, který mám nyní, je nedávný a dříve vše fungovalo dobře. Tento problém se vyskytuje pouze na klientských počítačích s linuxem (ubuntu 16.04). Klient ubuntu nezíská adresy DNS serverů automaticky. Po nějakém průzkumu jsem zjistil, že bych měl na konec konfigurace klienta přidat následující:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

To nepomohlo, takže jsem přidal také:

dhcp-option DNS a.b.c.d
dhcp-option DNS e.f.g.h

IP jsou převzaty z routeru a díky tomu věci fungují. Doposud stačilo mít v konfiguraci klienta „redirect-gateway def1“.

Nelíbí se mi toto řešení přidání příkazů „dhcp-option DNS“, protože musím sledovat jakékoli změny serveru DNS. Existuje nějaký způsob, jak se zbavit přidání možnosti „dhcp-option DNS“?

Přijatá odpověď:

Měl jsem stejný problém, ale podařilo se mi ho vyřešit pomocí následujícího hacku:
Místo up /etc/openvpn/update-resolv-conf Vytvořil jsem soubor s názvem up.sh v /etc/openvpn.
Spusťte příkaz sudo gedit /etc/openvpn/up.sh a vložte následující:

#! /bin/bash
DEV=$1

if [ ! -d /tmp/openvpn ]; then
mkdir /tmp/openvpn
fi
CACHE_NAMESERVER="/tmp/openvpn/$DEV.nameserver"
echo -n "" > $CACHE_NAMESERVER

dns=dns
for opt in ${!foreign_option_*}
do
eval "dns=${$opt#dhcp-option DNS }"
if [[ $dns =~ [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} ]]; then
if [ ! -f /etc/resolv.conf.default ]; then
cp /etc/resolv.conf /etc/resolv.conf.default
fi

cat /etc/resolv.conf | grep -v ^# | grep -v ^nameserver > /tmp/resolv.conf
echo "nameserver $dns" >> /tmp/resolv.conf
echo $dns >> $CACHE_NAMESERVER
cat /etc/resolv.conf | grep -v ^# | grep -v "nameserver $dns" | grep nameserver >> /tmp/resolv.conf
mv /tmp/resolv.conf /etc/resolv.conf

fi
done

Uložte jej a spusťte sudo chmod +x /etc/openvpn/up.sh Poté vytvořte další soubor /etc/openvpn/down.sh a vložte do něj následující

#! /bin/bash
echo "Restoring original nameservers"
rm -f /etc/resolv.conf
ln -s /run/resolvconf/resolv.conf /etc/resolv.conf 
echo "Done restoring nameservers cheers"

Uložte jej a spusťte sudo chmod +x /etc/openvpn/down.sh

Nyní odstraňte řádky:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

A nahraďte je:

 script-security 2
    up /etc/openvpn/up.sh
    down /etc/openvpn/down.sh

Ubuntu
  1. Ubuntu – /usr/bin/host nevyzvedává změny v /etc/hosts ani po restartu?

  2. Co se stalo s /etc/apt/apt.conf?

  3. Vysvětlení konfiguračního souboru DNS /etc/named.conf

  1. Ukázkový soubor /etc/multipath.conf

  2. hostitel:analýza souboru /etc/resolv.conf se nezdařila

  3. Co přesně dělá možnost konfigurace vyhledávání v /etc/resolv.conf?

  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. /etc/passwd zobrazuje uživatele ve skupině, ale /etc/group nikoli

  3. Proč /etc/resolv.conf ukazuje na 127.0.0.53?