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