diff --git a/scripts/menu.sh b/scripts/menu.sh index 8ffa8e72..5d76771a 100644 --- a/scripts/menu.sh +++ b/scripts/menu.sh @@ -694,7 +694,7 @@ setport() { #端口设置 esac } setdns() { #DNS详细设置 - [ -z "$dns_nameserver" ] && dns_nameserver='180.184.1.1, 1.2.4.8' + [ -z "$dns_nameserver" ] && dns_nameserver='223.5.5.5, 1.2.4.8' [ -z "$dns_fallback" ] && dns_fallback="1.1.1.1, 8.8.8.8" [ -z "$dns_resolver" ] && dns_resolver="223.5.5.5, 2400:3200::1" [ -z "$hosts_opt" ] && hosts_opt=已启用 @@ -811,7 +811,7 @@ setdns() { #DNS详细设置 openssldir="$(openssl version -d 2>&1 | awk -F '"' '{print $2}')" if [ -s "$openssldir/certs/ca-certificates.crt" ] || [ -s "/etc/ssl/certs/ca-certificates.crt" ] || echo "$crashcore" | grep -qE 'meta|singbox'; then - dns_nameserver='https://doh.360.cn/dns-query, https://dns.alidns.com/dns-query, https://doh.pub/dns-query' + dns_nameserver='https://dns.alidns.com/dns-query, https://doh.pub/dns-query' dns_fallback='https://cloudflare-dns.com/dns-query, https://dns.google/dns-query, https://doh.opendns.com/dns-query' dns_resolver='https://223.5.5.5/dns-query, 2400:3200::1' setconfig dns_nameserver "'$dns_nameserver'" diff --git a/scripts/start.sh b/scripts/start.sh index 5ce326e7..bc6eae0c 100644 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -51,7 +51,7 @@ getconfig() { #读取配置及全局变量 ckcmd iptables && iptables -h | grep -q '\-w' && iptable='iptables -w' || iptable=iptables ckcmd ip6tables && ip6tables -h | grep -q '\-w' && ip6table='ip6tables -w' || ip6table=ip6tables #默认dns - [ -z "$dns_nameserver" ] && dns_nameserver='180.184.1.1, 1.2.4.8' + [ -z "$dns_nameserver" ] && dns_nameserver='223.5.5.5, 1.2.4.8' [ -z "$dns_fallback" ] && dns_fallback="1.1.1.1, 8.8.8.8" [ -z "$dns_resolver" ] && dns_resolver="223.5.5.5, 2400:3200::1" #自动生成ua @@ -182,7 +182,7 @@ croncmd() { #定时任务工具 } cronset() { #定时任务设置 # 参数1代表要移除的关键字,参数2代表要添加的任务语句 - tmpcron="$TMPDIR"/cron_$USER + tmpcron="$TMPDIR"/cron_tmp croncmd -l >"$tmpcron" 2>/dev/null sed -i "/$1/d" "$tmpcron" sed -i '/^$/d' "$tmpcron" @@ -250,6 +250,59 @@ getlanip() { #获取局域网host地址 [ -z "$reserve_ipv4" ] && reserve_ipv4="0.0.0.0/8 10.0.0.0/8 127.0.0.0/8 100.64.0.0/10 169.254.0.0/16 172.16.0.0/12 192.168.0.0/16 224.0.0.0/4 240.0.0.0/4" [ -z "$reserve_ipv6" ] && reserve_ipv6="::/128 ::1/128 ::ffff:0:0/96 64:ff9b::/96 100::/64 2001::/32 2001:20::/28 2001:db8::/32 2002::/16 fe80::/10 ff00::/8" } +parse_singbox_dns() { #singbox的dns分割工具 + first_dns=$(echo "$1" | cut -d',' -f1 | cut -d' ' -f1) + type="" + server="" + port="" + case "$first_dns" in + *://*) + type="${first_dns%%://*}" + tmp="${first_dns#*://}" + ;; + *) + type="udp" + tmp="$first_dns" + ;; + esac + case "$tmp" in + \[*\]*) + server="${tmp%%]*}" + server="${server#[}" + port="${tmp#*\]}" + port="${port#:}" + ;; + *) + server="${tmp%%[:/]*}" + port="${tmp#*:}" + [ "$port" = "$tmp" ] && port="" + ;; + esac + if [ -z "$port" ]; then + case "$type" in + udp|tcp) port=53 ;; + doh|https) port=443 ;; + dot|tls) port=853 ;; + *) port=53 ;; + esac + fi + # 输出 + echo '"type": "'"$type"'", "server": "'"$server"'", "server_port": '"$port"',' +} +urlencode() { + local i c hex + LC_ALL=C + for i in $(printf '%s' "$1" | od -An -tx1); do + case "$i" in + 2d|2e|5f|7e|3[0-9]|4[1-9A-Fa-f]|5[A-Fa-f]|6[1-9A-Fa-f]|7[0-9A-Ea-e]) + printf "\\$(printf '%03o' "0x$i")" + ;; + *) + printf '%%%02X' "0x$i" + ;; + esac + done +} #配置文件相关 check_clash_config() { #检查clash配置文件 #检测节点或providers @@ -336,8 +389,8 @@ get_core_config() { #下载内核配置文件 #如果传来的是Url链接则合成Https链接,否则直接使用Https链接 if [ -z "$Https" ]; then #Urlencord转码处理保留字符 - Url=$(echo $Url | sed 's/;/\%3B/g; s|/|\%2F|g; s/?/\%3F/g; s/:/\%3A/g; s/@/\%40/g; s/=/\%3D/g; s/&/\%26/g') - Https="${Server}/sub?target=${target}&${Server_ua}=${user_agent}&insert=true&new_name=true&scv=true&udp=true&exclude=${exclude}&include=${include}&url=${Url}&config=${Config}" + urlencodeUrl="exclude=$(urlencode "$exclude")&include=$(urlencode "$include")&url=$(urlencode "$Url")&config=$(urlencode "$Config")" + Https="${Server}/sub?target=${target}&${Server_ua}=${user_agent}&insert=true&new_name=true&scv=true&udp=true&${urlencodeUrl}" url_type=true fi #输出 @@ -425,7 +478,7 @@ dns: ipv6: $dns_v6 default-nameserver: [ $dns_resolver ] enhanced-mode: fake-ip - fake-ip-range: 28.0.0.1/8 + fake-ip-range: 28.0.0.0/8 fake-ip-range6: fc00::/16 fake-ip-filter: EOF @@ -438,7 +491,7 @@ EOF [ "$dns_mod" = "mix" ] && echo ' - "rule-set:cn"' >>"$TMPDIR"/dns.yaml #mix模式和route模式插入分流设置 if [ "$dns_mod" = "mix" ] || [ "$dns_mod" = "route" ]; then - [ "$dns_protect" = "OFF" ] && dns_final="$dns_fallback" || dns_final="$dns_nameserver" + [ "$dns_protect" != "OFF" ] && dns_final="$dns_fallback" || dns_final="$dns_nameserver" cat >>"$TMPDIR"/dns.yaml <>"$TMPDIR"/jsons/tun.json </dev/null #redir $iptable -t nat -D PREROUTING -p tcp $ports -j shellcrash 2>/dev/null - $iptable -t nat -D PREROUTING -p tcp -d 28.0.0.1/8 -j shellcrash 2>/dev/null + $iptable -t nat -D PREROUTING -p tcp -d 28.0.0.0/8 -j shellcrash 2>/dev/null $iptable -t nat -D OUTPUT -p tcp $ports -j shellcrash_out 2>/dev/null - $iptable -t nat -D OUTPUT -p tcp -d 28.0.0.1/8 -j shellcrash_out 2>/dev/null + $iptable -t nat -D OUTPUT -p tcp -d 28.0.0.0/8 -j shellcrash_out 2>/dev/null #vm_dns $iptable -t nat -D PREROUTING -p tcp --dport 53 -j shellcrash_vm_dns 2>/dev/null $iptable -t nat -D PREROUTING -p udp --dport 53 -j shellcrash_vm_dns 2>/dev/null #vm_redir $iptable -t nat -D PREROUTING -p tcp $ports -j shellcrash_vm 2>/dev/null - $iptable -t nat -D PREROUTING -p tcp -d 28.0.0.1/8 -j shellcrash_vm 2>/dev/null + $iptable -t nat -D PREROUTING -p tcp -d 28.0.0.0/8 -j shellcrash_vm 2>/dev/null #TPROXY&tun $iptable -t mangle -D PREROUTING -p tcp $ports -j shellcrash_mark 2>/dev/null $iptable -t mangle -D PREROUTING -p udp $ports -j shellcrash_mark 2>/dev/null - $iptable -t mangle -D PREROUTING -p tcp -d 28.0.0.1/8 -j shellcrash_mark 2>/dev/null - $iptable -t mangle -D PREROUTING -p udp -d 28.0.0.1/8 -j shellcrash_mark 2>/dev/null + $iptable -t mangle -D PREROUTING -p tcp -d 28.0.0.0/8 -j shellcrash_mark 2>/dev/null + $iptable -t mangle -D PREROUTING -p udp -d 28.0.0.0/8 -j shellcrash_mark 2>/dev/null $iptable -t mangle -D OUTPUT -p tcp $ports -j shellcrash_mark_out 2>/dev/null $iptable -t mangle -D OUTPUT -p udp $ports -j shellcrash_mark_out 2>/dev/null - $iptable -t mangle -D OUTPUT -p tcp -d 28.0.0.1/8 -j shellcrash_mark_out 2>/dev/null - $iptable -t mangle -D OUTPUT -p udp -d 28.0.0.1/8 -j shellcrash_mark_out 2>/dev/null + $iptable -t mangle -D OUTPUT -p tcp -d 28.0.0.0/8 -j shellcrash_mark_out 2>/dev/null + $iptable -t mangle -D OUTPUT -p udp -d 28.0.0.0/8 -j shellcrash_mark_out 2>/dev/null $iptable -t mangle -D PREROUTING -m mark --mark $fwmark -p tcp -j TPROXY --on-port $tproxy_port 2>/dev/null $iptable -t mangle -D PREROUTING -m mark --mark $fwmark -p udp -j TPROXY --on-port $tproxy_port 2>/dev/null #tun @@ -1729,10 +1769,7 @@ makehtml() { #生成面板跳转文件

您还未安装本地面板

请在脚本更新功能中(9-4)安装
或者使用在线面板:

请复制当前地址/ui(不包括)前面的内容,填入url位置即可连接

- Meta XD面板(推荐)
- zashboard面板
- Meta YACD面板(推荐)
- Clash YACD面板
+ Zashboard面板(推荐)

如已安装,请使用Ctrl+F5强制刷新此页面!
@@ -1764,7 +1801,7 @@ EOF compare "$TMPDIR"/shellcrash_pac "$BINDIR"/ui/pac [ "$?" = 0 ] && rm -rf "$TMPDIR"/shellcrash_pac || mv -f "$TMPDIR"/shellcrash_pac "$BINDIR"/ui/pac } -core_check() { #检查及下载内核文件 +core_check() { #检查及下载内核文件 [ -n "$(tar --help 2>&1 | grep -o 'no-same-owner')" ] && tar_para='--no-same-owner' #tar命令兼容 [ -n "$(find --help 2>&1 | grep -o size)" ] && find_para=' -size +2000' #find命令兼容 tar_core() { diff --git a/scripts/webget.sh b/scripts/webget.sh index 1824f763..8ea527f4 100644 --- a/scripts/webget.sh +++ b/scripts/webget.sh @@ -452,7 +452,7 @@ EOF "url": "${2}", "path": "./providers/${1}.yaml", "user_agent": "clash.meta;mihomo", - "update_interval": "24h", + "update_interval": "12h", EOF fi #通用部分生成 @@ -2352,7 +2352,7 @@ userguide(){ fi #设置加密DNS if [ -s $openssldir/certs/ca-certificates.crt ];then - dns_nameserver='https://doh.360.cn/dns-query, https://dns.alidns.com/dns-query, https://doh.pub/dns-query' + dns_nameserver='https://dns.alidns.com/dns-query, https://doh.pub/dns-query' dns_fallback='https://cloudflare-dns.com/dns-query, https://dns.google/dns-query, https://doh.opendns.com/dns-query' dns_resolver='https://223.5.5.5/dns-query, 2400:3200::1' setconfig dns_nameserver "'$dns_nameserver'"