#!/bin/bash
green='\033[0;32m'
yellow='\033[0;33m'
plain='\033[0m'
red='\033[0;31m'
green=[${green}OK${plain}] 
yellow=[${yellow}Info${plain}] 
red=[${red}Error${plain}] 

unlock(){
if grep -Eqi "CentOS" /etc/issue || grep -Eq "CentOS" /etc/*-release; then
    yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    yum install bind-utils
    wget --no-check-certificate -O dnsmasq_sniproxy.sh https://raw.githubusercontent.com/myxuchangbin/dnsmasq_sniproxy_install/master/dnsmasq_sniproxy.sh && bash dnsmasq_sniproxy.sh -id
elif grep -Eqi "Debian" /etc/issue || grep -Eq "Debian" /etc/*-release; then
    apt-get update
    apt-get install dnsutils
    wget --no-check-certificate -O dnsmasq_sniproxy.sh https://raw.githubusercontent.com/myxuchangbin/dnsmasq_sniproxy_install/master/dnsmasq_sniproxy.sh && bash dnsmasq_sniproxy.sh -id
elif grep -Eqi "Ubuntu" /etc/issue || grep -Eq "Ubuntu" /etc/*-release; then
    apt-get update
    apt-get install dnsutils
    wget --no-check-certificate -O dnsmasq_sniproxy.sh https://raw.githubusercontent.com/myxuchangbin/dnsmasq_sniproxy_install/master/dnsmasq_sniproxy.sh && bash dnsmasq_sniproxy.sh -id
else
    echo "This script only supports CentOS, Ubuntu and Debian."
    exit 1
fi

if [ $? -eq 0 ]; then
	systemctl enable dnsmasq
	chattr -i /etc/resolv.conf
	
	if [ ! -f '/etc/resolv.conf.bak' ];then
		cp -f /etc/resolv.conf /etc/resolv.conf.bak
	fi
	rm -f /etc/resolv.conf
	echo "nameserver 127.0.0.1" > /etc/resolv.conf
	chattr +i /etc/resolv.conf
	cat > /etc/dnsmasq.d/unlock.conf <<EOF
domain-needed
bogus-priv
no-resolv
no-poll
all-servers
server=8.8.8.8
server=1.1.1.1
server=208.67.222.222
cache-size=2048
local-ttl=60
interface=*
address=/akadns.net/$1
address=/akam.net/$1
address=/akamai.com/$1
address=/akamai.net/$1
address=/akamaiedge.net/$1
address=/akamaihd.net/$1
address=/akamaistream.net/$1
address=/akamaitech.net/$1
address=/akamaitechnologies.com/$1
address=/akamaitechnologies.fr/$1
address=/akamaized.net/$1
address=/edgekey.net/$1
address=/edgesuite.net/$1
address=/srip.net/$1
address=/footprint.net/$1
address=/level3.net/$1
address=/llnwd.net/$1
address=/edgecastcdn.net/$1
address=/cloudfront.net/$1
address=/netflix.com/$1
address=/netflix.net/$1
address=/nflximg.com/$1
address=/nflximg.net/$1
address=/nflxvideo.net/$1
address=/nflxso.net/$1
address=/nflxext.com/$1
address=/hulu.com/$1
address=/huluim.com/$1
address=/hbonow.com/$1
address=/hbogo.com/$1
address=/hbo.com/$1
address=/amazon.com/$1
address=/amazon.co.uk/$1
address=/amazonvideo.com/$1
address=/crackle.com/$1
address=/pandora.com/$1
address=/vudu.com/$1
address=/blinkbox.com/$1
address=/abc.com/$1
address=/fox.com/$1
address=/theplatform.com/$1
address=/nbc.com/$1
address=/nbcuni.com/$1
address=/ip2location.com/$1
address=/pbs.org/$1
address=/warnerbros.com/$1
address=/southpark.cc.com/$1
address=/cbs.com/$1
address=/brightcove.com/$1
address=/cwtv.com/$1
address=/spike.com/$1
address=/go.com/$1
address=/mtv.com/$1
address=/mtvnservices.com/$1
address=/playstation.net/$1
address=/uplynk.com/$1
address=/maxmind.com/$1
address=/disney.com/$1
address=/disneyjunior.com/$1
address=/adobedtm.com/$1
address=/bam.nr-data.net/$1
address=/bamgrid.com/$1
address=/braze.com/$1
address=/cdn.optimizely.com/$1
address=/cdn.registerdisney.go.com/$1
address=/cws.conviva.com/$1
address=/d9.flashtalking.com/$1
address=/disney-plus.net/$1
address=/disney-portal.my.onetrust.com/$1
address=/disney.demdex.net/$1
address=/disney.my.sentry.io/$1
address=/disneyplus.bn5x.net/$1
address=/disneyplus.com/$1
address=/disneyplus.com.ssl.sc.omtrdc.net/$1
address=/disneystreaming.com/$1
address=/dssott.com/$1
address=/execute-api.us-east-1.amazonaws.com/$1
address=/js-agent.newrelic.com/$1
address=/xboxlive.com/$1
address=/lovefilm.com/$1
address=/turner.com/$1
address=/amctv.com/$1
address=/sho.com/$1
address=/mog.com/$1
address=/wdtvlive.com/$1
address=/beinsportsconnect.tv/$1
address=/beinsportsconnect.net/$1
address=/fig.bbc.co.uk/$1
address=/open.live.bbc.co.uk/$1
address=/sa.bbc.co.uk/$1
address=/www.bbc.co.uk/$1
address=/crunchyroll.com/$1
address=/ifconfig.co/$1
address=/omtrdc.net/$1
address=/sling.com/$1
address=/movetv.com/$1
address=/happyon.jp/$1
address=/abema.tv/$1
address=/hulu.jp/$1
address=/optus.com.au/$1
address=/optusnet.com.au/$1
address=/gamer.com.tw/$1
address=/bahamut.com.tw/$1
address=/hinet.net/$1
EOF

    systemctl restart dnsmasq
    echo -e "${green} dnsmasq启动成功"
    echo ""
    echo -e "${yellow} 系统当前DNS(显示为127.0.0.1说明成功)"
    echo "---------------------"
    cat /etc/resolv.conf
    echo ""
    echo -e "${yellow} DNS备份文件 /etc/resolv.conf.bak"
    echo "---------------------"
    cat /etc/resolv.conf.bak
    echo ""
    echo -e "${yellow} 建议把系统默认DNS添加到/etc/dnsmasq.d/unlock.conf文件中"
else
    echo -e "${red} dnsmasq安装失败, 请检查仓库状况"
fi
}

re_dns(){
if [ -f '/etc/resolv.conf.bak' ];then
	echo -e "${yellow} 检测到DNS备份文件,从备份文件恢复系统DNS设置..."
	chattr -i /etc/resolv.conf
	rm -f /etc/resolv.conf
	cp -f /etc/resolv.conf.bak /etc/resolv.conf
else
	echo -e "${yellow} 没有备份DNS文件,使用通用DNS"
	chattr -i /etc/resolv.conf
	cat > /etc/resolv.conf <<EOF
nameserver 8.8.8.8
nameserver 1.1.1.1
EOF
fi
	echo -e "${yellow} 禁用dnsmasq服务..."
	systemctl stop dnsmasq
	systemctl disable dnsmasq
	echo -e "${green} 完成,查看当前系统DNS(不是127.0.0.1说明成功)"
	echo "---------------------"
	cat /etc/resolv.conf
}

case "$1" in
"")
echo -e "${yellow} 当前系统DNS"
echo "---------------------"
cat /etc/resolv.conf
;;

"r")
re_dns
;;

#else
*)
unlock $1
;;
esac
Footer
© 2023 GitHub, Inc.