Files
dock/de12系统代理
2026-02-20 14:18:31 +08:00

126 lines
5.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# ==========================================
# 全能自愈版·临时全局代理注入助手 (带 Docker 选择)
# 适用环境: Debian / Ubuntu 等
# ==========================================
# 颜色定义
RED='\033[31m'
GREEN='\033[32m'
YELLOW='\033[33m'
BLUE='\033[34m'
PLAIN='\033[0m'
echo -e "${BLUE}=====================================================${PLAIN}"
echo -e "${BLUE} 全能自愈版·全局代理与 Docker 穿透助手 (含还原机制) ${PLAIN}"
echo -e "${BLUE}=====================================================${PLAIN}"
# 默认代理节点配置
DEFAULT_IP="45.192.240.121"
DEFAULT_PORT="21628"
DEFAULT_PROTO="socks5"
read -p "请输入代理 IP [$DEFAULT_IP]: " PROXY_IP
PROXY_IP=${PROXY_IP:-$DEFAULT_IP}
read -p "请输入代理端口 [$DEFAULT_PORT]: " PROXY_PORT
PROXY_PORT=${PROXY_PORT:-$DEFAULT_PORT}
PROXY_URL="${DEFAULT_PROTO}://${PROXY_IP}:${PROXY_PORT}"
echo -e "\n${BLUE}[1/6] 检查并修复系统软件源...${PLAIN}"
if ! apt-get update -qq 2>/dev/null; then
echo -e "${YELLOW}检测到当前软件源失效,正在自动备份并替换为 Debian 12 官方公网源...${PLAIN}"
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2>/dev/null
sudo bash -c 'cat << SRC > /etc/apt/sources.list
deb http://deb.debian.org/debian bookworm main
deb http://deb.debian.org/debian bookworm-updates main
deb http://security.debian.org/debian-security bookworm-security main
SRC'
sudo apt-get update -qq
echo -e "${GREEN} -> 软件源修复完成!${PLAIN}"
else
echo -e "${GREEN} -> 软件源状态正常。${PLAIN}"
fi
echo -e "${BLUE}[2/6] 检查并安装必要依赖...${PLAIN}"
if ! command -v proxychains4 &> /dev/null || ! command -v curl &> /dev/null; then
echo -e "${YELLOW}正在自动安装 proxychains4 和 curl...${PLAIN}"
sudo apt-get install -y -qq proxychains4 curl >/dev/null 2>&1
echo -e "${GREEN} -> 依赖安装完毕!${PLAIN}"
else
echo -e "${GREEN} -> 依赖已存在。${PLAIN}"
fi
echo -e "${BLUE}[3/6] 注入底层环境变量与 Sudo 穿透...${PLAIN}"
export http_proxy="${PROXY_URL}"
export https_proxy="${PROXY_URL}"
export all_proxy="${PROXY_URL}"
export HTTP_PROXY="${PROXY_URL}"
export HTTPS_PROXY="${PROXY_URL}"
export ALL_PROXY="${PROXY_URL}"
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,.aliyuncs.com"
alias sudo='sudo -E'
echo -e "${GREEN} -> 终端变量注入成功!${PLAIN}"
echo -e "${BLUE}[4/6] 部署临时强制代理 (修复 Error 52)...${PLAIN}"
TEMP_PC_CONF="/tmp/ultimate_pc.conf"
cat << CONF > $TEMP_PC_CONF
strict_chain
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
$DEFAULT_PROTO $PROXY_IP $PROXY_PORT
CONF
alias pc="proxychains4 -q -f $TEMP_PC_CONF"
echo -e "${GREEN} -> pc 强制代理工具就绪!${PLAIN}"
echo -e "${BLUE}[5/6] 突破 Docker 守护进程隔离 (交互)...${PLAIN}"
if command -v docker &> /dev/null; then
echo -e "${YELLOW}检测到系统已安装 Docker。${PLAIN}"
read -p "是否为 Docker 守护进程添加代理?(解决拉取镜像超时问题) [y/n, 默认: y]: " ADD_DOCKER
ADD_DOCKER=${ADD_DOCKER:-y}
if [[ "$ADD_DOCKER" =~ ^[Yy]$ ]]; then
echo -e "${YELLOW}正在配置并重启 Docker...${PLAIN}"
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo bash -c "cat << DOCKER_CONF > /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment=\"HTTP_PROXY=${PROXY_URL}\"
Environment=\"HTTPS_PROXY=${PROXY_URL}\"
Environment=\"NO_PROXY=localhost,127.0.0.1,.aliyuncs.com\"
DOCKER_CONF"
sudo systemctl daemon-reload
sudo systemctl restart docker
echo -e "${GREEN} -> Docker 代理已挂载并重启完毕!${PLAIN}"
else
echo -e "${GREEN} -> 已跳过 Docker 代理配置。${PLAIN}"
fi
else
echo -e "${YELLOW} -> 未检测到 Docker跳过此步骤。${PLAIN}"
fi
echo -e "${BLUE}[6/6] 生成一键清场工具...${PLAIN}"
# 将 proxy_clean 声明为函数留在内存里
proxy_clean() {
echo -e "${YELLOW}正在清除所有代理痕迹...${PLAIN}"
unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY no_proxy
unalias sudo pc 2>/dev/null
rm -f /tmp/ultimate_pc.conf
if [ -f /etc/systemd/system/docker.service.d/http-proxy.conf ]; then
sudo rm -f /etc/systemd/system/docker.service.d/http-proxy.conf
sudo systemctl daemon-reload
sudo systemctl restart docker
echo -e "${GREEN} -> Docker 代理已卸载并重启服务。${PLAIN}"
fi
echo -e "${GREEN}清理完毕!系统已彻底恢复直连状态。${PLAIN}"
}
echo -e "${GREEN} -> 已生成 'proxy_clean' 命令。${PLAIN}"
echo -e "\n${GREEN}=====================================================${PLAIN}"
echo -e "${GREEN} 所有网络魔法已就绪!${PLAIN}"
echo -e " 1. 终端环境已全面代理 (curl, wget 畅通无阻)。"
echo -e " 2. 遇到不听话的顽固脚本,命令前加 ${YELLOW}pc${PLAIN} (如: pc ./install.sh)。"
echo -e " 3. 完事后想恢复原状,只需输入命令: ${RED}proxy_clean${PLAIN}"
echo -e "${GREEN}=====================================================${PLAIN}"