Izinkan klien OpenVPN mendorong server DNSnya sendiri, terlepas dari dns server OpenVPN yang didorong?

9

Ada server OpenVPN yang berjalan di Debian dan mendorong DNS di file konfigurasi server:

tekan "dhcp-option DNS 8.8.8.8"

Apakah ada opsi untuk memungkinkan pengguna mengubah server DNS di sisi klien?

Inilah yang perlu dilakukan, server openvpn harus mendorong DNS karena jika tidak, banyak klien OpenVPN tidak akan dapat membuka halaman web sampai secara manual mengatur server DNS dalam pengaturan jaringan sistem.

Tujuan saya adalah untuk secara otomatis menerapkan server DNS default untuk pengguna yang tidak memiliki keterampilan teknis, dan juga memungkinkan pengguna komputer yang terampil untuk mengatur server DNS mereka sendiri.

Perhatikan bahwa hanya mengubah pengaturan DNS pada PC sementara opsi 'push "dhcp-option DNS 8.8.8.8"' aktif di server openvpn, tidak melakukan apa-apa. DNS yang didorong oleh server tetap terlepas dari pengaturan DNS lokal.

Ada ide?

Konfigurasi server OpenVPN:

# cat /etc/openvpn/openvpn.conf
server 10.186.35.0 255.255.255.0
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
ifconfig-pool-persist ipp.txt
#push "route 0.0.0.0 0.0.0.0"
#push "redirect-gateway"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group users
persist-key
persist-tun
status openvpn-status.log
verb 3
script-security 3
auth-user-pass-verify /etc/openvpn/auth-chap via-env
client-cert-not-required
duplicate-cn
management 127.0.0.1 5119
script-security 3 system
username-as-common-name
client-connect /etc/openvpn/scripts/clientconnect.sh
client-disconnect /etc/openvpn/scripts/clientdisconnect.sh
log-append /var/log/openvpn.log
log /var/log/openvpn.log

PEMBARUAN: Sistem operasi klien adalah Windows dan Mac

Dimi
sumber
Anda belum menentukan sistem operasi utama klien DHCP Anda, jadi yang bisa kami katakan adalah "ya, mengganti DHCP yang disediakan server DNS biasanya cukup sepele". Apa yang Anda alami yang menunjukkan bahwa bukan itu masalahnya?
Andrew B
Maaf, sistem operasinya adalah Windows dan Mac. Ketika terhubung ke server openvpn saya tidak akan dapat secara efektif mengubah pengaturan DNS. Misalnya server openvpn memasok DNS: 8.8.8.8 dan ketika saya mengubah ke DNS di Afrika Selatan (lokal) misalnya, server DNS resmi saya tetap 8.8.8.8 (atau analog Google). Seseorang dapat menguji server DNS pada dnsleaktest c0m
Dimi

Jawaban:

15

Mulai 2017 (OpenVPN 2.4) ini sekarang mungkin. Tambahkan baris ini ke file konfigurasi klien Anda:

pull-filter ignore "dhcp-option DNS"

dan itu akan mengabaikan semua baris konfigurasi yang dimulai dengan teks yang dikutip.

Opsi dicocokkan dari atas ke bawah, sehingga pencocokan pertama digunakan. Anda dapat menggunakan ini untuk mengizinkan beberapa rute dan menolak yang lain, jika itu sesuai dengan kebutuhan Anda.

Tiga kata kunci aksi yang accept, ignore, dan reject. Saya belum menemukan kasus penggunaan untuk reject.

Criggie
sumber
4

Dalam dokumentasi OpenVPN resmi Anda dapat menemukan:

[...]
--route-nopull
  When used with --client or --pull, accept options pushed by server EXCEPT for routes and 
  dhcp options like DNS servers.
  When used on the client, this option effectively bars the server from adding routes to the 
  client's routing table, however note that this option still allows the server to set the 
  TCP/IP properties of the client's TUN/TAP interface.
[...]

Sayangnya, selain apa yang Anda minta, ini memiliki efek samping menonaktifkan juga redirect-gateway yang disediakan oleh konfigurasi Anda dan ini dapat mewakili masalah, untuk kasus Anda.

Apa yang saya sarankan adalah pendekatan yang sama sekali berbeda.

Seperti yang Anda sebutkan dengan jelas: " Tujuan saya adalah untuk secara otomatis menerapkan server DNS default untuk pengguna yang tidak memiliki keterampilan teknis, sementara juga memungkinkan pengguna komputer yang terampil untuk mengatur server DNS mereka sendiri. " DNS-config dan pengguna mana yang tidak Anda inginkan untuk memberikan konfigurasi tersebut.

