yuezk / GlobalProtect-openconnect

A GlobalProtect VPN client for Linux, written in Rust, based on OpenConnect and Tauri, supports SSO with MFA, Yubikey, and client certificate authentication, etc.
GNU General Public License v3.0
1.39k stars 154 forks source link

Connection Failure #1

Closed alexanderwwagner closed 4 years ago

alexanderwwagner commented 4 years ago

I installed the GP VPN Client from the AUR repository (Manjaro).

Then I insert the address from my portal and clicked the connect button. But then the Text: "Not Connected" changes only for about a half second to I think "Authentification". It is to short to read the whole word... Then the text changes back to Not Connected with no more effect.

Annotation: The openconnect-palo-git (another AUR package) works currently fine

Have you any idea what can be the problem?

Thank you!

yuezk commented 4 years ago

@Test4564 Thanks for your feedback. Can you provide the information listed below, thanks?

  1. The client only supports the SAML authentication mode, Is your VPN using that mode?
  2. Does it launch the authentication dialog when you clicked the Connect button?
  3. Paste the output of which openconnect and openconnect --help.

And I suggest you use the official openconnect package since the openconnect has supported GlobalProtect VPN officially.

alexanderwwagner commented 4 years ago

There are my answers: At first step I switched to the official openconnect package, which you mentioned. => But the effect is the same as before

  1. I didńt know that I have to config my VPN... => What do I have to do?

  2. No there is no effect, like a dialog box... Only the Text switches from Disconnected to A.... for a very short time...

  3. Terminial: openconnect:

` Kein Server angegeben Aufruf: openconnect [Optionen] Open client für mehrere VPN-Protokolle, Version v8.05

GnuTLS wird verwendet. Vorhandene Funktionsmerkmale: PKCS#11, RSA software token, HOTP software token, TOTP software token, Yubikey OATH, System keys, DTLS, ESP --config=CONFIGFILE Optionen aus Konfigurationsdatei lesen -V, --version Versionsnummer ausgeben -h, --help Hilfetext zeigen

VPN-Protokoll festlegen: --protocol=anyconnect Kompatibel zu Cisco AnyConnect SSL VPN und auch ocserv (Vorgabe) --protocol=nc Compatible with Juniper Network Connect --protocol=gp Kompatibel zu Palo Alto Networks (PAN) GlobalProtect SSL VPN --protocol=pulse Compatible with Pulse Connect Secure SSL VPN

Legitimierung: -u, --user=NAME Benutzername für die Anmeldung festlegen --no-passwd Legitimierung mit Passwort/SecurID ausschalten --non-inter Keine Benutzereingabe erwarten; abbrechen, falls erforderlich --passwd-on-stdin Passwort von Standardeingabe lesen --authgroup=GROUP Wählen Sie den Legitimierungs-Anmeldeabschnitt -F, --form-entry=FORM:OPT=VALUE Provide authentication form responses -c, --certificate=CERT SSL Client-Zertifikat CERT verwenden -k, --sslkey=KEY Private SSL-Schlüsseldatei KEY verwenden -e, --cert-expire-warning=DAYS Warnen, wenn die Lebensdauer des Zertifikats unter DAYS liegt -g, --usergroup=GROUP Benutzergruppe für die Anmeldung festlegen -p, --key-password=PASS Schlüsselkennwort oder TPM-SRK-PIN setzen --key-password-from-fsid Schlüsselkennwort ist fsid des Dateisystems --token-mode=MODE Software Token-Typ: rsa, totp oder hotp --token-secret=STRING Software-Token-Geheimnis

Server-Überprüfung: --servercert=FINGERPRINT SHA1-Fingerabdruck des Serverzertifikats --no-cert-check Gültigkeit des SSL-Serverzertifikats nicht voraussetzen --no-system-trust Standard-Zertifizierungsstellen des Systems deaktivieren --cafile=FILE Zertifikatdatei für Server-Überprüfung

Internetverbindung: -P, --proxy=URL Proxy-Server festlegen --proxy-auth=METHODS Legitimierungsmethoden für Proxy festlegen --no-proxy Proxy deaktivieren --libproxy libproxy zur automatischen Konfiguration des Proxys verwenden --reconnect-timeout Wartezeit für erneuten Verbindungsversuch in Sekunden --resolve=HOST:IP IP beim Verbinden mit HOST verwenden --passtos TOS/TCLASS kopieren, wenn DTLS verwendet wird --dtls-local-port=PORT Lokalen Port für DTLS- und ESP-Datagramme festlegen

Legitimierung (Zwei-Faktor): -C, --cookie=COOKIE Legitimierungs-Cookie COOKIE verwenden --cookie-on-stdin Cookie von Standardeingabe lesen --authenticate Nur legitimieren und Anmeldeinformationen ausgeben --cookieonly Nur Cookie holen und ausgeben, nicht verbinden --printcookie Vor dem Verbinden Cookie ausgeben

Prozesssteuerung: -b, --background Nach Start im Hintergrund weiterlaufen --pid-file=PIDFILE PID des Daemons in diese Datei schreiben -U, --setuid=USER Privilegien nach Verbinden ablegen

Protokollierung (Zwei-Faktor): -l, --syslog syslog für Fortschrittsmeldungen verwenden -v, --verbose Mehr Ausgabe -q, --quiet Weniger Ausgabe --dump-http-traffic HTTP Authentifizierungs-Verkehr abspeichern (impliziert --verbose) --timestamp Zeitstempel der Fortschrittsnachricht voranstellen

VPN-Konfigurationsskript: -i, --interface=IFNAME IFNAME für Tunnel-Schnittstelle verwenden -s, --script=SCRIPT Shell-Befehlszeile für die Verwendung eines vpnc-kompatiblen Konfigurationsskripts Vorgabe: "/etc/vpnc/vpnc-script" -S, --script-tun Verkehr an »Skript«-Programm weiterleiten, nicht tun

Tunnelsteuerung: --disable-ipv6 IPv6-Verbindung nicht anfordern -x, --xmlconfig=CONFIG XML-Konfigurationsdatei -m, --mtu=MTU MTU vom Server anfordern (nur veraltete Server) --base-mtu=MTU Path MTU vom/zum Server angeben -d, --deflate Enable stateful compression (default is stateless only) -D, --no-deflate Disable all compression --force-dpd=INTERVAL Minimalintervall zum Erkennen von »Dead Peers« festlegen --pfs »perfect forward secrecy« verlangen --no-dtls DTLS und ESP abschalten --dtls-ciphers=LIST OpenSSL-Schlüssel zur Unterstützung für DTLS -Q, --queue-len=LEN Warteschlangenbegrenzung auf LEN Pakete setzen

Lokale Systeminformationen: --useragent=STRING HTTP-Kopf User-Agent: Feld --local-hostname=STRING Lokaler Rechnername, der an den Server gemeldet wird --os=STRING zu berichtender Typ des Betriebssystems (linux,linux-64,win,...) --version-string=STRING reported version string during authentication (default: v8.05)

Ausführung des Trojaner-Binarys (CSD): --csd-user=USER Privilegien während Trojaner-Ausführung ablegen --csd-wrapper=SCRIPT SCRIPT an Stelle der Trojaner-Binärdatei ausführen

Serverfehler: --no-http-keepalive Wiederverwendung von HTTP-Verbindungen abschalten --no-xmlpost XML POST-Authentifizierung nicht versuchen

Bitte lesen Sie für Hilfe zu OpenConnect die Webseite http://www.infradead.org/openconnect/mail.html

` 3.2 Terminal: openconnect --help

