-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdns-configure.sh
46 lines (40 loc) · 1.43 KB
/
dns-configure.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/bin/bash
# Script Name: dns-configure.sh
# Author: MoeByte
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root."
exit 1
fi
# Check if curl is installed
if ! command -v curl &> /dev/null; then
echo "curl not found, installing..."
apt update && apt install -y curl
fi
ipv4=$(curl -4 ip.sb 2>/dev/null)
ipv6=$(curl -6 ip.sb 2>/dev/null)
# Set DNS servers based on IP location
if curl -m 10 -s https://ipapi.co/json | grep -q 'China'; then
echo "IP address is in China."
dns_servers=("119.29.29.29" "223.5.5.5" "2402:4e00::" "2400:3200::1")
else
echo "IP address is not in China."
dns_servers=("8.8.8.8" "1.0.0.1" "2001:4860:4860::8888" "2606:4700:4700::1111")
fi
# Set DNS based on available IP versions
if [ -n "$ipv4" ] && [ -n "$ipv6" ]; then
echo "Both IPv4 and IPv6 are available."
echo "nameserver ${dns_servers[0]}" > /etc/resolv.conf
echo "nameserver ${dns_servers[1]}" >> /etc/resolv.conf
echo "nameserver ${dns_servers[2]}" >> /etc/resolv.conf
echo "nameserver ${dns_servers[3]}" >> /etc/resolv.conf
elif [ -n "$ipv4" ]; then
echo "Only IPv4 is available."
echo "nameserver ${dns_servers[0]}" > /etc/resolv.conf
echo "nameserver ${dns_servers[1]}" >> /etc/resolv.conf
elif [ -n "$ipv6" ]; then
echo "Only IPv6 is available."
echo "nameserver ${dns_servers[2]}" > /etc/resolv.conf
echo "nameserver ${dns_servers[3]}" >> /etc/resolv.conf
else
echo "Neither IPv4 nor IPv6 is available."
fi