systemd-resolved, resolvconf.service, resolvconf dan openresolv. Kenapa, mana dan bagaimana?

12

Saya menggunakan klien VPN yang menambahkan dua server nama /etc/resolv.conf. Semua koneksi saya dikelola oleh Network-Manager.

Saya harus menggunakan klien VPN ini untuk VPN pekerjaan saya, tetapi setelah Ubuntu masuk ke systemd-resolved16.10 saya mengalami masalah dengan koneksi dan DNS saya. Sepertinya systemd-resolvedperubahan /etc/resolv.confkembali ke server nama default karena beberapa alasan yang membuat halaman internal tidak terselesaikan. Aku melihat ke dalam ini lagi dan berakhir mengganti resolvconfdengan openresolv. Itu banyak membantu, tetapi masih systemd-resolvedme-reset /etc/resolv.confsetelah VPN untuk sementara waktu.

Bisa saja karena koneksi sudah habis atau setelah beberapa menit atau kadang-kadang tidak sama sekali. Saya kemudian dinonaktifkan systemd-resolveddan systemd resolvconf.servicedan hanya berjalan openresolv. Tampaknya semuanya bekerja dengan baik.

Namun, ini semua sangat membingungkan. Apakah ada alasan untuk menggunakan systemd-resolveddengan yang lain? Itu diaktifkan di Ubuntu 16.10 jadi saya pikir pasti ada alasan untuk itu tetapi tampaknya menyebabkan pertengkaran /etc/resolv.conf.

Akan lebih bagus jika saya bisa berlari operesolvdan menjelaskan ini. Saya sudah cukup banyak membaca tentang itu tetapi saya masih tidak mengerti mengapa /etc/resolv.confdikelola seperti itu, hanya saja ketika saya menggunakannya systemdsaya tidak bisa menggunakan klien VPN saya.

Kristen
sumber
FWIW resolvconf.service hanya bagaimana systemd mengoperasikan resolvconf. Klien VPN mana yang Anda gunakan? Jika Anda menggunakan systemd-resolved, itu membuat resolv.conf symlink ke /run/systemd/resolve/resolv.conffile pribadi itu . Anda mungkin ingin mencoba memiliki systemd-networkd mengelola koneksi Anda.
pbhj

Jawaban:

1

Saya berhasil mengubah skrip yang menangani item konfigurasi ini di OpenVPN di Ubuntu (diuji pada 18.04). Ini tambalan untuk itu:

--- /etc/openvpn/update-resolv-conf.orig    2019-03-13 19:14:16.163914424 +0400
+++ /etc/openvpn/update-resolv-conf 2019-03-13 19:29:30.380420708 +0400
@@ -15,7 +15,7 @@
 #     foreign_option_3='dhcp-option DOMAIN be.bnc.ch'
 #

-[ -x /sbin/resolvconf ] || exit 0
+[ -x /usr/bin/systemd-resolve ] || exit 0
 [ "$script_type" ] || exit 0
 [ "$dev" ] || exit 0

@@ -43,16 +43,16 @@
        fi
    done
    R=""
-   [ "$SRCHS" ] && R="search $SRCHS
-"
+   for SRCH in $SRCHS ; do
+       R="${R}--set-domain=$SRCH "
+   done
    for NS in $NMSRVRS ; do
-           R="${R}nameserver $NS
-"
+       R="${R}--set-dns=$NS "
    done
-   echo -n "$R" | /sbin/resolvconf -a "${dev}.openvpn"
+   /usr/bin/systemd-resolve -i ${dev} ${R}
    ;;
   down)
-   /sbin/resolvconf -d "${dev}.openvpn"
+   echo "Doing nothing, interface disappears."
    ;;
 esac

Anda perlu menambahkan item berikut ke file konfigurasi OpenVPN Anda:

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

Klien VPN mana yang Anda gunakan? Saya mengalami masalah dengan OpenVPN langsung, tetapi menginstal versi NM dari klien menyelesaikan masalah. Yah, kebanyakan dari mereka, saya tidak bisa mencegah rute didorong, tapi itu masalah yang sama sekali berbeda.

Intinya adalah: klien VPN Anda memiliki tahu tentang bagaimana berinteraksi dengan ide systemd tentang bagaimana mengelola layanan DNS. Saya tidak merekomendasikan ini, tetapi Anda dapat mencoba untuk menonaktifkan layanan resolvd ( systemctl disable systemd-resolved.service) untuk melihat apakah itu meningkatkan hal-hal, tetapi pada akhirnya Anda harus mendapatkan klien yang mengerti bagaimana cara mengirim ke capaian systemd :)

(Kapal systemd berlayar sejak lama, jangan membuka diskusi tentang mengapa beberapa hal dilakukan.)

JayEye
sumber
Masalah ini dapat diatasi dalam pembaruan klien VPN. Itu adalah klien OpenFortiGui untuk pekerjaan saya Fortinet VPN. Jadi Anda benar sekali, klien sekarang telah belajar systemd! :)
Christian
0

Pembaruan untuk klien VPN yang saya gunakan menyelesaikan (pun intended) masalah. Itu adalah klien OpenFortiGui untuk Fortinet VPN.

Kristen
sumber