From da2e79db6c1d72f55b8754ea6c1205cbece74bc9 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 28 Nov 2023 12:16:10 +0100 Subject: [run-virt] Prefer DNS config from latest DHCP runs Prefering SLX_DNS means we use very early DHCP config, which usually contains only one DNS server. Instead, check current resolv.conf first. Closes #3953 --- .../run-virt/data/opt/openslx/scripts/runvirt-start_dhcpd | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/modules/run-virt/data/opt/openslx/scripts/runvirt-start_dhcpd b/core/modules/run-virt/data/opt/openslx/scripts/runvirt-start_dhcpd index 42091584..bed6ac88 100755 --- a/core/modules/run-virt/data/opt/openslx/scripts/runvirt-start_dhcpd +++ b/core/modules/run-virt/data/opt/openslx/scripts/runvirt-start_dhcpd @@ -22,10 +22,14 @@ getips () { getresolvconf() { awk -vattr="$1" '$1 == attr {for (i=2; i<=NF; i++) printf "%s ",$i}' /etc/resolv.conf } -[ -z "${SLX_DNS}" ] && SLX_DNS="$( getresolvconf nameserver )" [ -z "${SLX_NET_DOMAIN}" ] && SLX_NET_DOMAIN="$( getresolvconf domain )" [ -z "${SLX_NET_SEARCH}" ] && SLX_NET_SEARCH="$( getresolvconf search )" -[ -z "${SLX_DNS}" ] && SLX_DNS="8.8.8.8 8.8.4.4" +# Do not use helper here and check (loosely) for IPv4 +declare -a dns +dns=( $( awk '$1 == "nameserver" && $2 ~ "\\..*\\..*\\." {print $2}' /etc/resolv.conf ) ) +[ -z "${dns}" ] && dns=( $SLX_DNS ) +# Fallbacks +[ -z "${dns}" ] && dns=( "8.8.8.8" "8.8.4.4" ) [ -z "${SLX_NET_DOMAIN}" ] && SLX_NET_DOMAIN="$FALLBACK_DOMAIN" [ -z "${SLX_NET_SEARCH}" ] && SLX_NET_SEARCH="$FALLBACK_DOMAIN" # WINS - if not supplied, try to get it from the search base of our ldap config @@ -47,7 +51,7 @@ done [ -z "$NTPSRV" ] && NTPSRV="0.0.0.0" [ -z "${SLX_NET_WINS}" ] && SLX_NET_WINS=$(getips "$SLX_NET_DOMAIN") [ -z "${SLX_NET_WINS}" ] && SLX_NET_WINS="0.0.0.0" -sed "s#%DNSSERVER%#${SLX_DNS}#;s#%DOMAIN%#${SLX_NET_DOMAIN}#;s#%SEARCH%#${SLX_NET_SEARCH}#;s#%WINS%#${SLX_NET_WINS}#;s#%NTPSERVER%#${NTPSRV}#" "${DHCP_NAT_CONF}.template" > "${DHCP_NAT_CONF}.$$" +sed "s#%DNSSERVER%#${dns[*]}#;s#%DOMAIN%#${SLX_NET_DOMAIN}#;s#%SEARCH%#${SLX_NET_SEARCH}#;s#%WINS%#${SLX_NET_WINS}#;s#%NTPSERVER%#${NTPSRV}#" "${DHCP_NAT_CONF}.template" > "${DHCP_NAT_CONF}.$$" # Make sure the primary vm running (we most likely never run more than one at a time anyways) always gets the same ip echo "static_lease $(echo "$MACADDRPREFIX:$MACADDRSUFFIX" | sed 's/%VMID%/01/') 192.168.101.20" >> "${DHCP_NAT_CONF}.$$" -- cgit v1.2.3-55-g7522