Bagaimana cara menonaktifkan systemd-diselesaikan di Ubuntu?

88

Bagaimana saya bisa menonaktifkan systemd-resolved di Ubuntu 17.04?

Menonaktifkannya dengan systemctl disabletidak berfungsi, layanan tampaknya mulai ulang (oleh Networkmanager?)

Bastian Voigt
sumber
10
systemd-diselesaikan tidak hanya besar, itu juga merusak cara kerja resolusi dns dengan tidak selalu berusaha menyelesaikan dalam urutan server dns ditentukan dalam konfigurasi klien. Ketika server tidak menyelesaikan domain, yang berikutnya dalam daftar akan dipindahkan ke atas (Poettering memanggil 'memori'). Lihat utas ini untuk detailnya.
LifeBoy
7
itu juga melewati aturan iptables, yang merupakan ide yang buruk.
Spongman

Jawaban:

152

Metode ini berfungsi pada rilis Ubuntu 17.04 (Zesty), 17.10 (Artful), 18.04 (Bionic), 18.10 (Cosmic) dan 19.04 (Disco):

Nonaktifkan dan hentikan layanan yang diselesaikan sistem:

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved

Kemudian letakkan baris berikut di [main]bagian Anda /etc/NetworkManager/NetworkManager.conf:

dns=default

Hapus symlink /etc/resolv.conf

rm /etc/resolv.conf

Mulai kembali NetworkManager

sudo systemctl restart NetworkManager

Perlu diketahui juga bahwa menonaktifkan systemd-resolvd dapat merusak resolusi nama di VPN untuk beberapa pengguna. Lihat bug ini di launchpad (Terima kasih, Vincent).

Bastian Voigt
sumber
4
ini sepertinya tidak berfungsi di Ubuntu 17.04. Alsi, file konfigurasi adalah /etc/NetworkManager/NetworkManager.conf. Penyelesaian nama terputus saat saya melakukan hal di atas. diselesaikan dengan systemd menyebalkan, sekarang penyelesaian VPN DNS tidak berfungsi dengan baik untuk saya. Kemajuan bug dapat ditemukan di sini: bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624317
Vincent Gerris
5
Saya pikir Anda harus menambahkan jawaban di atas bahwa "apt-get install dnsmasq" harus dilakukan setelah systemd-resolved telah dinonaktifkan.
LifeBoy
5
@ LifeBoy Saya tidak menggunakan dnsmasq. Saya hanya tidak menggunakan server nama lokal, tidak melihat nilai itu.
Bastian Voigt
9
Untuk Ubuntu 18.04, semua yang diperlukan adalah menjalankan perintah sudo systemctl nonaktifkan systemd-resolved.service dan sudo service systemd-resolved stop. Itu berhasil bagi saya.
Daniel Eagle
12
Terima kasih. SystemD merusak Linux, membuatnya dari sesuatu yang dapat diandalkan dan dapat dipahami hingga sesuatu yang bekerja melalui sihir.
Forbesmyester
18

Saya baru-baru ini ditingkatkan ke (k) Ubuntu 17.04 dan saya juga menemukan perubahan ke systemd.

Setup saya cukup khas, saya pikir, karena saya memiliki penyedia DNS di HUB broadband saya dan ini adalah sumber utama informasi saya untuk semua perangkat di jaringan saya (yang saya punya beberapa).

Ada beberapa keindahan dalam systemd, itu tidak semuanya buruk tetapi yang benar-benar buruk adalah dokumentasi, kurangnya komunikasi dari tim Ubuntu dan gung-ho "mari kita ubah saja meskipun sudah rusak untuk mentalitas semua orang".

Solusi bagi saya setelah mencabut sedikit rambut adalah dengan mengedit /etc/systemd/resolved.conf:

[Resolve]
DNS=192.168.1.254   # <-- change to your router address
#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
Domains=lan         # <-- change to your localdomain name (maybe .local)
#LLMNR=yes  <-- I dabbled with this for a while but it doesn't matter
#DNSSEC=no
#Cache=yes
#DNSStubListener=udp

Setelah tidak mengerti mengapa ini tidak berhasil, saya menemukan bahwa apa yang juga diperlukan adalah untuk beralih /etc/resolv.conf ke yang disediakan oleh systemd. Ini bukan kasus dalam instalasi out-of-a-box (untuk alasan yang tidak diketahui oleh saya).

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

Server DNS lokal kemudian tidak digunakan dan semua permintaan DNS dikirim ke HUB saya.

Saya pikir ini adalah solusi yang jauh lebih baik daripada memotong dan memasukkan beberapa solusi lain karena systemd-resolv sekarang adalah default dan seterusnya.

Masalah terkait btw adalah bahwa /etc/nsswitch.conf dikebiri.

Itu harus membaca:

host: file mdns4_minimal dns [NOTFOUND = kembali] menyelesaikan [! UNAVAIL = kembali] dns

Ini adalah konfigurasi yang membingungkan karena [NOTFOUND = kembali] berarti pemrosesan berakhir di sana. Entri setelah itu tidak akan pernah digunakan.

pengguna2427436
sumber
1
Dan kemudian saya harus mengubah alamat router di konfigurasi setiap kali saya terhubung ke WIFI baru? Kau serius? -1
Bastian Voigt
Saya tidak menyadari Anda berkeliaran dengan itu. Jika ya, biarkan item konfigurasi dikomentari. Anda kemudian harus mendapatkan /etc/resolv.conf yang mengatakan: nameserver 8.8.8.8 nameserver 8.8.4.4
user2427436
1
Saya rasa tidak perlu mengedit resolved.conf jika Anda mengatur netplan dengan benar. yaitu, netplan menulis nilai yang benar ke file yang disinkronkan ... PS SYSTEMD SUCKS!
g33kz0r
3

Jika Anda mengalami masalah kebocoran dengan VPN Anda dan tidak dapat menemukan cara mengatur systemd (seperti saya), Anda dapat menghapusnya dengan cara yang dijelaskan dalam jawaban pertama tetapi jangan tambahkan dns=defaultbaris karena akan mengaktifkan nameserver 127.0 .0.1. Untuk mengatur router sebagai dns, buat file "tail" di /etc/resolvconf/resolv.conf.d/ folder Anda dengan menambahkan barisnameserser 192.168.1.1

lakukan ln -sf /var/run/resolved/resolv.conf /etc/resolv.confjika Anda telah mengacaukan file ini.

Yvain
sumber
1
Benarkah? Bagi saya itu berfungsi persis seperti yang dijelaskan dalam jawaban saya. Jelas tidak menggunakan nameserver 127.0.0.1. Saya juga pikir itu sangat tidak berguna untuk hardcode IP server nama Anda dalam file konfigurasi. Setidaknya saya cukup sering berganti jaringan wifi dan setiap wifi memiliki server nama yang berbeda
Bastian Voigt
ya 'default' mengaktifkan 127.0.0.1 sebagai dns
Yvain