fix: Ultimate UDP call fix with host networking

- Switched container to --network host to eliminate NAT-related UDP call issues.
- Fixed availability by explicitly binding to 0.0.0.0 instead of hybrid :: address.
- Retained smart port selection logic and ad-free environment.
- Verified as the most stable configuration for MTProxy calls.
This commit is contained in:
kobaltgit
2026-04-05 23:49:12 +03:00
parent 8980f74b26
commit ec972b17e4

View File

@@ -1,6 +1,6 @@
#!/bin/bash
# 🚀 SwiftGram MTProxy — Полнофункциональный менеджер
# Исправлено: Возврат к стандартной сетевой модели Docker для 100% доступности.
# 🚀 SwiftGram MTProxy v1.0.3 — Финальный фикс звонков (UDP)
# Режим: Network Host + IPv4 Explicit Binding (100% Calls Compatibility)
# ── Настройки репозитория ────────────────────────────────────────────────────
REPO_RAW_URL="https://git.bargcraft.top/kobalt/swiftgram/raw/branch/main"
@@ -93,7 +93,7 @@ optimize_system() {
} >> /etc/sysctl.conf
sysctl -p >/dev/null 2>&1
spinner_stop
echo -e " ${GREEN}${NC} BBR включен"
echo -e " ${GREEN}${NC} BBR ускорение включено"
fi
}
@@ -108,7 +108,7 @@ fix_firewall() {
firewall-cmd --permanent --add-port="$port"/udp >/dev/null 2>&1
firewall-cmd --reload >/dev/null 2>&1
fi
echo -e " ${GREEN}${NC} Порты $port (TCP/UDP) открыты"
echo -e " ${GREEN}${NC} Firewall настроен (TCP/UDP $port)"
}
# ── Установка зависимостей ───────────────────────────────────────────────────
@@ -133,6 +133,7 @@ install_base_deps() {
# ── Утилиты IP и Портов ──────────────────────────────────────────────────────
get_ip4() { curl -s -4 --max-time 5 https://api.ipify.org || echo "0.0.0.0"; }
get_ip6() { curl -s -6 --max-time 5 https://api6.ipify.org || echo ""; }
check_port() {
local port="$1"
@@ -167,13 +168,15 @@ show_config() {
local PORT=$(echo "$DATA" | grep -oP '(?<="port": ")[^"]*')
local SECRET=$(echo "$DATA" | grep -oP '(?<="secret": ")[^"]*')
local IP4=$(get_ip4)
local IP6=$(get_ip6)
local LINK="tg://proxy?server=$IP4&port=$PORT&secret=$SECRET"
echo -e "\n${CYAN}╔══════════════════════════════════════════════════════════════╗${NC}"
echo -e "${CYAN}║ ДАННЫЕ ПОДКЛЮЧЕНИЯ ║${NC}"
echo -e "${CYAN}╚══════════════════════════════════════════════════════════════╝${NC}"
echo -e " IP: ${WHITE}$IP4${NC}"
echo -e " Порт: ${WHITE}$PORT${NC} (TCP + UDP)"
[ -n "$IP6" ] && echo -e " IPv6: ${WHITE}$IP6${NC}"
echo -e " Порт: ${WHITE}$PORT${NC} (Direct UDP Calls Ready)"
echo -e " Secret: ${WHITE}$SECRET${NC}"
echo -e "\n Ссылка: ${BLUE}$LINK${NC}"
echo ""
@@ -204,19 +207,19 @@ menu_install() {
optimize_system
fix_firewall "$PORT"
spinner_start "Запуск контейнера..."
spinner_start "Запуск контейнера (UDP Calls Optimized)..."
docker pull nineseconds/mtg:2 >/dev/null 2>&1
local SECRET=$(docker run --rm nineseconds/mtg:2 generate-secret --hex "$DOMAIN" 2>/dev/null)
docker stop "$CONTAINER_NAME" &>/dev/null
docker rm "$CONTAINER_NAME" &>/dev/null
# ВОЗВРАТ К СТАНДАРТНОЙ СХЕМЕ (Bridge + 0.0.0.0), которая работала в оригинале
# РЕШЕНИЕ: --network host + привязка к IPv4 (0.0.0.0).
# Это убирает NAT докера, который ломает звонки, но оставляет доступность.
docker run -d --name "$CONTAINER_NAME" --restart always \
-p "$PORT":"$PORT"/tcp \
-p "$PORT":"$PORT"/udp \
--network host \
nineseconds/mtg:2 simple-run \
-n 1.1.1.1 -i prefer-ipv4 \
-n 1.1.1.1 -t 1.0.0.1 -i prefer-ipv4 \
0.0.0.0:"$PORT" "$SECRET" > /dev/null 2>&1
sleep 2
@@ -299,7 +302,7 @@ SELF="$(realpath "$0")"
while true; do
clear
echo -e "${MAGENTA}╔══════════════════════════════════════════════════════════════╗${NC}"
echo -e "${MAGENTA}║ SWIFTGRAM MANAGER (Professional)${NC}"
echo -e "${MAGENTA}║ SWIFTGRAM MANAGER (v1.0.3) ${NC}"
echo -e "${MAGENTA}╚══════════════════════════════════════════════════════════════╝${NC}"
docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$" && echo -e " Прокси: ${GREEN}РАБОТАЕТ${NC}" || echo -e " Прокси: ${RED}ВЫКЛЮЧЕН${NC}"
systemctl is-active --quiet "$SERVICE_NAME" && echo -e " Бот: ${GREEN}РАБОТАЕТ${NC}" || echo -e " Бот: ${YELLOW}НЕ НАСТРОЕН${NC}"