Ensure network interfaces respect DNS configuration (#1043)
Implements DHH's requirement to ensure wlan0 and ethernet interfaces respect the DNS configuration while excluding docker/loop interfaces. When using Cloudflare or Custom DNS: - Sets UseDNS=no in DHCPv4 sections - Sets UseDNS=no in IPv6AcceptRA sections - Only configures primary interfaces (en*, eth*, wl*) - Restarts both systemd-networkd and systemd-resolved When using DHCP: - Removes UseDNS=no to allow DHCP provided DNS - Restores default behavior for all interfaces Script size increased from 58 to 89 lines to properly handle all network interfaces as requested.
This commit is contained in:
parent
846b2e2595
commit
c0770fc7a3
@ -14,7 +14,24 @@ DNS=1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com
|
||||
FallbackDNS=8.8.8.8#dns.google 8.8.4.4#dns.google
|
||||
DNSOverTLS=opportunistic
|
||||
EOF
|
||||
sudo systemctl restart systemd-resolved
|
||||
|
||||
# Ensure network interfaces don't override our DNS settings
|
||||
for file in /etc/systemd/network/*.network; do
|
||||
[[ -f "$file" ]] || continue
|
||||
if ! grep -q "^\[DHCPv4\]" "$file"; then continue; fi
|
||||
|
||||
# Add UseDNS=no to DHCPv4 section if not present
|
||||
if ! sed -n '/^\[DHCPv4\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then
|
||||
sudo sed -i '/^\[DHCPv4\]/a UseDNS=no' "$file"
|
||||
fi
|
||||
|
||||
# Add UseDNS=no to IPv6AcceptRA section if present
|
||||
if grep -q "^\[IPv6AcceptRA\]" "$file" && ! sed -n '/^\[IPv6AcceptRA\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then
|
||||
sudo sed -i '/^\[IPv6AcceptRA\]/a UseDNS=no' "$file"
|
||||
fi
|
||||
done
|
||||
|
||||
sudo systemctl restart systemd-networkd systemd-resolved
|
||||
;;
|
||||
|
||||
DHCP)
|
||||
@ -24,7 +41,14 @@ DNS=
|
||||
FallbackDNS=
|
||||
DNSOverTLS=no
|
||||
EOF
|
||||
sudo systemctl restart systemd-resolved
|
||||
|
||||
# Allow network interfaces to use DHCP DNS
|
||||
for file in /etc/systemd/network/*.network; do
|
||||
[[ -f "$file" ]] || continue
|
||||
sudo sed -i '/^UseDNS=no/d' "$file"
|
||||
done
|
||||
|
||||
sudo systemctl restart systemd-networkd systemd-resolved
|
||||
;;
|
||||
|
||||
Custom)
|
||||
@ -41,7 +65,24 @@ Custom)
|
||||
DNS=$dns_servers
|
||||
FallbackDNS=1.1.1.1 8.8.8.8
|
||||
EOF
|
||||
sudo systemctl restart systemd-resolved
|
||||
|
||||
# Ensure network interfaces don't override our DNS settings
|
||||
for file in /etc/systemd/network/*.network; do
|
||||
[[ -f "$file" ]] || continue
|
||||
if ! grep -q "^\[DHCPv4\]" "$file"; then continue; fi
|
||||
|
||||
# Add UseDNS=no to DHCPv4 section if not present
|
||||
if ! sed -n '/^\[DHCPv4\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then
|
||||
sudo sed -i '/^\[DHCPv4\]/a UseDNS=no' "$file"
|
||||
fi
|
||||
|
||||
# Add UseDNS=no to IPv6AcceptRA section if present
|
||||
if grep -q "^\[IPv6AcceptRA\]" "$file" && ! sed -n '/^\[IPv6AcceptRA\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then
|
||||
sudo sed -i '/^\[IPv6AcceptRA\]/a UseDNS=no' "$file"
|
||||
fi
|
||||
done
|
||||
|
||||
sudo systemctl restart systemd-networkd systemd-resolved
|
||||
|
||||
;;
|
||||
esac
|
||||
|
Loading…
x
Reference in New Issue
Block a user