feat: Add Mihomo and TProxy setup scripts for Alpine and legacy systems

- Introduced `iptables-mihomo-setup-mark2.sh` for advanced TProxy configuration.
- Created `iptables-mihomo-setup.sh` for legacy iptables management.
- Added `dnssec-test.sh` for DNSSEC interception testing.
- Implemented `config-warpgate-alpine.sh` for comprehensive Warpgate setup.
- Developed `iptables-mihomo-setup-alpine-mark2.sh` for refined TProxy rules on Alpine.
- Added `iptables-mihomo-setup-alpine.sh` for basic TProxy setup on Alpine.
- Created `update-core-and-dash.sh` for automated updates of Mihomo core and Zashboard UI.
This commit is contained in:
2026-04-11 19:32:05 +03:00
parent 3e22a60e2f
commit 95230c6349
17 changed files with 293 additions and 2289 deletions

View File

@@ -0,0 +1,86 @@
#!/bin/bash
# Целевой DNS-сервер для тестирования
RESOLVER="127.0.0.1"
# Тестовая выборка доменов (20 штук + 2 эталонных)
DOMAINS=(
# --- Эталонные домены для проверки DNSSEC ---
"sigok.verteiltesysteme.net" # Должен быть NOERROR
"sigfail.verteiltesysteme.net" # Должен быть SERVFAIL (Broken DNSSEC)
"dnssec-failed.org" # Должен быть SERVFAIL (Broken DNSSEC)
# --- Телеметрия и трекеры (часто блочат дешевые хостеры) ---
"fe3cr.delivery.mp.microsoft.com"
"telemetry.microsoft.com"
"tracking.miui.com"
"app-measurement.com"
"google-analytics.com"
"doubleclick.net"
# --- Торренты и пиратство (копирайт фильтры) ---
"rutracker.org"
"thepiratebay.org"
"1337x.to"
"yts.mx"
# --- Контент для взрослых (Child-protection фильтры) ---
"hui.com"
"pornhub.com"
"xvideos.com"
# --- Политика и соцсети (Государственные DPI / РКН) ---
"twitter.com"
"facebook.com"
"instagram.com"
"bbc.com"
"meduza.io"
)
echo -e "Starting DPI & DNSSEC interception test on resolver $RESOLVER..."
echo -e "Date: $(date -u +'%Y-%m-%d %H:%M:%S UTC')"
echo "--------------------------------------------------------------------------------"
printf "%-35s | %-20s | %-20s\n" "DOMAIN" "STATUS" "RESOLVED IP (FIRST)"
echo "--------------------------------------------------------------------------------"
for domain in "${DOMAINS[@]}"; do
# Запрашиваем A-запись с таймаутом в 2 секунды
output=$(dig @"$RESOLVER" "$domain" A +time=2 +tries=1)
# Парсим статус ответа (NOERROR, SERVFAIL, NXDOMAIN и т.д.)
status=$(echo "$output" | grep -oP 'status: \K[A-Z]+')
# Вытаскиваем первый попавшийся IP-адрес из секции ANSWER
ip=$(echo "$output" | grep -v '^;' | grep -w 'A' | awk '{print $5}' | head -n 1)
if [ -z "$status" ]; then
status="TIMEOUT"
fi
if [ -z "$ip" ]; then
ip="NONE"
fi
# Цветовая индикация и логика
if [ "$status" == "NOERROR" ]; then
if [[ "$ip" == "0.0.0.0" || "$ip" == "127.0.0.1" ]]; then
color_status="\e[31m$status (FAKE IP)\e[0m"
else
color_status="\e[32m$status\e[0m"
fi
elif [ "$status" == "SERVFAIL" ]; then
# SERVFAIL ожидаем только для этих двух доменов
if [[ "$domain" == "sigfail.verteiltesysteme.net" || "$domain" == "dnssec-failed.org" ]]; then
color_status="\e[32m$status (EXPECTED)\e[0m"
else
color_status="\e[31m$status (INTERCEPTED)\e[0m"
fi
else
color_status="\e[33m$status\e[0m"
fi
printf "%-35s | %-30b | %-20s\n" "$domain" "$color_status" "$ip"
done
echo "--------------------------------------------------------------------------------"
echo "Test completed."