**Aufruf: openconnect [Optionen] Open client für mehrere VPN-Protokolle, Version v8.05

GnuTLS wird verwendet. Vorhandene Funktionsmerkmale: PKCS#11, RSA software token, HOTP software token, TOTP software token, Yubikey OATH, System keys, DTLS, ESP --config=CONFIGFILE Optionen aus Konfigurationsdatei lesen -V, --version Versionsnummer ausgeben -h, --help Hilfetext zeigen

VPN-Protokoll festlegen: --protocol=anyconnect Kompatibel zu Cisco AnyConnect SSL VPN und auch ocserv (Vorgabe) --protocol=nc Compatible with Juniper Network Connect --protocol=gp Kompatibel zu Palo Alto Networks (PAN) GlobalProtect SSL VPN --protocol=pulse Compatible with Pulse Connect Secure SSL VPN

Legitimierung: -u, --user=NAME Benutzername für die Anmeldung festlegen --no-passwd Legitimierung mit Passwort/SecurID ausschalten --non-inter Keine Benutzereingabe erwarten; abbrechen, falls erforderlich --passwd-on-stdin Passwort von Standardeingabe lesen --authgroup=GROUP Wählen Sie den Legitimierungs-Anmeldeabschnitt -F, --form-entry=FORM:OPT=VALUE Provide authentication form responses -c, --certificate=CERT SSL Client-Zertifikat CERT verwenden -k, --sslkey=KEY Private SSL-Schlüsseldatei KEY verwenden -e, --cert-expire-warning=DAYS Warnen, wenn die Lebensdauer des Zertifikats unter DAYS liegt -g, --usergroup=GROUP Benutzergruppe für die Anmeldung festlegen -p, --key-password=PASS Schlüsselkennwort oder TPM-SRK-PIN setzen --key-password-from-fsid Schlüsselkennwort ist fsid des Dateisystems --token-mode=MODE Software Token-Typ: rsa, totp oder hotp --token-secret=STRING Software-Token-Geheimnis

