Ein MTProto-Proxy für Telegram ist eine serverseitige Anwendung, die entwickelt wurde, um einen sicheren und verschleierten Zugang zum Telegram-Nachrichtendienst zu ermöglichen. Er wird hauptsächlich verwendet, um Internetzensur zu umgehen und die Privatsphäre zu verbessern, indem der Datenverkehr über einen Vermittlungsserver geleitet wird.
Was ist ein MTProto-Proxy?
Ein MTProto-Proxy ist ein spezifischer Typ von Proxyserver, der auf das Telegram-Nachrichtenprotokoll (MTProto) zugeschnitten ist. Im Gegensatz zu Standard-SOCKS5- oder HTTP-Proxys implementiert ein MTProto-Proxy das MTProto-Protokoll direkt, wodurch er sich nahtlos in Telegram-Clients integrieren lässt. Seine Hauptfunktion besteht darin, den Telegram-Verkehr zu verschleiern, sodass er für Deep-Packet-Inspection-Systeme nicht von typischem HTTPS-Verkehr zu unterscheiden ist. Diese Fähigkeit ist entscheidend in Umgebungen, in denen Telegram blockiert oder eingeschränkt ist.
Hauptmerkmale:
* Protokollspezifisch: Verarbeitet direkt das MTProto-Protokoll von Telegram.
* Verschleierung: Verschlüsselt und tarnt den Telegram-Verkehr, um Zensur zu umgehen.
* Serverseitig: Erfordert die Bereitstellung auf einem dedizierten Server (VPS).
* Client-seitige Integration: Telegram-Clients unterstützen MTProto-Proxys nativ.
Voraussetzungen für die Einrichtung
Die Einrichtung eines MTProto-Proxys erfordert einen virtuellen privaten Server (VPS) und grundlegende Linux-Administrationskenntnisse.
- Server: Ein VPS mit Root-Zugriff.
- Betriebssystem: Debian- oder Ubuntu-Linux-Distributionen sind gängig und gut unterstützt. CentOS ist ebenfalls eine Option.
- Ressourcen: Minimale CPU und RAM sind für einen grundlegenden Proxy ausreichend. 512 MB RAM und 1 vCPU sind typischerweise für Hunderte von gleichzeitigen Benutzern ausreichend.
- Netzwerk: Ein offener Port für eingehende Verbindungen (Standard 443 oder 80 wird oft zur Verschleierung verwendet, aber jeder Port kann konfiguriert werden).
- Berechtigungen: Root- oder Sudo-Rechte auf dem Server.
- Tools: Grundlegende Linux-Befehlszeilen-Dienstprogramme (z.B.
ssh,curl,aptoderyum,systemctl,ufwoderiptables).
Einrichten eines MTProto-Proxy-Servers
Zwei gängige Methoden zur Bereitstellung eines MTProto-Proxys sind die Verwendung des offiziellen Telegram-Proxy-Dienstprogramms oder eines Docker-Containers.
Methode 1: Offizieller Telegram-Proxy (Empfohlen)
Diese Methode beinhaltet das Kompilieren und Ausführen der offiziellen Telegram-Proxy-Serveranwendung.
1. System aktualisieren und Abhängigkeiten installieren
sudo apt update && sudo apt upgrade -y
sudo apt install -y git build-essential libssl-dev zlib1g-dev
Für CentOS/RHEL:
sudo yum update -y
sudo yum install -y git make gcc openssl-devel zlib-devel
2. Proxy klonen und bauen
git clone https://github.com/TelegramMessenger/MTProxy.git
cd MTProxy
make && cd objs/bin
3. Secret generieren
Ein Secret ist für die Client-Authentifizierung und die Verschleierung des Datenverkehrs erforderlich.
head -c 16 /dev/urandom | xxd -ps
Dieser Befehl generiert eine 32-stellige Hexadezimalzeichenfolge. Dies wird Ihr SECRET sein.
Zum Beispiel: a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6
4. Proxy ausführen (erster Test)
./mtproxy -p <PORT> -H <HOST_IP> -S <SECRET> --aes-pwd <PATH_TO_PROXY_SECRET_FILE> -M <WORKER_THREADS>
<PORT>: Der Port, mit dem sich Clients verbinden (z.B.443).<HOST_IP>: Die öffentliche IP-Adresse Ihres Servers.<SECRET>: Das zuvor generierte 32-stellige Hex-Secret.<PATH_TO_PROXY_SECRET_FILE>: Typischerweise/etc/mtproxy/proxy-secret(erstellen Sie diese Datei mit einem zufälligen 64-Byte-Secret für die interne Kommunikation).<WORKER_THREADS>: Anzahl der Worker-Threads (z.B.1).
Zum Beispiel:
mkdir -p /etc/mtproxy
head -c 64 /dev/urandom > /etc/mtproxy/proxy-secret
./mtproxy -p 443 -H 0.0.0.0 -S a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6 --aes-pwd /etc/mtproxy/proxy-secret -M 1
0.0.0.0 bindet an alle verfügbaren Netzwerkschnittstellen.
5. Als Systemd-Dienst konfigurieren
Für den dauerhaften Betrieb erstellen Sie eine systemd-Diensteinheit.
Erstellen Sie /etc/systemd/system/mtproxy.service:
[Unit]
Description=MTProto Proxy for Telegram
After=network.target
[Service]
Type=simple
ExecStart=/root/MTProxy/objs/bin/mtproxy -p 443 -H 0.0.0.0 -S a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6 --aes-pwd /etc/mtproxy/proxy-secret -M 1
WorkingDirectory=/root/MTProxy/objs/bin
User=root
Restart=on-failure
[Install]
WantedBy=multi-user.target
Ersetzen Sie die ExecStart-Parameter durch Ihren spezifischen Port, Secret und Dateipfade. Passen Sie WorkingDirectory an, wenn Sie MTProxy an einem anderen Ort geklont haben.
Systemd neu laden, Dienst aktivieren und starten:
sudo systemctl daemon-reload
sudo systemctl enable mtproxy
sudo systemctl start mtproxy
sudo systemctl status mtproxy
6. Firewall-Konfiguration
Öffnen Sie den gewählten Port (z.B. 443) in der Firewall Ihres Servers.
UFW (Ubuntu/Debian):
sudo ufw allow 443/tcp
sudo ufw enable # falls noch nicht aktiviert
IPTables (CentOS/RHEL oder ohne UFW):
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo service iptables save # oder firewalld verwenden
Firewalld (CentOS/RHEL 7+):
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --reload
Methode 2: Docker (Alternative)
Die Verwendung von Docker vereinfacht die Bereitstellung und das Abhängigkeitsmanagement.
1. Docker installieren
Befolgen Sie die offiziellen Docker-Installationsanleitungen für Ihr Betriebssystem.
2. Secret generieren
head -c 16 /dev/urandom | xxd -ps
Dies ist Ihr SECRET.
3. Proxy mit Docker ausführen
docker run -d --name mtproxy-server -p 443:443 --restart=always \
telegrammessenger/proxy:latest \
-S a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6 \
--aes-pwd /etc/mtproxy/proxy-secret -M 1
-d: Im Detached-Modus ausführen.--name mtproxy-server: Dem Container einen Namen zuweisen.-p 443:443: Host-Port 443 auf Container-Port 443 mappen.--restart=always: Sicherstellen, dass der Container mit dem Docker-Daemon neu startet.telegrammessenger/proxy:latest: Das offizielle Docker-Image.-S <SECRET>: Ihr generiertes Secret.--aes-pwd /etc/mtproxy/proxy-secret: Ein Platzhalter. Das Docker-Image generiert dies intern.-M 1: Anzahl der Worker-Threads.
Stellen Sie sicher, dass Ihre Host-Firewall (UFW/Firewalld/IPTables) den Datenverkehr auf Port 443 zulässt. Docker verwaltet die interne Vernetzung.
Tag erhalten (Optional)
Ein Tag ist ein optionaler Parameter, der es Proxy-Betreibern ermöglicht, einen gesponserten Kanal mit ihrem Proxy zu verknüpfen. Wenn Benutzer über einen getaggten Proxy verbinden, wird der gesponserte Kanal oben in ihrer Chatliste angezeigt.
Um einen Tag zu erhalten:
1. Senden Sie eine Nachricht an @MTProxybot auf Telegram.
2. Senden Sie /newproxy an den Bot.
3. Geben Sie die öffentliche IP-Adresse und den Port Ihres Proxys an.
4. Der Bot wird einen tag-Wert bereitstellen.
Integrieren Sie den Tag in Ihren ExecStart-Befehl für den systemd-Dienst oder den Docker-Befehl:
# Systemd (fügen Sie --tag <IHR_TAG> hinzu)
ExecStart=/root/MTProxy/objs/bin/mtproxy -p 443 -H 0.0.0.0 -S a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6 --aes-pwd /etc/mtproxy/proxy-secret -M 1 --tag <IHR_TAG>
# Docker (fügen Sie -T <IHR_TAG> hinzu)
docker run -d --name mtproxy-server -p 443:443 --restart=always \
telegrammessenger/proxy:latest \
-S a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6 -M 1 -T <IHR_TAG>
Starten Sie den MTProto-Proxy-Dienst/Container neu, nachdem Sie den Tag hinzugefügt haben.
Verbindung zum MTProto-Proxy herstellen
Sobald der Proxy-Server läuft, können Benutzer über einen direkten Link oder eine manuelle Konfiguration eine Verbindung herstellen.
Proxy-Link-Format
Der bequemste Weg, den Proxy zu teilen, ist über einen tg://-Link:
tg://proxy?server=<SERVER_IP>&port=<PORT>&secret=<SECRET>
Beispiel: tg://proxy?server=192.0.2.1&port=443&secret=a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6
Das Klicken auf diesen Link auf einem Gerät mit installiertem Telegram fordert den Benutzer auf, den Proxy hinzuzufügen.
Manuelle Konfiguration in der Telegram-App
- Öffnen Sie die Telegram-Einstellungen.
- Navigieren Sie zu "Daten und Speicher" (oder "Privatsphäre und Sicherheit" bei einigen Clients).
- Wählen Sie "Proxy-Einstellungen".
- Schalten Sie "Proxy verwenden" oder "SOCKS5/MTProto-Proxy" ein.
- Wählen Sie "MTProto-Proxy".
- Geben Sie die öffentliche IP-Adresse des Servers in das Feld "Server" ein.
- Geben Sie den konfigurierten Port (z.B. 443) in das Feld "Port" ein.
- Geben Sie das
SECRETin das Feld "Secret" ein. - Speichern Sie die Einstellungen.
Telegram-Clients versuchen dann, über den konfigurierten MTProto-Proxy eine Verbindung herzustellen.
Sicherheitsüberlegungen
- System auf dem neuesten Stand halten: Aktualisieren Sie regelmäßig das Betriebssystem und die installierten Pakete Ihres Servers, um Sicherheitslücken zu schließen.
- Starke Secrets: Verwenden Sie ein starkes, zufällig generiertes Secret. Vermeiden Sie vorhersehbare Muster.
- Firewall: Beschränken Sie den Zugriff auf den Proxy-Port mithilfe einer Firewall. Erlauben Sie nur notwendige eingehende Verbindungen.
- Protokolle überwachen: Überprüfen Sie regelmäßig die Proxy-Protokolle (
journalctl -u mtproxy.servicefür systemd) auf ungewöhnliche Aktivitäten oder Fehler. - Minimale Berechtigungen: Obwohl der offizielle Proxy aus Einfachheitsgründen oft als Root läuft, sollten Sie in Betracht ziehen, ihn unter einem weniger privilegierten Benutzer auszuführen, falls möglich, obwohl dies die Dateiberechtigungen komplexer macht.
Fehlerbehebung bei häufigen Problemen
- Verbindung schlägt fehl:
- Firewall: Überprüfen Sie, ob der Proxy-Port in der Firewall des Servers geöffnet ist.
- Falsche Details: Überprüfen Sie die im Telegram-Client eingegebene Server-IP, den Port und das Secret.
- Proxy läuft nicht: Überprüfen Sie den Status des Proxy-Dienstes (
sudo systemctl status mtproxyoderdocker ps). - Netzwerkprobleme: Bestätigen Sie, dass der Server über Internetverbindung verfügt.
- Langsame Leistung:
- Serverressourcen: Überwachen Sie CPU, RAM und Netzwerkauslastung auf Ihrem VPS. Führen Sie ein Upgrade durch, wenn die Ressourcen erschöpft sind.
- Netzwerklatenz: Hohe Latenz zwischen Client und Proxy-Server kann die Geschwindigkeit beeinträchtigen.
- Bandbreite: Stellen Sie sicher, dass Ihr VPS über ausreichende Bandbreite für die Anzahl der Benutzer verfügt.
- Proxy startet nicht:
- Protokolle: Überprüfen Sie die systemd-Protokolle (
journalctl -u mtproxy.service) oder Docker-Protokolle (docker logs mtproxy-server) auf Fehlermeldungen. - Abhängigkeiten: Stellen Sie sicher, dass alle erforderlichen Build-Abhängigkeiten installiert sind.
- Portkonflikt: Überprüfen Sie, ob kein anderer Dienst den gewählten Proxy-Port verwendet.
- Protokolle: Überprüfen Sie die systemd-Protokolle (
Vergleich: MTProto-Proxy vs. SOCKS5/HTTP-Proxy
| Merkmal | MTProto-Proxy | SOCKS5/HTTP-Proxy |
|---|---|---|
| Protokoll | Telegrams natives MTProto-Protokoll | Generische SOCKS5- oder HTTP/HTTPS-Protokolle |
| Verschleierung | Eingebaut, entwickelt zur Umgehung von DPI | Minimal bis keine; Verkehrsmuster sind oft identifizierbar |
| Zensur | Hochwirksam gegen Telegram-Blockierung | Weniger effektiv; kann durch Protokollanalyse blockiert werden |
| Sicherheit | Verschlüsselter Verkehr, spezifisch für Telegram | Verschlüsselt bei Verwendung mit TLS (HTTPS), sonst unverschlüsselt |
| Konfiguration | Spezielles "Secret" erforderlich; nativ in Telegram-Apps | Server, Port, (optional) Benutzername/Passwort; generische Proxy-Einstellungen |
| Anwendungsfall | Primär für den Telegram-Zugriff in eingeschränkten Regionen | Allgemeiner Internetverkehr, verschiedene Anwendungen |
| Leistung | Optimiert für Telegram-Verkehr | Allzweck; Leistung hängt von der Implementierung ab |