Verbindungstest für Proxys hinzufügen

Neuer Befehl 'svc-proxy test [DIENST]' sowie Taste 't' in der Liste und
Schaltfläche/F3 im Formular (testet ungespeicherte Werte).

- prüft Erreichbarkeit, Handshake und Anmeldung für SOCKS5/SOCKS4/HTTP(S)
  mit klaren Meldungen (Kennwort falsch, Proxy-Typ vertauscht, Port gesperrt)
- baut Tunnel zu Testzielen auf und liest die Begrüßung (SMTP, POP3, IMAP,
  HTTP), TLS für 443/465/993/995
- --target HOST:PORT, --mail (SMTP 25/587/465, POP3S, IMAPS), --timeout
- im proxychains-Modus zusätzlicher Test über die proxychains-Bibliothek
  mit der Konfiguration des Dienstes
- Ad-hoc-Test mit --proxy ohne root und ohne Speichern
- Hilfe und README ergänzt, Version 1.2.0

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
duffyduck
2026-10-05 14:34:44 +02:00
co-authored by Claude Opus 5.5
parent 3968c1a7b8
commit 9270994e82
2 changed files with 619 additions and 8 deletions
+62
View File
@@ -196,6 +196,7 @@ Markierungen: **G** = nutzt globalen Proxy, **E** = eigene Werte,
| Entf / d | Proxy vom Dienst entfernen |
| / | Filter (Name oder Beschreibung), Esc löscht den Filter |
| c | nur konfigurierte Dienste anzeigen (an/aus) |
| t | Verbindungstest für den gewählten Dienst (ohne Proxy: globaler Proxy) |
| r | gewählten Dienst sofort neu starten |
| F5 | Dienstliste neu einlesen |
| F1 / ? | Hilfe |
@@ -209,6 +210,7 @@ Markierungen: **G** = nutzt globalen Proxy, **E** = eigene Werte,
| ← → / Leertaste | Modus bzw. Proxy-Typ wählen (beim Typ gibt es zusätzlich „global“) |
| Enter | nächstes Feld bzw. Schaltfläche auslösen |
| F2 | Speichern |
| F3 / „Testen“ | Verbindungstest mit den eingegebenen, noch nicht gespeicherten Werten |
| Strg+U | Feld leeren |
| Esc | Abbrechen |
@@ -236,6 +238,7 @@ svc-proxy [BEFEHL] [OPTIONEN]
| `set DIENST... [FELDER] [--reset]` | Proxy für Dienst(e) setzen/ändern |
| `unset DIENST...` / `unset --all` | Proxy entfernen |
| `apply` | alle Drop-ins aus der Konfiguration neu erzeugen |
| `test [DIENST] [--target H:P] [--mail]` | Verbindungstest über den Proxy (siehe unten) |
| `help`, `-h`, `--help` | Hilfe mit Beispielen |
### Felder
@@ -287,6 +290,59 @@ praktisch zum Testen, z.B. zusammen mit `--no-reload`.
---
## Verbindungstest
```bash
sudo svc-proxy test kerio-connect --mail
```
```
Verbindungstest: Dienst kerio-connect.service
Proxy: socks5://max:****@192.168.1.50:1080 [proxychains]
[ OK ] Proxy erreichbar: 192.168.1.50:1080 (1 ms)
[FEHLER] gmail-smtp-in.l.google.com:25 → Proxy meldet: vom Regelwerk des Proxys nicht erlaubt (Port/Ziel gesperrt?)
[ OK ] smtp.gmail.com:587 → Antwort: 220 smtp.gmail.com ESMTP ... (46 ms)
[ OK ] smtp.gmail.com:465 → TLS ok, Antwort: 220 smtp.gmail.com ESMTP ... (61 ms)
[ OK ] pop.gmail.com:995 → TLS ok, Antwort: +OK Gpop ready for requests ... (67 ms)
[ OK ] imap.gmail.com:993 → TLS ok, Antwort: * OK Gimap ready for requests ... (105 ms)
Test über proxychains (so verbindet der Dienst):
[FEHLER] proxychains: gmail-smtp-in.l.google.com:25 → Verbindung abgelehnt
[ OK ] proxychains: smtp.gmail.com:587 → Antwort: 220 smtp.gmail.com ESMTP ...
...
Ergebnis: 2 Test(s) fehlgeschlagen.
```
Ablauf:
1. **Proxy erreichbar?** TCP-Verbindung zum Proxy.
2. **Handshake und Anmeldung:** SOCKS5, SOCKS4 oder HTTP CONNECT (auch `https`-Proxy).
Verständliche Meldungen z.B. bei falschem Kennwort, fehlender Anmeldung,
falschem Proxy-Typ (socks/http vertauscht) oder einem vom Proxy gesperrten Port.
3. **Ziele:** Tunnel zu jedem Ziel aufbauen und die Begrüßung lesen. Das zeigt,
dass wirklich Daten fließen (SMTP `220`, POP3 `+OK`, IMAP `* OK`, HTTP-Status).
Die Ports 443, 465, 993 und 995 werden per TLS angesprochen (ohne
Zertifikatsprüfung, es geht nur um die Verbindung).
4. **Nur im Modus proxychains:** Derselbe Test läuft noch einmal als normales
Programm über die proxychains-Bibliothek mit der Konfiguration des Dienstes.
Damit ist der komplette Weg geprüft, den auch der Dienst nimmt.
| Option | Bedeutung |
|---|---|
| `--target HOST:PORT` | Testziel, mehrfach möglich (Standard: `example.com:80`, `example.com:443`) |
| `--mail` | Mail-Ziele: SMTP 25/587/465, POP3S 995, IMAPS 993 (Gmail) |
| `--timeout SEK` | Zeitlimit pro Schritt (Standard 6 s) |
| `--proxy`, `--host`, … | Werte nur für den Test überschreiben, nichts wird gespeichert |
Ohne `DIENST` wird der globale Proxy getestet. Mit `--proxy URL` (ohne DIENST)
läuft der Test auch ohne root und ohne gespeicherte Konfiguration. So lässt sich
ein Proxy prüfen, bevor man ihn einträgt. Rückgabewert: `0` = alles ok,
`1` = mindestens ein Test fehlgeschlagen, praktisch für Monitoring-Skripte.
Hinweis zu Port 25: Viele Proxys und Provider sperren ausgehend Port 25. Der Test
zeigt genau das. Abhilfe ist ein SMTP-Relay (Smarthost) auf Port 587 oder 465.
---
## Beispiele
```bash
@@ -334,6 +390,12 @@ sudo svc-proxy set myapp --reset
sudo svc-proxy unset myapp --restart
sudo svc-proxy unset --all --no-restart
# Verbindungstests
sudo svc-proxy test # globaler Proxy
sudo svc-proxy test kerio-connect --mail # Mail-Ports über Kerios Proxy
sudo svc-proxy test kerio-connect --target mx.example.com:25 --target pop.example.com:995
svc-proxy test --proxy socks5://192.0.2.10:1080 --mail # ad hoc, ohne Speichern, ohne root
# Anzeigen
sudo svc-proxy list
sudo svc-proxy list --all