Oleh karena itu, alih-alih mendorong konfigurasi Anda langsung ke file konfigurasi OpenVpn utama (... dan, karenanya, berikan konfigurasi tersebut kepada SEMUA pengguna Anda), Anda dapat mengimplementasikan konfigurasi per-pengguna . Anda dapat melakukan ini dengan:

--client-config-dir dir
  Specify a directory dir for custom client config files. After a connecting client 
  has been authenticated, OpenVPN will look in this directory for a file having the 
  same name as the client's X509 common name. If a matching file exists, it will be
  opened and parsed for client-specific configuration options. If no matching file is
  found, OpenVPN will instead try to open and parse a default file called "DEFAULT", 
  which may be provided but is not required. Note that the configuration files must 
  be readable by the OpenVPN process after it has dropped it's root privileges.
  This file can specify a fixed IP address for a given client using --ifconfig-push, as 
  well as fixed subnets owned by the client using --iroute.
  One of the useful properties of this option is that it allows client configuration 
  files to be conveniently created, edited, or removed while the server is live, without 
  needing to restart the server.
  The following options are legal in a client-specific context: --push, --push-reset, 
  --iroute, --ifconfig-push, and --config.

Jadi, untuk konfigurasi utama, Anda harus menghapus :

  [**** to be removed from the main config***]
  push "dhcp-option DNS 8.8.8.8"
  push "dhcp-option DNS 8.8.4.4"

dan tambahkan referensi ke direktori / etc / openvpn / userconf (sebagai contoh. Jangan ragu untuk memilih apa pun yang Anda suka):

 [**** to be ADDED to the main config***]
 client-config-dir /etc/openvpn/userconf

Kemudian, dalam direktori userconf tersebut, buat satu file untuk masing-masing pengguna yang ingin Anda berikan DNS tersebut, termasuk dalam file tersebut dua baris yang dihapus di atas.

Tentunya Anda bebas untuk menyempurnakan konfigurasi openvpn untuk setiap pengguna, tidak membatasi kustomisasi pada dua baris di atas.

Sebagai catatan akhir, Anda mungkin tertarik pada parameter ccd-eksklusif juga.

Damiano Verzulli
sumber
Terima kasih atas upaya Damiano, tetapi saya khawatir jawaban yang benar adalah bahwa server DNS adaptor TAP harus diubah, karena mengubah properti IPv4 koneksi Internet ke server DNS kustom tidak membantu ketika terhubung ke server OpenVPN yang mendorong server DNS. Dengan cara ini tidak diperlukan untuk menghapus apa pun dari konfigurasi server, tetapi hanya mengedit properti IPv4 dari adapter TAP mesin Windows.
Dimi
@Dimi: sebenarnya yang solusi jauh lebih terbatas daripada Anda membuatnya tampak. Karena koneksi VPN yang berbeda menggunakan server DNS yang berbeda dan urutan pembuatan tautan akan menentukan adaptor TAP mana yang akan digunakan, saya tidak dapat melakukan prakonfigurasi adaptor TAP untuk menggunakan set DNS tertentu, karena DNS yang saya konfigurasi mungkin bahkan tidak berlaku untuk koneksi yang dibuat menggunakan adaptor TAP tertentu. Singkatnya, solusi Anda hanya berfungsi jika ada tetapi koneksi VPN tunggal selalu dibuat melalui adaptor TAP yang sama.
0xC0000022L
1

Masalah saya tidak persis sama, tetapi gejalanya cukup mirip untuk pertanyaan ini muncul di hasil pencarian, jadi kalau-kalau ada orang lain di sini untuk alasan yang sama:

Saya menggunakan Tunnelblick , sebuah GUI OpenVPN untuk Mac OS. Server OpenVPN saya tidak disetel untuk mendorong opsi DHCP atau DNS apa pun, tetapi klien masih menggunakan server DNS melalui VPN, bukan server DNS lokal non-VPN yang ingin saya gunakan.

Solusinya adalah masuk ke Tunnelblick's Configurations → tab Settings dan ubah Set DNS / WINS ke Don't set nameserver .

Aldaviva
sumber
0

Terima kasih untuk @aldaviva, ini berfungsi pada macOS 10.11 saya.

Lampirkan tangkapan layar saya.

masukkan deskripsi gambar di sini

Chu-Saing Lai
sumber