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