mirror of
https://github.com/rootzoll/raspiblitz.git
synced 2025-02-28 16:58:03 +01:00
dns setting for Debian 12 using nmcli (#4407)
This commit is contained in:
parent
4719fbd443
commit
e98bb8d3c0
1 changed files with 53 additions and 21 deletions
|
@ -2,9 +2,9 @@
|
|||
|
||||
# command info
|
||||
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then
|
||||
echo "config script to set a the DNS server that should be used"
|
||||
echo "internet.dns.sh [DNS-SERVER|test|off]"
|
||||
exit 1
|
||||
echo "config script to set a the DNS server that should be used"
|
||||
echo "internet.dns.sh [DNS-SERVER|test|off]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 1. parameter
|
||||
|
@ -14,7 +14,7 @@ DNSSERVER="$1"
|
|||
NODIALOG="$2"
|
||||
|
||||
# just if auto reboot is needed after dialog
|
||||
autoreboot=0
|
||||
autoreboot=0
|
||||
|
||||
if [ "${DNSSERVER}" = "off" ]; then
|
||||
# setting DNS address
|
||||
|
@ -22,7 +22,7 @@ if [ "${DNSSERVER}" = "off" ]; then
|
|||
sudo /home/admin/config.scripts/blitz.conf.sh delete "static domain_name_servers" /etc/dhcpcd.conf
|
||||
/home/admin/config.scripts/blitz.conf.sh delete dnsServer
|
||||
echo "# OK - needs reboot to activate"
|
||||
echo ""
|
||||
echo
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
@ -44,39 +44,71 @@ Do you want to set the fixed DNS 1.1.1.1 by Cloudflare (they claim they provide
|
|||
if [ $? -eq 0 ]; then
|
||||
echo "# SETTING 1.1.1.1"
|
||||
DNSSERVER="1.1.1.1"
|
||||
# for IPv6: DNSSERVER="2606:4700:4700::1111"
|
||||
autoreboot=1
|
||||
else
|
||||
echo "# Ignoring DNS-Test fail"
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
|
||||
echo "The DNS server you want to set is: ${DNSSERVER}"
|
||||
|
||||
# checking parameter
|
||||
if [[ $DNSSERVER =~ ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$ ]]; then
|
||||
echo "# OK IPv6"
|
||||
echo "# OK ipv6"
|
||||
DNSTYPE=ipv6
|
||||
elif [[ $DNSSERVER =~ ^([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$ ]]; then
|
||||
echo "# OK IPv4"
|
||||
echo "# OK ipv4"
|
||||
DNSTYPE=ipv4
|
||||
else
|
||||
echo "error='not an IPv4 or IPv6 address'"
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
echo
|
||||
|
||||
dnsconfFile="/etc/dhcpcd.conf"
|
||||
isUbuntu=$(cat /etc/os-release 2>/dev/null | grep -c 'Ubuntu')
|
||||
if [ ${isUbuntu} -gt 0 ]; then
|
||||
echo "# adapting dhcpd.conf path for ubuntu"
|
||||
dnsconfFile="/etc/dhcp/dhcpd.conf"
|
||||
# check if /etc/dhcpcd.conf or /etc/dhcp/dhcpd.conf exists
|
||||
|
||||
if sudo test -f /etc/dhcpcd.conf || sudo test -f /etc/dhcp/dhcpd.conf; then
|
||||
dnsconfFile="/etc/dhcpcd.conf"
|
||||
if grep Ubuntu /etc/os-release; then
|
||||
echo "# adapting dhcpd.conf path for ubuntu"
|
||||
dnsconfFile="/etc/dhcp/dhcpd.conf"
|
||||
fi
|
||||
|
||||
# setting DNS address
|
||||
echo "# Setting DNS server ${DNSSERVER} in ${dnsconfFile} ..."
|
||||
sudo /home/admin/config.scripts/blitz.conf.sh set "static domain_name_servers" "${DNSSERVER}" "${dnsconfFile}"
|
||||
echo "# OK"
|
||||
echo
|
||||
else
|
||||
# Get a list of all active Ethernet and Wi-Fi connections
|
||||
ACTIVE_CONNECTIONS=$(nmcli -t -f TYPE,NAME con show --active | grep -E 'ethernet|wireless' | cut -d: -f2)
|
||||
|
||||
for CON in $ACTIVE_CONNECTIONS; do
|
||||
if [[ -n "$CON" && "$CON" != "-" ]]; then
|
||||
echo "Setting ${DNSTYPE} DNS $DNSSERVER for $CON..."
|
||||
# Set the DNS servers for this connection
|
||||
if sudo nmcli con mod "$CON" $DNSTYPE.dns "$DNSSERVER" &&
|
||||
sudo nmcli con mod "$CON" $DNSTYPE.ignore-auto-dns yes &&
|
||||
sudo nmcli con mod "$CON" $DNSTYPE.method auto; then
|
||||
# if set successfully restart the connection to apply changes
|
||||
sudo nmcli con down "$CON"
|
||||
sudo nmcli con up "$CON"
|
||||
echo "${DNSTYPE} DNS set for $CON."
|
||||
else
|
||||
echo "Error: Failed to set DNS for $CON. It might not be an active connection."
|
||||
fi
|
||||
else
|
||||
echo "Skipping invalid or inactive connection name: $CON"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "DNS settings updated for all active Ethernet and Wi-Fi connections."
|
||||
# show the DNS setting
|
||||
nmcli dev show | grep DNS
|
||||
fi
|
||||
|
||||
# setting DNS address
|
||||
echo "# Setting DNS server in /etc/dhcpcd.conf ..."
|
||||
sudo /home/admin/config.scripts/blitz.conf.sh set "static domain_name_servers" "${DNSSERVER}" /etc/dhcpcd.conf
|
||||
echo "# OK"
|
||||
echo ""
|
||||
|
||||
# make sure entry in raspiblitz.conf exists
|
||||
/home/admin/config.scripts/blitz.conf.sh set dnsServer "${DNSSERVER}"
|
||||
echo "# OK"
|
||||
|
@ -85,4 +117,4 @@ echo ""
|
|||
echo "# DNS Server is set - needs reboot to get active"
|
||||
if [ ${autoreboot} -eq 1 ]; then
|
||||
sudo shutdown -r now
|
||||
fi
|
||||
fi
|
||||
|
|
Loading…
Add table
Reference in a new issue