~工具菜单新增AX6S等设备的tun模块修复功能
~小闪存模式增加自定义目录功能
~优化重写本机代理菜单
~将172.16/12网段默认加入透明路由
~将10.0/8默认路由网段改为10.0/12
~优化一键设置加密DNS功能,修改根证书安装更新时的描述
~修复部分网络环境下在线生成配置文件反复失败的问题
~修复部分场景下tar解压失败的问题
~修复部分情况下修改默认端口失败的问题
~修复因Tun模块修复功能导致的WiFi信号减弱的问题
~修复"cannot find device utun"报错问题
~修复ntp服务在前台同步时导致clash无法正常启动的问题
This commit is contained in:
juewuy 2023-03-17 23:32:30 +08:00
parent da4258dd34
commit 7613aa7ba5
9 changed files with 126 additions and 141 deletions

Binary file not shown.

Binary file not shown.

View File

@ -3,4 +3,4 @@ clashpre_v=2022.11.25
clash_v=v1.7.1 clash_v=v1.7.1
meta_v=v1.14.2 meta_v=v1.14.2
GeoIP_v=20230225 GeoIP_v=20230225
versionsh=1.7.1 versionsh=1.7.3

View File

@ -55,7 +55,8 @@ gettar(){
echo ----------------------------------------------- echo -----------------------------------------------
echo 开始解压文件! echo 开始解压文件!
mkdir -p $clashdir > /dev/null mkdir -p $clashdir > /dev/null
tar -zxvf '/tmp/ShellClash.tar.gz' -C $clashdir/ tar -zxf '/tmp/ShellClash.tar.gz' -C $clashdir/
[ $? -ne 0 ] && tar -zxf --no-same-owner '/tmp/ShellClash.tar.gz' -C $clashdir/
if [ $? -ne 0 ];then if [ $? -ne 0 ];then
rm -rf /tmp/ShellClash.tar.gz rm -rf /tmp/ShellClash.tar.gz
$echo "\033[33m文件解压失败\033[0m" $echo "\033[33m文件解压失败\033[0m"

View File

@ -359,7 +359,7 @@ setport(){
elif [ -n "$(echo "|$mix_port|$redir_port|$dns_port|$db_port|" | grep "|$portx|")" ]; then elif [ -n "$(echo "|$mix_port|$redir_port|$dns_port|$db_port|" | grep "|$portx|")" ]; then
echo -e "\033[31m输入错误请不要输入重复的端口\033[0m" echo -e "\033[31m输入错误请不要输入重复的端口\033[0m"
inputport inputport
elif [ -n "$(netstat -ntul |grep :$portx)" ];then elif [ -n "$(netstat -ntul |grep ":$portx ")" ];then
echo -e "\033[31m当前端口已被其他进程占用请重新输入\033[0m" echo -e "\033[31m当前端口已被其他进程占用请重新输入\033[0m"
inputport inputport
else else
@ -376,7 +376,7 @@ setport(){
echo -e " 5 修改面板访问端口: \033[36m$db_port\033[0m" echo -e " 5 修改面板访问端口: \033[36m$db_port\033[0m"
echo -e " 6 设置面板访问密码: \033[36m$secret\033[0m" echo -e " 6 设置面板访问密码: \033[36m$secret\033[0m"
echo -e " 7 修改默认端口过滤: \033[36m$multiport\033[0m" echo -e " 7 修改默认端口过滤: \033[36m$multiport\033[0m"
echo -e " 8 指定本机host地址 \033[36m$host\033[0m" echo -e " 8 自定义本机host地址 \033[36m$host\033[0m"
echo -e " 0 返回上级菜单" echo -e " 0 返回上级菜单"
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
if [ -z "$num" ]; then if [ -z "$num" ]; then
@ -445,8 +445,8 @@ setport(){
setport setport
elif [ "$num" = 8 ]; then elif [ "$num" = 8 ]; then
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[33m此处可以更改脚本内置的局域网设备IP地址\033[0m" echo -e "\033[33m如果你的局域网网段不是192.168.x或127.16.x或10.x开头请务必修改\033[0m"
echo -e "\033[31m设置后如本机host地址有变动请务必手动修改!\033[0m" echo -e "\033[31m设置后如本机host地址有变动请务必重新修改!\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
read -p "请输入自定义host地址(输入0移除自定义host) > " host read -p "请输入自定义host地址(输入0移除自定义host) > " host
if [ "$host" = "0" ];then if [ "$host" = "0" ];then
@ -516,25 +516,18 @@ setdns(){
setdns setdns
elif [ "$num" = 4 ]; then elif [ "$num" = 4 ]; then
$clashdir/start.sh webget /tmp/ssl_test https://doh.pub echooff rediron echo -----------------------------------------------
if [ "$?" = "1" ];then if openssl version >/dev/null 2>&1;then
echo -----------------------------------------------
if openssl version >/dev/null 2>&1;then
echo -e "\033[31m当前设备缺少本地根证书请先安装证书\033[0m"
source $clashdir/getdate.sh
setcrt
else
echo -e "\033[31m当前设备未安装OpenSSL无法启用加密DNSLinux系统请自行搜索安装方式\033[0m"
fi
else
dns_nameserver='https://223.5.5.5/dns-query, https://doh.pub/dns-query, tls://dns.rubyfish.cn:853' dns_nameserver='https://223.5.5.5/dns-query, https://doh.pub/dns-query, tls://dns.rubyfish.cn:853'
dns_fallback='tls://1.0.0.1:853, tls://8.8.4.4:853, https://doh.opendns.com/dns-query' dns_fallback='tls://1.0.0.1:853, tls://8.8.4.4:853, https://doh.opendns.com/dns-query'
setconfig dns_nameserver \'"$dns_nameserver"\' setconfig dns_nameserver \'"$dns_nameserver"\'
setconfig dns_fallback \'"$dns_fallback"\' setconfig dns_fallback \'"$dns_fallback"\'
echo -e "\033[32m设置成功\033[0m" echo -e "\033[32m已设置加密DNS如出现DNS解析问题请尝试重置DNS配置\033[0m"
else
echo -e "\033[31m当前设备未安装OpenSSL无法启用加密DNSLinux系统请自行搜索安装方式\033[0m"
fi fi
rm -rf /tmp/ssl_test rm -rf /tmp/ssl_test
sleep 1 sleep 2
setdns setdns
elif [ "$num" = 5 ]; then elif [ "$num" = 5 ]; then
@ -790,89 +783,45 @@ macfilter(){
fi fi
} }
localproxy(){ localproxy(){
[ -z "$local_proxy" ] && local_proxy='未开启'
[ -z "$local_type" ] && local_type='环境变量'
[ "$local_proxy" = "已开启" ] && proxy_set='禁用' || proxy_set='启用'
[ -w /etc/systemd/system/clash.service -o -w /usr/lib/systemd/system/clash.service -o -x /bin/su ] && local_enh=1 [ -w /etc/systemd/system/clash.service -o -w /usr/lib/systemd/system/clash.service -o -x /bin/su ] && local_enh=1
[ -f /etc/rc.common -a -w /etc/passwd ] && local_enh=1 [ -f /etc/rc.common -a -w /etc/passwd ] && local_enh=1
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[33m当前本机代理配置方式为\033[32m$local_type\033[0m" [ -n "$local_enh" ] && {
echo ----------------------------------------------- [ -n "$(lsmod | grep ^xt_owner)" ] && echo -e " 1 使用\033[32miptables增强模式\033[0m配置(支持docker,推荐!)"
echo -e " 1 \033[36m$proxy_set本机代理\033[0m" ckcmd nft && echo -e " 2 使用\033[32mnftables增强模式\033[0m配置(支持docker,推荐!)"
echo -e " 2 使用\033[32m环境变量\033[0m方式配置(部分应用可能无法使用)" }
[ -n "$(lsmod | grep ^xt_owner)" ] && echo -e " 3 使用\033[32miptables增强模式\033[0m配置(支持docker)" echo -e " 3 使用\033[33m环境变量\033[0m方式配置(部分应用可能无法使用,不推荐!)"
ckcmd nft && echo -e " 4 使用\033[32mnftables增强模式\033[0m配置(支持docker)"
echo -e " 0 返回上级菜单" echo -e " 0 返回上级菜单"
echo ----------------------------------------------- echo -----------------------------------------------
read -p "请输入对应数字 > " num read -p "请选择本机代理方式 > " num
if [ -z "$num" ]; then case "$num" in
errornum 1)
elif [ "$num" = 0 ]; then
i=
elif [ "$num" = 1 ]; then
echo -----------------------------------------------
if [ "$local_proxy" = "未开启" ]; then
if [ -n "$authentication" ] && [ "$authentication" != "未设置" ] ;then
echo -e "\033[32m检测到您已经设置了Http/Sock5代理密码请先取消密码\033[0m"
sleep 1
setport
localproxy
else
local_proxy=已开启
setconfig local_proxy $local_proxy
setconfig local_type $local_type
echo -e "\033[32m已经成功使用$local_type方式配置本机代理~\033[0m"
if [ "$local_type" = "环境变量" ];then
$clashdir/start.sh set_proxy $mix_port $db_port
echo -e "\033[36m如未生效请重新启动终端或重新连接SSH\033[0m"
else
echo -e "\033[36m请重新启动clash服务\033[0m"
fi
sleep 1
fi
else
local_proxy=未开启
setconfig local_proxy $local_proxy
setconfig local_type
sed -i '/user shellclash/d' /etc/init.d/clash 2>/dev/null
$clashdir/start.sh stop
echo -e "\033[33m已经停用本机代理规则并停止clash服务\033[0m"
[ "$local_type" = "环境变量" ] && echo -e "\033[36m如未生效请重新启动终端或重新连接SSH\033[0m" && sleep 1
fi
elif [ "$num" = 2 ]; then
local_type="环境变量"
local_proxy=已开启
setconfig local_proxy $local_proxy
setconfig local_type $local_type
localproxy
elif [ "$num" = 3 ]; then
if [ -n "$local_enh" ];then
local_type="iptables增强模式" local_type="iptables增强模式"
local_proxy=已开启 local_proxy=已开启
setconfig local_proxy $local_proxy ;;
setconfig local_type $local_type 2)
else
echo -e "\033[31m当前设备无法使用iptables增强模式\033[0m"
fi
sleep 1
localproxy
elif [ "$num" = 4 ]; then
if [ -n "$local_enh" ];then
local_type="nftables增强模式" local_type="nftables增强模式"
local_proxy=已开启 local_proxy=已开启
setconfig local_proxy $local_proxy ;;
setconfig local_type $local_type 3)
else if [ -z "$authentication" -o "$authentication" = "未设置" ];then
echo -e "\033[31m当前设备无法使用nftables增强模式\033[0m" local_type="环境变量"
fi echo -e "\033[33m注意请重启clash后手动输入以下命令使配置生效\033[0m"
sleep 1 echo -e "【\033[32m source /etc/profile > /dev/null \033[0m】"
localproxy local_proxy=已开启
else else
errornum echo -e "\033[32m检测到您已经设置了Http/Sock5代理密码请先取消密码\033[0m"
fi setport
localproxy
fi
sleep 1
;;
*)
errornum
;;
esac
setconfig local_proxy $local_proxy
setconfig local_type $local_type
} }
setboot(){ setboot(){
[ -z "$start_old" ] && start_old=未开启 [ -z "$start_old" ] && start_old=未开启
@ -888,7 +837,7 @@ setboot(){
echo -e " 4 启用小闪存模式: \033[36m$mini_clash\033[0m ————用于闪存空间不足的设备" echo -e " 4 启用小闪存模式: \033[36m$mini_clash\033[0m ————用于闪存空间不足的设备"
[ "$bindir" != "$clashdir" ] && echo -e " 5 设置小闪存目录: \033[36m$bindir\033[0m" [ "$bindir" != "$clashdir" ] && echo -e " 5 设置小闪存目录: \033[36m$bindir\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e " 0 \033[0m退出脚本\033[0m" echo -e " 0 \033[0m返回上级菜单\033[0m"
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
echo ----------------------------------------------- echo -----------------------------------------------
case "$num" in case "$num" in
@ -975,29 +924,41 @@ setboot(){
5) 5)
echo -e "\033[33m如设置到内存则每次开机后都自动重新下载相关文件\033[0m" echo -e "\033[33m如设置到内存则每次开机后都自动重新下载相关文件\033[0m"
echo -e "\033[33m请确保安装源可用裸连否则会导致启动失败\033[0m" echo -e "\033[33m请确保安装源可用裸连否则会导致启动失败\033[0m"
echo " 1 使用内存" echo " 1 使用内存(/tmp)"
echo " 2 选择U盘目录" echo " 2 选择U盘目录"
echo " 3 自定义目录"
read -p "请输入相应数字 > " num read -p "请输入相应数字 > " num
case "$num" in case "$num" in
1) 1)
bindir="/tmp/clash_$USER" ;; bindir="/tmp/clash_$USER" ;;
2) 2)
set_usb_dir(){ set_usb_dir(){
$echo "请选择安装目录" echo "请选择安装目录"
du -hL /mnt | awk '{print " "NR" "$2" "$1}' du -hL /mnt | awk '{print " "NR" "$2" "$1}'
read -p "请输入相应数字 > " num read -p "请输入相应数字 > " num
bindir=$(du -hL /mnt | awk '{print $2}' | sed -n "$num"p) bindir=$(du -hL /mnt | awk '{print $2}' | sed -n "$num"p)
if [ -z "$bindir" ];then if [ -z "$bindir" ];then
$echo "\033[31m输入错误请重新设置\033[0m" echo "\033[31m输入错误请重新设置\033[0m"
set_usb_dir set_usb_dir
fi fi
} }
set_usb_dir set_usb_dir
;; ;;
3)
input_dir(){
read -p "请输入自定义目录 > " bindir
if [ ! -d "$bindir" ];then
echo "\033[31m输入错误请重新设置\033[0m"
input_dir
fi
}
input_dir
;;
*) *)
errornum errornum
;; ;;
esac esac
setconfig bindir $bindir
setboot setboot
;; ;;
*) *)
@ -1181,6 +1142,7 @@ clashcfg(){
[ -z "$dns_mod" ] && dns_mod=redir_host [ -z "$dns_mod" ] && dns_mod=redir_host
[ -z "$dns_over" ] && dns_over=已开启 [ -z "$dns_over" ] && dns_over=已开启
[ -z "$cn_ip_route" ] && cn_ip_route=未开启 [ -z "$cn_ip_route" ] && cn_ip_route=未开启
[ -z "$local_proxy" ] && local_proxy=未开启
[ -z "$quic_rj" ] && quic_rj=未开启 [ -z "$quic_rj" ] && quic_rj=未开启
[ -z "$(cat $clashdir/mac)" ] && mac_return=未开启 || mac_return=已启用 [ -z "$(cat $clashdir/mac)" ] && mac_return=未开启 || mac_return=已启用
# #
@ -1256,7 +1218,15 @@ clashcfg(){
clashcfg clashcfg
elif [ "$num" = 6 ]; then elif [ "$num" = 6 ]; then
localproxy if [ "$local_proxy" = "未开启" ]; then
localproxy
else
local_proxy=未开启
setconfig local_proxy $local_proxy
setconfig local_type
sed -i '/user shellclash/d' /etc/init.d/clash 2>/dev/null
echo -e "\033[33m已经停用本机代理规则,请尽快重启clash服务\033[0m"
fi
sleep 1 sleep 1
clashcfg clashcfg
@ -1563,6 +1533,7 @@ tools(){
#获取设置默认显示 #获取设置默认显示
[ -n "$(cat /etc/crontabs/root 2>&1| grep otapredownload)" ] && mi_update=禁用 || mi_update=启用 [ -n "$(cat /etc/crontabs/root 2>&1| grep otapredownload)" ] && mi_update=禁用 || mi_update=启用
[ "$mi_autoSSH" = "已启用" ] && mi_autoSSH_type=32m已启用 || mi_autoSSH_type=31m未启用 [ "$mi_autoSSH" = "已启用" ] && mi_autoSSH_type=32m已启用 || mi_autoSSH_type=31m未启用
[ -f $clashdir/tun.ko ] && mi_tunfix=32m已启用 || mi_tunfix=31m未启用
# #
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[30;47m欢迎使用其他工具菜单\033[0m" echo -e "\033[30;47m欢迎使用其他工具菜单\033[0m"
@ -1577,6 +1548,7 @@ tools(){
[ -x /usr/sbin/otapredownload ] && echo -e " 5 \033[33m$mi_update\033[0m小米系统自动更新" [ -x /usr/sbin/otapredownload ] && echo -e " 5 \033[33m$mi_update\033[0m小米系统自动更新"
[ -f /data/clash/misnap_init.sh ] && echo -e " 6 小米设备软固化SSH ———— \033[$mi_autoSSH_type \033[0m" [ -f /data/clash/misnap_init.sh ] && echo -e " 6 小米设备软固化SSH ———— \033[$mi_autoSSH_type \033[0m"
[ -f /etc/config/ddns -a -d "/etc/ddns" ] && echo -e " 7 配置\033[32mDDNS服务\033[0m(需下载相关脚本)" [ -f /etc/config/ddns -a -d "/etc/ddns" ] && echo -e " 7 配置\033[32mDDNS服务\033[0m(需下载相关脚本)"
[ -f /data/clash/misnap_init.sh ] && echo -e " 8 小米设备Tun模块修复 ———— \033[$mi_tunfix \033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e " 0 返回上级菜单" echo -e " 0 返回上级菜单"
echo ----------------------------------------------- echo -----------------------------------------------
@ -1647,6 +1619,35 @@ tools(){
setconfig mi_autoSSH $mi_autoSSH setconfig mi_autoSSH $mi_autoSSH
setconfig mi_autoSSH_pwd $mi_autoSSH_pwd setconfig mi_autoSSH_pwd $mi_autoSSH_pwd
tools tools
elif [ "$num" = 8 ]; then
if [ -f $clashdir/tun.ko ];then
read -p "是否禁用此功能并移除相关补丁?(1/0) > " res
[ "$res" = 1 ] && {
rm -rf $clashdir/tun.ko
echo -e "\033[33m补丁文件已移除请立即重启设备以防止出错\033[0m"
}
elif [ -z "$(modinfo tun)" ];then
echo -e "\033[33m本功能需要修改系统文件可能导致未知的不稳定情况产生\033[0m"
echo -e "\033[33m本功能采集的Tun模块不一定适用于你的设备\033[0m"
read -p "是否继续?(1/0) > " res
if [ "$res" = 1 ];then
tunfixlink="${update_url}/bin/fix/tun.ko"
echo -----------------------------------------------
echo 正在连接服务器获取Tun模块补丁文件…………
$clashdir/start.sh webget /tmp/tun.ko $tunfixlink
if [ "$?" = "0" ];then
mv -f /tmp/tun.ko $clashdir && \
$clashdir/misnap_init.sh tunfix && \
echo -e "\033[32m设置成功请重启clash服务\033[0m"
else
echo -e "\033[31m文件下载失败请重试\033[0m"
fi
fi
else
echo -e "\033[31m当前设备无需设置请勿尝试\033[0m"
sleep 1
fi
tools
else else
errornum errornum
fi fi

View File

@ -703,8 +703,8 @@ setcrt(){
echo -e "\033[33m用于解决证书校验错误x509报错等问题\033[0m" echo -e "\033[33m用于解决证书校验错误x509报错等问题\033[0m"
echo -e "\033[31m无上述问题的设备请勿使用\033[0m" echo -e "\033[31m无上述问题的设备请勿使用\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
[ -f "$crtdir" ] && echo -e "\033[33m检测到系统已经安装根证书文件了!\033[0m\n-----------------------------------------------" [ -f "$crtdir" ] && echo -e "\033[33m检测到系统已经存在根证书文件($crtdir)了!\033[0m\n-----------------------------------------------"
read -p "确认安装(1/0) > " res read -p "是否覆盖更新(1/0) > " res
if [ -z "$res" ];then if [ -z "$res" ];then
errornum errornum
@ -960,23 +960,7 @@ userguide(){
setconfig common_ports "未开启" setconfig common_ports "未开启"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[36m请选择设置本机代理的方式\033[0m" echo -e "\033[36m请选择设置本机代理的方式\033[0m"
echo -e " 1 使用\033[32m环境变量\033[0m方式配置(不支持部分应用)" localproxy
echo -e " 2 使用\033[32miptables增强模式\033[0m配置"
echo -e " 3 使用\033[32mnftables增强模式\033[0m配置"
echo -e " 0 稍后设置"
read -p "请输入对应数字 > " num
if [ "$num" = 1 ]; then
local_proxy=已开启
local_type=环境变量
elif [ "$num" = 2 ]; then
local_proxy=已开启
local_type=iptables增强模式
elif [ "$num" = 3 ]; then
local_proxy=已开启
local_type=nftables增强模式
fi
setconfig local_proxy $local_proxy
setconfig local_type $local_type
elif [ "$num" = 3 ];then elif [ "$num" = 3 ];then
mv -f $ccfg.bak $ccfg mv -f $ccfg.bak $ccfg
echo -e "\033[32m脚本设置已还原\033[0m" echo -e "\033[32m脚本设置已还原\033[0m"

View File

@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
# Copyright (C) Juewuy # Copyright (C) Juewuy
version=1.7.1 version=1.7.3
setdir(){ setdir(){
dir_avail(){ dir_avail(){

View File

@ -6,18 +6,12 @@ profile=/etc/profile
tunfix(){ tunfix(){
#在/tmp创建并挂载overlay #在/tmp创建并挂载overlay
[ -e /tmp/overlay ] || mkdir /tmp/overlay mkdir -p /tmp/overlay
[ -e /tmp/overlay/upper ] || mkdir /tmp/overlay/upper mkdir -p /tmp/overlay/upper
[ -e /tmp/overlay/work ] || mkdir /tmp/overlay/work mkdir -p /tmp/overlay/work
mount --bind /tmp/overlay /overlay mount -o noatime,lowerdir=/lib/modules/4.4.198,upperdir=/tmp/overlay/upper,workdir=/tmp/overlay/work -t overlay "overlay_mods_only" /lib/modules/4.4.198
. /lib/functions/preinit.sh
fopivot /overlay/upper /overlay/work /rom 1
#Fixup miwifi misc, and DO NOT use /overlay/upper/etc instead, /etc/uci-defaults/* may be already removed
mount -o noatime,move /rom/data /data 2>&-
mount -o noatime,move /rom/etc /etc 2>&-
mount -o noatime,move /rom/userdisk /userdisk 2>&-
#将tun.ko链接到lib #将tun.ko链接到lib
ln -s $clashdir/tun.ko /overlay/upper/lib/modules/4.4.198/tun.ko ln -s $clashdir/tun.ko /lib/modules/4.4.198/tun.ko
} }
init(){ init(){
#初始化环境变量 #初始化环境变量
@ -36,7 +30,7 @@ init(){
[ -n "$(grep 'init complete' $log_file)" ] && i=10 || i=$((i + 1)) [ -n "$(grep 'init complete' $log_file)" ] && i=10 || i=$((i + 1))
done done
#AX6S/AX6000修复tun功能 #AX6S/AX6000修复tun功能
[ -f $clashdir/tun.ko -a ! -f /lib/modules/4.4.198/tun.ko ] && tunfix [ -f $clashdir/tun.ko -a ! -f /lib/modules/4.4.198/tun.ko ] && tunfix && sleep 10
# #
/etc/init.d/clash start /etc/init.d/clash start
/etc/init.d/clash enable /etc/init.d/clash enable

View File

@ -204,14 +204,14 @@ EOF`
else else
if [ "$retry" -ge 4 ];then if [ "$retry" -ge 4 ];then
logger "无法获取配置文件,请检查链接格式以及网络连接状态!" 31 logger "无法获取配置文件,请检查链接格式以及网络连接状态!" 31
echo -e "\033[32m你也可以尝试使用浏览器下载配置文件后使用WinSCP手动上传到/tmp目录\033[0m"
exit 1 exit 1
elif [ "$retry" = 3 ];then elif [ "$retry" = 3 ];then
retry=4 retry=4
logger "配置文件获取失败!最后尝试使用http备用服务器获取!" 31 logger "配置文件获取失败!将尝试使用http协议备用服务器获取!" 31
echo -e "\033[32m如担心安全请在5s内使用【ctrl+c】退出\033[0m" echo -e "\033[32m如担心数据安全请在5s内使用【ctrl+c】退出\033[0m"
sleep 5 sleep 5
server_link=6 server_link=6
setconfig server_link 6
Https="" Https=""
getyaml getyaml
else else
@ -517,7 +517,8 @@ start_redir(){
iptables -t nat -A clash -m mac --mac-source $mac -j RETURN iptables -t nat -A clash -m mac --mac-source $mac -j RETURN
done done
iptables -t nat -A clash -p tcp -s 192.168.0.0/16 -j REDIRECT --to-ports $redir_port iptables -t nat -A clash -p tcp -s 192.168.0.0/16 -j REDIRECT --to-ports $redir_port
iptables -t nat -A clash -p tcp -s 10.0.0.0/8 -j REDIRECT --to-ports $redir_port iptables -t nat -A clash -p tcp -s 10.0.0.0/12 -j REDIRECT --to-ports $redir_port
iptables -t nat -A clash -p tcp -s 172.16.0.0/12 -j REDIRECT --to-ports $redir_port
[ -n "$host_lan" ] && iptables -t nat -A clash -p tcp -s $host_lan -j REDIRECT --to-ports $redir_port [ -n "$host_lan" ] && iptables -t nat -A clash -p tcp -s $host_lan -j REDIRECT --to-ports $redir_port
fi fi
#将PREROUTING链指向clash链 #将PREROUTING链指向clash链
@ -624,7 +625,8 @@ start_tproxy(){
iptables -t mangle -A clash -m mac --mac-source $mac -j RETURN iptables -t mangle -A clash -m mac --mac-source $mac -j RETURN
done done
iptables -t mangle -A clash -p $1 -s 192.168.0.0/16 -j TPROXY --on-port $tproxy_port --tproxy-mark 1 iptables -t mangle -A clash -p $1 -s 192.168.0.0/16 -j TPROXY --on-port $tproxy_port --tproxy-mark 1
iptables -t mangle -A clash -p $1 -s 10.0.0.0/8 -j TPROXY --on-port $tproxy_port --tproxy-mark 1 iptables -t mangle -A clash -p $1 -s 10.0.0.0/12 -j TPROXY --on-port $tproxy_port --tproxy-mark 1
iptables -t mangle -A clash -p $1 -s 172.16.0.0/12 -j TPROXY --on-port $tproxy_port --tproxy-mark 1
[ -n "$host_lan" ] && iptables -t mangle -A clash -p $1 -s $host_lan -j TPROXY --on-port $tproxy_port --tproxy-mark 1 [ -n "$host_lan" ] && iptables -t mangle -A clash -p $1 -s $host_lan -j TPROXY --on-port $tproxy_port --tproxy-mark 1
fi fi
iptables -t mangle -A PREROUTING -p $1 $ports -j clash iptables -t mangle -A PREROUTING -p $1 $ports -j clash
@ -724,7 +726,7 @@ start_tun(){
fi fi
modprobe xt_mark &> /dev/null && { modprobe xt_mark &> /dev/null && {
i=1 i=1
while [ -z "$(ip route list |grep utun)" -a "$i" -le 9 ];do while [ -z "$(ip route list |grep utun)" -a "$i" -le 29 ];do
sleep 1 sleep 1
i=$((i+1)) i=$((i+1))
done done
@ -758,7 +760,8 @@ start_tun(){
iptables -t mangle -A clash -m mac --mac-source $mac -j RETURN iptables -t mangle -A clash -m mac --mac-source $mac -j RETURN
done done
iptables -t mangle -A clash -s 192.168.0.0/16 -j MARK --set-mark 1 iptables -t mangle -A clash -s 192.168.0.0/16 -j MARK --set-mark 1
iptables -t mangle -A clash -s 10.0.0.0/8 -j MARK --set-mark 1 iptables -t mangle -A clash -s 10.0.0.0/12 -j MARK --set-mark 1
iptables -t mangle -A clash -s 172.16.0.0/12 -j MARK --set-mark 1
[ -n "$host_lan" ] && iptables -t mangle -A clash -s $host_lan -j MARK --set-mark 1 [ -n "$host_lan" ] && iptables -t mangle -A clash -s $host_lan -j MARK --set-mark 1
fi fi
iptables -t mangle -A PREROUTING -p udp $ports -j clash iptables -t mangle -A PREROUTING -p udp $ports -j clash
@ -1234,12 +1237,14 @@ afstart(){
start_nft start_nft
} }
#设置本机代理 #设置本机代理
[ "$local_proxy" = "已开启" ] && [ "$local_type" = "环境变量" ] && $0 set_proxy $mix_port $db_port [ "$local_proxy" = "已开启" ] && {
[ "$local_proxy" = "已开启" ] && [ "$local_type" = "iptables增强模式" ] && start_output [ "$local_type" = "环境变量" ] && $0 set_proxy $mix_port $db_port
[ "$local_proxy" = "已开启" ] && [ "$local_type" = "nftables增强模式" ] && [ "$redir_mod" = "纯净模式" ] && start_nft [ "$local_type" = "iptables增强模式" ] && start_output
[ "$local_type" = "nftables增强模式" ] && [ "$redir_mod" = "纯净模式" ] && start_nft
}
ckcmd iptables && start_wan ckcmd iptables && start_wan
#同步本机时间 #同步本机时间
ckcmd ntpd && ntpd -n -q -p 203.107.6.88 ckcmd ntpd && ntpd -n -q -p 203.107.6.88 &
#标记启动时间 #标记启动时间
mark_time mark_time
#加载定时任务 #加载定时任务