Skip to content

Commit e23e7e4

Browse files
committed
Upgrade engine to v3.3.30 — TLS fetcher redesign, SNI validator, atomic quotas
- Adaptive TLS profile cascade for better DPI evasion - SNI validation drops invalid probes cheaply - Per-user quotas migrated to lock-free atomics - Add PROXY_PROTOCOL_TRUSTED_CIDRS setting for trusted source networks - DPI shape/timing hardening, masking prefetch
1 parent 6dc034a commit e23e7e4

3 files changed

Lines changed: 27 additions & 21 deletions

File tree

.github/workflows/build-engine.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ on:
66
telemt_commit:
77
description: 'Telemt commit hash to build from'
88
required: true
9-
default: '342b011'
9+
default: '22097f8'
1010
version_tag:
11-
description: 'Version tag (e.g. 3.3.28-342b011)'
11+
description: 'Version tag (e.g. 3.3.30-22097f8)'
1212
required: true
13-
default: '3.3.28-342b011'
13+
default: '3.3.30-22097f8'
1414

1515
env:
1616
REGISTRY: ghcr.io

README.md

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -535,25 +535,21 @@ mtproxymax telegram remove # Remove bot completely
535535
- **`--no-restart` flag**`secret add/remove/add-batch/remove-batch --no-restart` for scripting and automation
536536
- **TUI options** — Interactive menu options [6] and [7] for batch operations
537537

538-
### v1.0.0 — Engine v3.3.28
538+
### v1.0.0 — Engine v3.3.30
539539

540-
**Engine Upgrade (v3.3.3 → v3.3.28):**
540+
**Engine Upgrade (v3.3.28 → v3.3.30):**
541541

542-
- **ME Anti-Stuck + Orphan Watchdog**Root cause fix for random connection drops: writer cleanup races resolved, orphaned writers detected and force-closed
543-
- **Quarantine Fixes**Quarantined endpoints no longer bypass the circuit breaker, preventing flapping reconnection loops
544-
- **Authoritative Teardown**New deterministic writer teardown sequence with force-close safety policy
545-
- **ME Draining on Dual-Stack**Proper draining behavior on IPv4+IPv6 servers
546-
- **TLS Fetcher Upstream Selection**Smarter upstream selection for TLS fetching
547-
- **Teardown Monitoring** — New API and Prometheus metrics for writer teardown visibility
548-
- **Instadrain + Hard-Remove**Writers stuck draining are force-removed instead of hanging
542+
- **TLS Fetcher Redesign**Adaptive profile cascade (Chrome → Firefox → TLS 1.2 → legacy) with per-target caching, automatic fallback on handshake failures — significantly harder to fingerprint/block via DPI
543+
- **TLS SNI Validator**Enforces SNI from configured domain, drops invalid probes cheaply
544+
- **Atomic Per-User Quotas**Removed locking from hot path for better throughput under load
545+
- **PROXY Protocol Trusted CIDRs**Restrict PROXY header trust to specific source networks
546+
- **DPI Evasion Hardening**Shape/timing hardening, masking prefetch, tiny-frame debt protection
547+
- **Shadowsocks Upstream** — New upstream transport option alongside SOCKS5
548+
- **ME Anti-Stuck + Orphan Watchdog**Root cause fix for random connection drops
549549
- **Adaptive Buffers** — Dynamic buffer sizing: less RAM at low load, more throughput at high load
550550
- **Flow Performance** — 3x faster D2C flush + immediate ACK flushing for lower latency
551-
- **Hot-Reload Fixes** — Reliable config reload without restart
552551
- **Event-Driven ME** — Pool switches from busy-polling to event-driven, reducing CPU on idle servers
553-
- **CPU/RAM Hot-Path Optimization** — Removed hot-path obstacles for lower resource usage under load
554-
- **Source-IP ME Routing** — Routing decisions factor in source IP for multi-homed servers
555552
- **ME/DC Reroute** — Dynamic rerouting when preferred datacenter path degrades
556-
- **Per-Upstream Runtime Selftest** — Built-in diagnostics for upstream connectivity
557553

558554
### v1.0.0 — Per-User Limits + Telegram Bot
559555

mtproxymax.sh

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ CONNECTION_LOG="${INSTALL_DIR}/connection.log"
2424
INSTANCES_FILE="${INSTALL_DIR}/instances.conf"
2525
CONTAINER_NAME="mtproxymax"
2626
DOCKER_IMAGE_BASE="mtproxymax-telemt"
27-
TELEMT_MIN_VERSION="3.3.28"
28-
TELEMT_COMMIT="342b011" # Pinned: v3.3.28ME anti-stuck, quarantine fixes, orphan watchdog, dual-stack draining
27+
TELEMT_MIN_VERSION="3.3.30"
28+
TELEMT_COMMIT="22097f8" # Pinned: v3.3.30TLS fetcher redesign, SNI validator, atomic quotas, PROXY trusted CIDRs
2929
GITHUB_REPO="SamNet-dev/MTProxyMax"
3030
REGISTRY_IMAGE="ghcr.io/samnet-dev/mtproxymax-telemt"
3131

