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:
86
scripts/testing/dnssec-test.sh
Normal file
86
scripts/testing/dnssec-test.sh
Normal 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."
|
||||
Reference in New Issue
Block a user