Server-Überprüfung: --servercert=FINGERPRINT SHA1-Fingerabdruck des Serverzertifikats --no-cert-check Gültigkeit des SSL-Serverzertifikats nicht voraussetzen --no-system-trust Standard-Zertifizierungsstellen des Systems deaktivieren --cafile=FILE Zertifikatdatei für Server-Überprüfung

Internetverbindung: -P, --proxy=URL Proxy-Server festlegen --proxy-auth=METHODS Legitimierungsmethoden für Proxy festlegen --no-proxy Proxy deaktivieren --libproxy libproxy zur automatischen Konfiguration des Proxys verwenden --reconnect-timeout Wartezeit für erneuten Verbindungsversuch in Sekunden --resolve=HOST:IP IP beim Verbinden mit HOST verwenden --passtos TOS/TCLASS kopieren, wenn DTLS verwendet wird --dtls-local-port=PORT Lokalen Port für DTLS- und ESP-Datagramme festlegen

Legitimierung (Zwei-Faktor): -C, --cookie=COOKIE Legitimierungs-Cookie COOKIE verwenden --cookie-on-stdin Cookie von Standardeingabe lesen --authenticate Nur legitimieren und Anmeldeinformationen ausgeben --cookieonly Nur Cookie holen und ausgeben, nicht verbinden --printcookie Vor dem Verbinden Cookie ausgeben

Prozesssteuerung: -b, --background Nach Start im Hintergrund weiterlaufen --pid-file=PIDFILE PID des Daemons in diese Datei schreiben -U, --setuid=USER Privilegien nach Verbinden ablegen

Protokollierung (Zwei-Faktor): -l, --syslog syslog für Fortschrittsmeldungen verwenden -v, --verbose Mehr Ausgabe -q, --quiet Weniger Ausgabe --dump-http-traffic HTTP Authentifizierungs-Verkehr abspeichern (impliziert --verbose) --timestamp Zeitstempel der Fortschrittsnachricht voranstellen

VPN-Konfigurationsskript: -i, --interface=IFNAME IFNAME für Tunnel-Schnittstelle verwenden -s, --script=SCRIPT Shell-Befehlszeile für die Verwendung eines vpnc-kompatiblen Konfigurationsskripts Vorgabe: "/etc/vpnc/vpnc-script" -S, --script-tun Verkehr an »Skript«-Programm weiterleiten, nicht tun

Tunnelsteuerung: --disable-ipv6 IPv6-Verbindung nicht anfordern -x, --xmlconfig=CONFIG XML-Konfigurationsdatei -m, --mtu=MTU MTU vom Server anfordern (nur veraltete Server) --base-mtu=MTU Path MTU vom/zum Server angeben -d, --deflate Enable stateful compression (default is stateless only) -D, --no-deflate Disable all compression --force-dpd=INTERVAL Minimalintervall zum Erkennen von »Dead Peers« festlegen --pfs »perfect forward secrecy« verlangen --no-dtls DTLS und ESP abschalten --dtls-ciphers=LIST OpenSSL-Schlüssel zur Unterstützung für DTLS -Q, --queue-len=LEN Warteschlangenbegrenzung auf LEN Pakete setzen

Lokale Systeminformationen: --useragent=STRING HTTP-Kopf User-Agent: Feld --local-hostname=STRING Lokaler Rechnername, der an den Server gemeldet wird --os=STRING zu berichtender Typ des Betriebssystems (linux,linux-64,win,...) --version-string=STRING reported version string during authentication (default: v8.05)

Ausführung des Trojaner-Binarys (CSD): --csd-user=USER Privilegien während Trojaner-Ausführung ablegen --csd-wrapper=SCRIPT SCRIPT an Stelle der Trojaner-Binärdatei ausführen

Serverfehler: --no-http-keepalive Wiederverwendung von HTTP-Verbindungen abschalten --no-xmlpost XML POST-Authentifizierung nicht versuchen

Bitte lesen Sie für Hilfe zu OpenConnect die Webseite http://www.infradead.org/openconnect/mail.html**

Thank you!

yuezk commented 4 years ago

@Test4564

I didńt know that I have to config my VPN...

The SAML authentication mode should be set by the network administrator, if your VPN doesn't support that mode, then you might not need this client. Since the openconnect CLI can handle the basic authentication mode properly.

But the openconnect CLI cannot handle the SAML authentication mode well, because it needs to launch the browser to finish the authentication. So I wrote this GUI client to finish the SAML authentication and connected to the VPN after that.

alexanderwwagner commented 4 years ago

Okay thank you! I did not realize that there must be a SAML authentication mode!