@@ -107,6 +107,7 @@ PROXY_MEMORY=""
107107
CUSTOM_IP=""
108108
FAKE_CERT_LEN=2048
109109
PROXY_PROTOCOL="false"
110+
PROXY_PROTOCOL_TRUSTED_CIDRS=""
110111
AD_TAG=""
111112
GEOBLOCK_MODE="blacklist"
112113
BLOCKLIST_COUNTRIES=""
@@ -571,6 +572,7 @@ PROXY_MEMORY='${PROXY_MEMORY}'
571572
CUSTOM_IP='${CUSTOM_IP}'
572573
FAKE_CERT_LEN='${FAKE_CERT_LEN}'
573574
PROXY_PROTOCOL='${PROXY_PROTOCOL}'
575+
PROXY_PROTOCOL_TRUSTED_CIDRS='${PROXY_PROTOCOL_TRUSTED_CIDRS}'
574576
575577
# Ad-Tag (from @MTProxyBot)
576578
AD_TAG='${AD_TAG}'
@@ -623,7 +625,7 @@ load_settings() {
623625
# Whitelist of allowed keys
624626
case "$key" in
625627
PROXY_PORT|PROXY_METRICS_PORT|PROXY_DOMAIN|PROXY_CONCURRENCY|\
626-
PROXY_CPUS|PROXY_MEMORY|CUSTOM_IP|FAKE_CERT_LEN|PROXY_PROTOCOL|AD_TAG|GEOBLOCK_MODE|BLOCKLIST_COUNTRIES|\
628+
PROXY_CPUS|PROXY_MEMORY|CUSTOM_IP|FAKE_CERT_LEN|PROXY_PROTOCOL|PROXY_PROTOCOL_TRUSTED_CIDRS|AD_TAG|GEOBLOCK_MODE|BLOCKLIST_COUNTRIES|\
627629
MASKING_ENABLED|MASKING_HOST|MASKING_PORT|\
628630
TELEGRAM_ENABLED|TELEGRAM_BOT_TOKEN|TELEGRAM_CHAT_ID|\
629631
TELEGRAM_INTERVAL|TELEGRAM_ALERTS_ENABLED|TELEGRAM_SERVER_LABEL|\
@@ -1064,6 +1066,7 @@ port = ${port}
10641066
listen_addr_ipv4 = "0.0.0.0"
10651067
listen_addr_ipv6 = "::"
10661068
proxy_protocol = ${PROXY_PROTOCOL:-false}
1069+
$([ "$PROXY_PROTOCOL" = "true" ] && [ -n "$PROXY_PROTOCOL_TRUSTED_CIDRS" ] && echo "proxy_protocol_trusted_cidrs = [$(echo "$PROXY_PROTOCOL_TRUSTED_CIDRS" | sed 's/[[:space:]]*,[[:space:]]*/", "/g;s/^/"/;s/$/"/' )]")
10671070
metrics_port = ${metrics_port}
10681071
metrics_whitelist = ["127.0.0.1", "::1"]
10691072
@@ -3553,7 +3556,7 @@ load_tg_settings() {
35533556
local key="${BASH_REMATCH[1]}" val="${BASH_REMATCH[2]}"
35543557
case "$key" in
35553558
PROXY_PORT|PROXY_DOMAIN|PROXY_METRICS_PORT|PROXY_CONCURRENCY|\
3556-
PROXY_CPUS|PROXY_MEMORY|CUSTOM_IP|PROXY_PROTOCOL|MASKING_ENABLED|MASKING_HOST|MASKING_PORT|\
3559+
PROXY_CPUS|PROXY_MEMORY|CUSTOM_IP|PROXY_PROTOCOL|PROXY_PROTOCOL_TRUSTED_CIDRS|MASKING_ENABLED|MASKING_HOST|MASKING_PORT|\
35573560
AD_TAG|GEOBLOCK_MODE|BLOCKLIST_COUNTRIES|AUTO_UPDATE_ENABLED|\
35583561
TELEGRAM_ENABLED|TELEGRAM_BOT_TOKEN|TELEGRAM_CHAT_ID|\
35593562
TELEGRAM_INTERVAL|TELEGRAM_SERVER_LABEL|TELEGRAM_ALERTS_ENABLED)
@@ -6116,7 +6119,7 @@ show_settings_menu() {
61166119
echo -e " ${BOLD}Masking:${NC} ${MASKING_ENABLED}"
61176120
echo -e " ${BOLD}Ad-tag:${NC} ${AD_TAG:-${DIM}not set${NC}}"
61186121
echo -e " ${BOLD}Auto-update:${NC} ${AUTO_UPDATE_ENABLED}"
6119-
echo -e " ${BOLD}PROXY proto:${NC} ${PROXY_PROTOCOL}"
6122+
echo -e " ${BOLD}PROXY proto:${NC} ${PROXY_PROTOCOL}$([ "$PROXY_PROTOCOL" = "true" ] && [ -n "$PROXY_PROTOCOL_TRUSTED_CIDRS" ] && echo " (trusted: ${PROXY_PROTOCOL_TRUSTED_CIDRS})")"
61206123
echo -e " ${BOLD}Engine:${NC} telemt v$(get_telemt_version)"
61216124
echo ""
61226125
echo -e " ${DIM}[1]${NC} Change port"
@@ -6273,6 +6276,13 @@ show_settings_menu() {
62736276
;;
62746277
8)
62756278
[ "$PROXY_PROTOCOL" = "true" ] && PROXY_PROTOCOL="false" || PROXY_PROTOCOL="true"
6279+
if [ "$PROXY_PROTOCOL" = "true" ]; then
6280+
echo -en " ${BOLD}Trusted CIDRs (comma-separated, e.g. 10.0.0.0/8,172.16.0.0/12, empty=reject all):${NC} "
6281+
local cidrs; read -r cidrs
6282+
PROXY_PROTOCOL_TRUSTED_CIDRS="$cidrs"
6283+
else
6284+
PROXY_PROTOCOL_TRUSTED_CIDRS=""
6285+
fi
62766286
save_settings
62776287
log_success "PROXY protocol: ${PROXY_PROTOCOL}"
62786288
if is_proxy_running; then

0 commit comments

Comments
 (0)