Use the same /etc/resolve.conf in kdump initrd if it's managed manually

Resolves: https://issues.redhat.com/browse/RHEL-11897

Some users may choose to manage /etc/resolve.conf manually [1]
by setting dns=none or use a symbolic link resolve.conf [2].
In this case, network dumping will not work because DNS resolution
fails. Use the same /etc/resolve.conf in kdump initrd to fix this
problem.

[1] https://bugzilla.gnome.org/show_bug.cgi?id=690404
[2] https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/manually-configuring-the-etc-resolv-conf-file_configuring-and-managing-networking

Fixes: 63c3805c ("Set up kdump network by directly copying NM connection profile to initrd")
Reported-by: Curtis Taylor <cutaylor@redhat.com>
Cc: Jie Li <jieli@redhat.com>
Signed-off-by: Coiby Xu <coxu@redhat.com>
Reviewed-by: Dave Young <dyoung@redhat.com>
This commit is contained in:
Coiby Xu 2023-11-07 08:28:59 +08:00
parent 741861164e
commit 0177e24832

View File

@ -563,6 +563,33 @@ kdump_collect_netif_usage() {
fi
}
kdump_install_resolv_conf() {
local _resolv_conf=/etc/resolv.conf _nm_conf_dir=/etc/NetworkManager/conf.d
# Some users may choose to manage /etc/resolve.conf manually [1]
# by setting dns=none or use a symbolic link resolve.conf [2].
# So resolve.conf should be installed to kdump initrd as well. To prevent
# NM frome overwritting the user-configured resolve.conf in kdump initrd,
# also set dns=none for NM.
#
# Note:
# 1. When resolv.conf is managed by systemd-resolved.service, it could also be a
# symbolic link. So exclude this case by teling if systemd-resolved is enabled.
#
# 2. It's harmless to blindly copy /etc/resolve.conf to the initrd because
# by default in initramfs this file will be overwritten by
# NetworkManager. If user manages it via a symbolic link, it's still
# preserved because NM won't touch a symbolic link file.
#
# [1] https://bugzilla.gnome.org/show_bug.cgi?id=690404
# [2] https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/manually-configuring-the-etc-resolv-conf-file_configuring-and-managing-networking
systemctl -q is-enabled systemd-resolved && return 0
inst "$_resolv_conf"
if NetworkManager --print-config | grep -qs "^dns=none"; then
echo "[main]\ndns=none" > "$_nm_conf_dir"/90-dns-none.conf
fi
}
# Setup dracut to bring up network interface that enable
# initramfs accessing giving destination
kdump_install_net() {
@ -575,6 +602,7 @@ kdump_install_net() {
kdump_setup_znet
kdump_install_nm_netif_allowlist "$_netifs"
kdump_install_nic_driver "$_netifs"
kdump_install_resolv_conf
fi
}