Klien Openvpn, paksa server DNS

9

Konfigurasi Linux Ubuntu kami memang memiliki server DNS (Bind 9).
Dan resolv.confmemiliki

  nameserver 127.0.0.1

Saat menggunakan openvpnklien di Linux itu, nameserver tidak diubah (oleh server VPN) tetapi saya ingin mengaturnya - hanya selama sesi VPN - ke server DNS tertentu x.y.z.t, dengan mengubah konfigurasi klien openvpn.

Kemudian, ketika openvpnsesi berakhir, server nama harus kembali ke 127.0.0.1.

Apakah ada cara "bersih" (yaitu baris dalam file konfigurasi klien openvpn) untuk melakukan itu?

(Catatan: Konfigurasi server VPN tidak dapat diubah)

Dering Ø
sumber

Jawaban:

17

Setelah lebih banyak googling, bisa cari jawabannya - di bawah ini jika bisa membantu seseorang.

  • instal resolvconf yang dapat menyimpan dan mengembalikan resolv.conffile konfigurasi
  • tambahkan skrip untuk dijalankan oleh openvpn , di /usr/share/openvpn, bernama update-resolv-conf. Script menentukan apa yang seharusnya menjadi yang baru resolv.conf, dan bagaimana mengembalikannya (lihat tautan di bawah)
  • Menambahkan

garis-garis ini

  script-security 2
  up /usr/share/openvpn/update-resolv-conf
  down /usr/share/openvpn/update-resolv-conf

dalam file konfigurasi klien openvpn.

Baca di wiki ini untuk informasi lebih lanjut.

Dering Ø
sumber
5
Instalasi OpenVPN yang lebih baru menyertakan skrip ini dengan instalasi. Alih-alih mengunduh dan menginstal secara manual di /usr/share/openvpn/update-resolv-conf, Anda dapat menemukannya pada pra-instal di /etc/openvpn/update-resolv-conf.
Nate Lampton
Versi OpenVPN mana yang mulai menyertakan file ini?
lanoxx
1
Sedikit terlambat ke pesta di sini tapi saya menggunakan 2.4.6dan sudah diinstal untuk saya
Roshan Bhumbra
1

Pertimbangkan untuk menggunakan route-up/ route-downskrip pada klien Anda untuk mengubah konfigurasi Anda pada pengaturan koneksi sesuai keinginan Anda. Lihat OpenVPN docs pada perincian tentang cara mengaturnya dan variabel apa yang mungkin Anda gunakan dalam skrip ini.

the-wabbit
sumber
+1, menarik dan bermanfaat. The resolvconf solusi melalui up dan turun (di atas atau di bawah dep. Di Peringkat ..) Namun lebih tepatnya, dan, imo, bersih.
Dering Ø
@ ring0 Saya akan menyarankan menggunakan route-updaripada upmeminimalkan kondisi balapan. Saat upskrip dijalankan, koneksi belum diatur dan Anda tidak memiliki kesempatan untuk meminta resolver jarak jauh yang Anda atur. Jika Anda memulai klien OpenVPN dalam situasi di mana pengaturan koneksi tidak akan selesai, Anda menempatkan resolver Anda ke kondisi yang mungkin tidak berfungsi untuk jangka waktu yang lama. Lihat bagian "Script Order of Execution" di halaman manual OpenVPN untuk detailnya.
the-wabbit
Saya melakukan beberapa tes, dan skrip up dipanggil tepat ketika "Urutan Inisialisasi Selesai" tercapai, bukan sebelumnya. Btw tidak dapat menemukan "rute-turun" pada pria itu.
Dering Ø
1

Ini adalah informasi yang berguna untuk membantu saya memperbaiki masalah ini.

Saya pengguna linux yang melengkung dan apa yang saya lihat adalah bahwa ketika klien Linux digunakan dengan Access Server, yang ini tidak dapat mengubah pengaturan DNS pada klien yang bersangkutan tidak menyelesaikan host karena berdiri pada OPEN VPN Documentation

Saya membuat skrip yang memperbaiki masalah dan dengan beberapa parameter tambahan menangani koneksi openvpn melalui baris perintah.

https://gist.github.com/android10/ee5c3e93dbcf9b7b31e6ee768cbfd477

Berikut adalah perintah utama yang dieksekusi untuk koneksi:

  nohup openvpn --config $OVPN_FILE_PATH --askpass $OVPN_PRIVATE_KEY_FILE_PATH \
  --script-security 2 \
  --setenv PATH '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' \
  --up /etc/openvpn/scripts/update-systemd-resolved \
  --down /etc/openvpn/scripts/update-systemd-resolved \
  --down-pre \
  &>/dev/null &

Umpan balik lebih dari menghargai itu.

Fernando Cejas
sumber
-2

echo "nameserver = wxyz"> /etc/resolv.conf
echo "nameserver = 127.0.0.1" >> /etc/resolv.conf

biarawan
sumber
2
Itu tampaknya tidak tepat (pikirkan tentang jalur pencarian DNS, dan kegigihan server nama VPN), tetapi juga tidak jelas di mana Anda ingin dia meletakkan ini.
Falcon Momot
Harus ada ruang antara 'nameserver' dan IP.
lorenzog