GNU/Linux >> Belajar Linux >  >> Ubuntu

Klien OpenVPN Tidak Mendapatkan Informasi Dns?

Saya menggunakan server OpenVPN yang berjalan pada router yang diinstal dengan DD-WRT dan saya menggunakannya untuk merutekan semua lalu lintas melalui server VPN. Saya menghubungkannya dari beberapa perangkat:laptop Windows, perangkat android, dan mesin linux. Masalah yang saya miliki sekarang adalah baru-baru ini dan sebelumnya semuanya bekerja dengan baik. Masalah ini hanya terjadi pada mesin klien dengan linux (ubuntu 16.04). Klien ubuntu tidak mendapatkan alamat server DNS secara otomatis. Setelah beberapa penelitian, saya menemukan bahwa saya harus menambahkan yang berikut ini di akhir konfigurasi klien:

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

Ini tidak membantu, jadi saya juga menambahkan:

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

IP diambil dari router dan itu membuat semuanya berfungsi. Sampai sekarang sudah cukup untuk memiliki "redirect-gateway def1" di konfigurasi klien.

Saya tidak suka solusi menambahkan perintah "dhcp-option DNS" ini karena saya harus memperhatikan setiap perubahan dari server DNS. Apakah ada cara untuk menghilangkan penambahan opsi “dhcp-option DNS”?

Jawaban yang Diterima:

Saya memiliki masalah yang sama tetapi berhasil menyelesaikannya menggunakan peretasan berikut:
Alih-alih up /etc/openvpn/update-resolv-conf Saya membuat file bernama up.sh di /etc/openvpn.
Jalankan perintah sudo gedit /etc/openvpn/up.sh dan rekatkan yang berikut ini:

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

Simpan dan jalankan sudo chmod +x /etc/openvpn/up.sh Kemudian buat file lain /etc/openvpn/down.sh dan rekatkan yang berikut ini di dalamnya

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

Simpan dan jalankan sudo chmod +x /etc/openvpn/down.sh

Sekarang hapus baris:

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

Dan ganti dengan:

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

Ubuntu
  1. Apa yang Menimpa /etc/resolv.conf Pada Setiap Boot?

  2. Ubuntu – /usr/bin/host Tidak Mengambil Perubahan Pada /etc/hosts Bahkan Setelah Reboot?

  3. Apa yang Terjadi Pada /etc/apt/apt.conf?

  1. /etc/x11/xorg.conf Tidak Ada??

  2. Mengapa /bin/sh Menunjuk Ke /bin/dash Dan Bukan /bin/bash??

  3. Manajer Jaringan:Bagaimana Cara Menghentikan Pembaruan Nm /etc/resolv.conf?

  1. “tidak dapat Membuat Direktori Cache /home//.composer/cache/repo/https—packagist.org/, Atau Direktori Tidak Dapat Ditulis. Melanjutkan Tanpa Cache”?

  2. Contoh file /etc/mke2fs.conf

  3. /etc/passwd menampilkan pengguna dalam grup, tetapi /etc/group tidak