GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Il client Openvpn non riceve informazioni DNS?

Sto utilizzando un server OpenVPN in esecuzione su un router installato con DD-WRT e lo sto utilizzando per instradare tutto il traffico attraverso il server VPN. Mi sto collegando ad esso da diversi dispositivi:laptop Windows, dispositivi Android e macchine Linux. Il problema che ho ora è recente e prima tutto funzionava bene. Questo problema si verifica solo sulle macchine client con Linux (ubuntu 16.04). Il client Ubuntu non ottiene automaticamente gli indirizzi del server DNS. Dopo alcune ricerche, ho scoperto che dovrei aggiungere quanto segue alla fine della configurazione del client:

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

Questo non ha aiutato, quindi ho aggiunto anche:

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

Gli IP vengono presi dal router e fa funzionare le cose. Finora era sufficiente avere “redirect-gateway def1” nella configurazione del client.

Non mi piace questa soluzione di aggiungere i comandi "dhcp-option DNS" perché devo guardare eventuali modifiche del server DNS. C'è un modo per eliminare l'aggiunta dell'opzione "dhcp-option DNS"?

Risposta accettata:

Ho avuto lo stesso problema ma sono riuscito a risolverlo usando il seguente hack:
Invece di up /etc/openvpn/update-resolv-conf Ho creato un file chiamato up.sh in /etc/openvpn.
Esegui il comando sudo gedit /etc/openvpn/up.sh e incolla quanto segue:

#! /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

Salvalo ed esegui sudo chmod +x /etc/openvpn/up.sh Quindi crea un altro file /etc/openvpn/down.sh e incolla quanto segue

#! /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"

Salvalo ed esegui sudo chmod +x /etc/openvpn/down.sh

Ora rimuovi le linee:

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

E sostituiscili con:

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

Ubuntu
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Cosa sovrascrive /etc/resolv.conf ad ogni avvio?

  3. /etc/x11/xorg.conf non esiste??

  4. Come viene aggiornato /etc/motd?

  5. "impossibile creare la directory della cache /home//.composer/cache/repo/https—packagist.org/, oppure la directory non è scrivibile. Procedere senza cache”?

Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

In /etc/resolv.conf, cosa fa esattamente l'opzione di configurazione della ricerca?

Come rendere permanente l'indirizzo del server dei nomi in /etc/resolv.conf?

/etc/passwd mostra l'utente in un gruppo, ma /etc/group no

Perché /etc/resolv.conf punta a 127.0.0.53?

Differenza tra /etc/hosts e /etc/resolv.conf