Notes Client via http-Tunnel mit Domino-Server verbinden

  • Hallo Leute,


    folgenden Zugriff versuche ich zu konfigurieren:


    Notes-Client -> HTTP-Proxy -> Firewall1 -> Internet -> Firewall2(Fritzbox) -> Domino-Server_8.5.1


    Erläuterungen:


    Zwischen Notes-Client und Domino-Server sollen "normale" Notes-Datenbanken repliziert/abgeglichen werden

    Ich habe weder Kontrolle über den HTTP-Proxy noch habe ich Kontrolle über Firewall1, die nur http/s-Traffic rausläßt

    Ich habe volle Kontrolle über Firewall2 (ist eine Fritzbox) und über Domino-Server_8.5.1


    Meine Frage/Bitte:


    Bitte gebt mir ein paar Tipps, wie ich dieses Szenario ans Laufen bringe.

    Was ich bislang probiert habe:

    - Vorweg: der Domino-Server läuft und ich kann mit meinem Notes-Client korrekt zugreifen, wenn ich im selben Netz, wie der Domino-Server bin.

    - Sodann habe mir im Notes-Client eine Location/Umgebung angelegt und dort unter "Basics > Proxy-Configuration im Feld "HTTP-Tunnel" den HTTP-Proxy eingetragen

    - In names.nsf habe ich ein Connection-Document angelegt, das als Domino-Server auf Firewall2 zeigt

    - In Firewall 2 habe ich ein Port-Forwarding eingerichtet: Firewall2:1352 -> Domino-Server:1352


    Einziges Problem:


    Es funktioniert nicht :-(

    Netzwerk-Sniffer zeigt zumindest an, dass sich der Notes-Client mit dem Proxy unterhält.


    Ein Trace im Client sagt:


    Determining path to server FaSe1/Family

    Available Ports: TCPIP

    Checking normal priority connection documents only...

    Local network connection document found for FaSe1/Family

    Verifying address 'xxxxx.myfritz.net' for FaSe1/Family on TCPIP

    Connecting to Proxy Server: www-proxy.xxxxxx.de ...

    Network Connection established with Proxy

    Proxy Server failed to negotiate connection with target

    Unable to connect to FaSe1/Family on TCPIP (Proxy reports that an unauthorized/forbidden connection request was made)

    Unable to find any path to FaSe1/Family because Proxy reports that an unauthorized/forbidden connection request was made



    Hier bin ich mit meinem Latein am Ende ...

    Achtung: ich bin kein Domino-Experte - seid nachsichtig mit mir - bin schon froh, dass ich den Domino-Server überhaupt

    ans Laufen gebracht habe. Bitte also etwas ausführlicher als für "normale" Notes-Admins antworten.


    Viele Grüße


    QuoVadis

  • Frohes neues Jahr zusammen!


    Hier noch schnell ein Nachtrag - nämlich die 403er-Fehlermeldung vom Proxy, die ich leider nicht

    so genau gedeutet bekomme (wenn Ihr Erklärungen habt: nur her damit)


    Frame 368: 1083 bytes on wire (8664 bits), 1083 bytes captured (8664 bits) on interface \Device\NPF_{xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx}, id 0

    Interface id: 0 (\Device\NPF_{xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx})

    Interface name: \Device\NPF_{xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx}

    Interface description: Drahtlosnetzwerkverbindung

    Encapsulation type: Ethernet (1)

    Arrival Time: Dec 31, 2019 17:33:03.312547000 Mitteleuropäische Zeit

    [Time shift for this packet: 0.000000000 seconds]

    Epoch Time: 1577809983.312547000 seconds

    [Time delta from previous captured frame: 0.000570000 seconds]

    [Time delta from previous displayed frame: 0.000570000 seconds]

    [Time since reference or first frame: 23.745308000 seconds]

    Frame Number: 368

    Frame Length: 1083 bytes (8664 bits)

    Capture Length: 1083 bytes (8664 bits)

    [Frame is marked: False]

    [Frame is ignored: False]

    [Protocols in frame: eth:ethertype:ip:tcp:http:data-text-lines]

    [Coloring Rule Name: HTTP]

    [Coloring Rule String: http || tcp.port == 80 || http2]

    Ethernet II, Src: Avm_65:13:8f (24:65:11:65:13:8f), Dst: HonHaiPr_f4:9f:6b (7c:e9:d3:f4:9f:6b)

    Destination: HonHaiPr_f4:9f:6b (7c:e9:d3:f4:9f:6b)

    Address: HonHaiPr_f4:9f:6b (7c:e9:d3:f4:9f:6b)

    .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)

    .... ...0 .... .... .... .... = IG bit: Individual address (unicast)

    Source: Avm_65:13:8f (24:65:11:65:13:8f)

    Address: Avm_65:13:8f (24:65:11:65:13:8f)

    .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)

    .... ...0 .... .... .... .... = IG bit: Individual address (unicast)

    Type: IPv4 (0x0800)

    Internet Protocol Version 4, Src: 217.237.150.55, Dst: 192.168.xx.xx

    0100 .... = Version: 4

    .... 0101 = Header Length: 20 bytes (5)

    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)

    0000 00.. = Differentiated Services Codepoint: Default (0)

    .... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)

    Total Length: 1069

    Identification: 0x3c67 (15463)

    Flags: 0x4000, Don't fragment

    0... .... .... .... = Reserved bit: Not set

    .1.. .... .... .... = Don't fragment: Set

    ..0. .... .... .... = More fragments: Not set

    ...0 0000 0000 0000 = Fragment offset: 0

    Time to live: 60

    Protocol: TCP (6)

    Header checksum: 0x8e47 [correct]

    [Header checksum status: Good]

    [Calculated Checksum: 0x8e47]

    Source: 217.237.150.55

    Destination: 192.168.xx.xx

    Transmission Control Protocol, Src Port: 80, Dst Port: 11966, Seq: 2905, Ack: 122, Len: 1029

    Source Port: 80

    Destination Port: 11966

    [Stream index: 13]

    [TCP Segment Len: 1029]

    Sequence number: 2905 (relative sequence number)

    Sequence number (raw): 974601622

    [Next sequence number: 3934 (relative sequence number)]

    Acknowledgment number: 122 (relative ack number)

    Acknowledgment number (raw): 116639065

    0101 .... = Header Length: 20 bytes (5)

    Flags: 0x018 (PSH, ACK)

    000. .... .... = Reserved: Not set

    ...0 .... .... = Nonce: Not set

    .... 0... .... = Congestion Window Reduced (CWR): Not set

    .... .0.. .... = ECN-Echo: Not set

    .... ..0. .... = Urgent: Not set

    .... ...1 .... = Acknowledgment: Set

    .... .... 1... = Push: Set

    .... .... .0.. = Reset: Not set

    .... .... ..0. = Syn: Not set

    .... .... ...0 = Fin: Not set

    [TCP Flags: ·······AP···]

    Window size value: 29200

    [Calculated window size: 29200]

    [Window size scaling factor: -2 (no window scaling used)]

    Checksum: 0x4e66 [unverified]

    [Checksum Status: Unverified]

    Urgent pointer: 0

    [SEQ/ACK analysis]

    [iRTT: 0.035409000 seconds]

    [Bytes in flight: 1029]

    [Bytes sent since last PSH flag: 3933]

    [Timestamps]

    [Time since first frame in this TCP stream: 0.074223000 seconds]

    [Time since previous frame in this TCP stream: 0.000570000 seconds]

    TCP payload (1029 bytes)

    TCP segment data (1029 bytes)

    [3 Reassembled TCP Segments (3933 bytes): #365(1452), #366(1452), #368(1029)]

    [Frame: 365, payload: 0-1451 (1452 bytes)]

    [Frame: 366, payload: 1452-2903 (1452 bytes)]

    [Frame: 368, payload: 2904-3932 (1029 bytes)]

    [Segment count: 3]

    [Reassembled TCP length: 3933]

    [Reassembled TCP Data: 485454502f312e312034303320466f7262696464656e0d0a…]

    Hypertext Transfer Protocol

    HTTP/1.1 403 Forbidden\r\n

    [Expert Info (Chat/Sequence): HTTP/1.1 403 Forbidden\r\n]

    [HTTP/1.1 403 Forbidden\r\n]

    [Severity level: Chat]

    [Group: Sequence]

    Response Version: HTTP/1.1

    Status Code: 403

    [Status Code Description: Forbidden]

    Response Phrase: Forbidden

    Server: squid\r\n

    Mime-Version: 1.0\r\n

    Date: Tue, 31 Dec 2019 16:33:02 GMT\r\n

    Content-Type: text/html;charset=utf-8\r\n

    Content-Length: 3522\r\n

    [Content length: 3522]

    X-Squid-Error: ERR_ACCESS_DENIED 0\r\n

    Vary: Accept-Language\r\n

    Content-Language: en\r\n

    X-Cache: MISS from f-squidlb-b01.isp.t-ipnet.de\r\n

    X-Cache-Lookup: NONE from f-squidlb-b01.isp.t-ipnet.de:80\r\n

    Via: 1.1 f-squid-b01.isp.t-ipnet.de (squid)\r\n

    Connection: close\r\n

    \r\n

    [HTTP response 1/1]

    [Time since request: 0.037269000 seconds]

    [Request in frame: 357]

    [Request URI: xxxxxxxxxxxxxxxxxx.myfritz.net:1352]

    File Data: 3522 bytes

    Line-based text data: text/html (142 lines)

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\n

    <html><head>\n

    <meta type="copyright" content="Copyright (C) 1996-2018 The Squid Software Foundation and contributors">\n

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n

    <title>ERROR: The requested URL could not be retrieved</title>\n

    <style type="text/css"><!--\n

    /*\n

    * Copyright (C) 1996-2018 The Squid Software Foundation and contributors\n

    *\n

    * Squid software is distributed under GPLv2+ license and includes\n

    * contributions from numerous individuals and organizations.\n

    * Please see the COPYING and CONTRIBUTORS files for details.\n

    */\n

    \n

    /*\n

    Stylesheet for Squid Error pages\n

    Adapted from design by Free CSS Templates\n

    http://www.freecsstemplates.org\n

    Released for free under a Creative Commons Attribution 2.5 License\n

    */\n

    \n

    /* Page basics */\n

    * {\n

    \tfont-family: verdana, sans-serif;\n

    }\n

    \n

    html body {\n

    \tmargin: 0;\n

    \tpadding: 0;\n

    \tbackground: #efefef;\n

    \tfont-size: 12px;\n

    \tcolor: #1e1e1e;\n

    }\n

    \n

    /* Page displayed title area */\n

    #titles {\n

    \tmargin-left: 15px;\n

    \tpadding: 10px;\n

    \tpadding-left: 100px;\n

    \tbackground: url('/squid-internal-static/icons/SN.png') no-repeat left;\n

    }\n

    \n

    /* initial title */\n

    #titles h1 {\n

    \tcolor: #000000;\n

    }\n

    #titles h2 {\n

    \tcolor: #000000;\n

    }\n

    \n

    /* special event: FTP success page titles */\n

    #titles ftpsuccess {\n

    \tbackground-color:#00ff00;\n

    \twidth:100%;\n

    }\n

    \n

    /* Page displayed body content area */\n

    #content {\n

    \tpadding: 10px;\n

    \tbackground: #ffffff;\n

    }\n

    \n

    /* General text */\n

    p {\n

    }\n

    \n

    /* error brief description */\n

    #error p {\n

    }\n

    \n

    /* some data which may have caused the problem */\n

    #data {\n

    }\n

    \n

    /* the error message received from the system or other software */\n

    #sysmsg {\n

    }\n

    \n

    pre {\n

    }\n

    \n

    /* special event: FTP / Gopher directory listing */\n

    #dirmsg {\n

    font-family: courier, monospace;\n

    color: black;\n

    font-size: 10pt;\n

    }\n

    #dirlisting {\n

    margin-left: 2%;\n

    margin-right: 2%;\n

    }\n

    #dirlisting tr.entry td.icon,td.filename,td.size,td.date {\n

    border-bottom: groove;\n

    }\n

    #dirlisting td.size {\n

    width: 50px;\n

    text-align: right;\n

    padding-right: 5px;\n

    }\n

    \n

    /* horizontal lines */\n

    hr {\n

    \tmargin: 0;\n

    }\n

    \n

    /* page displayed footer area */\n

    #footer {\n

    \tfont-size: 9px;\n

    \tpadding-left: 10px;\n

    }\n

    \n

    \n

    body\n

    :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; }\n

    :lang(he) { direction: rtl; }\n

    --></style>\n

    </head><body id=ERR_ACCESS_DENIED>\n

    <div id="titles">\n

    <h1>ERROR</h1>\n

    <h2>The requested URL could not be retrieved</h2>\n

    </div>\n

    <hr>\n

    \n

    <div id="content">\n

    <p>The following error was encountered while trying to retrieve the URL: <a href="xxxxxxxxxxxxxxxxxx.myfritz.net:1352">xxxxxxxxxxxxxxxxxx.myfritz.net:1352</a></p>\n

    \n

    <blockquote id="error">\n

    <p><b>Access Denied.</b></p>\n

    </blockquote>\n

    \n

    <p>Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.</p>\n

    \n

    [truncated]<p>Your cache administrator is <a href="mailto:root?subject=CacheErrorInfo%20-%20ERR_ACCESS_DENIED&amp;body=CacheHost%3A%20f-squidlb-b01.isp.t-ipnet.de%0D%0AErrPage%3A%20ERR_ACCESS_DENIED%0D%0AErr%3A%20%5Bnone%5D%0D%0ATimeStam

    <br>\n

    </div>\n

    \n

    <hr>\n

    <div id="footer">\n

    <p>Generated Tue, 31 Dec 2019 16:33:02 GMT by f-squidlb-b01.isp.t-ipnet.de (squid)</p>\n

    <!-- ERR_ACCESS_DENIED -->\n

    </div>\n

    </body></html>\n


  • Na ganz einfach: Der Proxy ist so konfiguriert, daß er die von dir gewünschte Zieladresse nicht erlaubt, d.h. da musst du mit dem Proxy Admin über eine Konfigurationsanpassung reden.

    Wenn du darauf keinen Einfluss hast sehe ich keine Möglichkeit, daß du dein Ziel erreichst auf diesem Weg.


    Ansonsten könntest du lediglich eine HTTP-basierte VPN Verbindung aufbauen. Dazu muss dann aber ein VPN Server bei dir laufen.

  • taurec: Danke für die Mühen Deiner Antwort.


    Ich muss gestehen: so ganz verstehe ich sie nicht: ich habe gerade einmal meinen Notes-Client durch einen Webbrowser - in dem der o.g. Proxy konfiguriert war - und meinen Domino-Server durch einen sehr einfachen HTTP-Server (nicht HTTPS) ersetzt. Der HTTP-Server horchte ebenfalls auf Port 1352 (also dem typischen NRCP-Port). Ergebnis: der Zugriff vom Browser via Proxy auf den Webserver funktionierte einwandfrei.


    Wie passt das zu Deiner Vermutung "Der Proxy ist so konfiguriert, daß er die von dir gewünschte Zieladresse nicht erlaubt"?


    Auch sehe ich in der oben abgebildeten Antwort folgende Zeilen (aus der Menge herausgepickt):


    HTTP/1.1 403 Forbidden\r\n

    X-Squid-Error: ERR_ACCESS_DENIED 0\r\n

    <title>ERROR: The requested URL could not be retrieved</title>\n


    Das klingt für mich eher so, als ob der Squid-Proxy zwar will, aber nicht kann, weil auf dem Zielserver irgendetwas verboten ist.

    Oder liege ich da falsch?


    Viele Grüße


    QuoVadis

  • Hallo QuoVadis,


    du vergleichst bei deinem Test Äpfel mit Birnen, da die Protokolle HTTP und NRPC sich nicht ausschließlich durch den benutzten Netzwerk-Port unterscheiden.

    Wenn du also HTTP über den Port 1352 schickst sagt das rein gar nichts über NRPC aus - ansonsten wäre die Lösung deines Problems ja simpel, den Notes-Port auf 80 zu ändern und alles wäre schick ;)


    Wenn also deine erste Aussage stimmt, dass die Firewall1 ausschließlich http/s-Traffic gestattet dann wird kein NRPC direkt durchgehen, egal welche Zieladresse oder Port verwendet wird. Wäre die Firewall1 ein SOCKS-Proxy (circuit-level Proxy) sähe das etwas anders aus, dann würden auch weitere Protokolle (z.B. NRPC, FTP, …) durchgehen können - jenachdem was in der Firewall noch gestattet wurde. Das hat alles immer noch nichts mit den Ports zu tun.


    Wenn wir uns also wieder auf die ursprüngliche Aussage beschränken dass wirklich nur HTTP/S durchgeht dann bleiben zwei Möglichkeiten. Entweder man baut vom Client aus einen Tunnel direkt zum Ziel (VPN oder HTTP tunneling ohne CONNECT, benötigt auf Client und Ziel je eine Softwarekomponente) oder man lässt die Firewall1 das tun (HTTP CONNECT Methode). Firewall1 wird das vermutlich nicht tun (sonst würden wir hier nicht reden) also bleibt nur die erste Methode.


    Wenn ich die vollständige Kontrolle über das Ziel habe wäre z.B. ein einfacher Weg ein ad-hoc-VPN zwischen dem PC mit Notes und dem Domino aufzubauen, ich mache das öfter mit TeamViewer, da brauche ich keine extra Software die ich nicht eh schon verwende. Alternativ eine andere Software, die den Tunnel durch den Proxy schiebt.


    Der Firewall1-Admin kann btw. auch diverse Regeln festgelegt haben, die unkontrollierbare VPN's blockieren sollen, was das ganze sicher nie ganz verhindern aber zumindest erschweren kann.


    HTH

    Carsten

  • Die von dir aufgeführte Meldung kommt nicht vom Domino Server sondern vom Proxy Server, d.h. dieser verweigert die Verbindung.

    Das kann wie CarstenH geschrieben hat durchaus damit zusammenhängen, daß auf dem Proxy Regeln konfiguriert bzw Ausnahmen nicht konfiguriert sind, die den getunnelten NRPC (1352) Traffic nicht zulassen.


    Und dann gibt es eben genau die beiden Möglichkeiten:

    - Anpassung Proxy Konfiguration

    - HTTPS-basiertes VPN einrichten (wobei hier auch wieder die Proxy Regeln das verhindern könnten)

  • Hallo Carsten und Taurec,


    Danke nochmals für Eure Anregungen und Hinweise!


    Mit Euren Anregungen, meinem Halbwissen und vermutlich einer gehörigen Portion Glück konnte ich das Problem
    inzwischen lösen - allerdings anders als von Euch vorgeschlagen:


    - Meine Vermutung war: die meisten Proxies akzeptieren kein HTTP(s) CONNECT auf Ports ungleich 443.

    Sie müssen aber CONNECT's für Zielports 443 akzeptieren - sonst würde https nicht durch diese Proxies funktionieren.

    - Also habe ich die Fritzbox so konfiguriert, dass sie den externen Port 443 auf den internen Dominoserver, Port 1352 weiterleitet

    - Im Connection-Dokument in names.nsf des Notes-Clients habe ich die Zieladresse für den Dominoserver samt Port entsprechend hinterlegt

    (will sagen: ich habe eigentlich die externe IP der Fritzbox samt deren Port 443 dort hinterlegt).

    - Und in einer neu angelegten Notes-Client Location habe ich als HTTP-Tunnel den Proxy eingetragen


    Das funktionierte in meiner Testumgebung wunderbar.


    ... allerdings nur solange, wie der Proxy keine NTLM-Authentifizierug verlangt.

    Der Notes Client unterstützt zwar eine Basic Authentifizierung am Proxy, aber leider kein NTLM.


    Verlangt der Proxy unbedingt NTLM, so kann man mit CNTLM oder NTLMAPS oder PX von genotrance einen "Zwischenproxy"
    auf dem eigenen (Windows-)PC installieren (dort, wo auch der Notes-Client läuft), der die NTLM-Authentifizierung in den Traffic
    einbaut, bevor er alles an den Proxy weiterleitet.


    Die Strecke sieht dann so aus:


    Notes-Client -> CNTLM/NTLMAPS/PX-Proxy auf localhost -> HTTP-Proxy mit NTLM Authentifizierung -> Firewall1 -> ...

    ... -> Internet -> Firewall2(Fritzbox:443) -> Domino-Server_8.5.1(Domi:1352)


    Das Elegante an der Sache:


    - Der Domino-Server muss portmäßig (und auch sonstwie) nicht verbogen werden

    - Ich benötige keine Zusatz-VPN-Software


    Bleibt noch eine profane Frage an Euch Notes-Profis:


    - Befinde ich mich mit meinem Rechner im abgeschirmten Netz, so muss ich als Domino-Serverziel etwas wie "MyFritzbox.fitz.net:443"

    in das Connection Dokument eintragen und zusätzlich die Location mit dem darin konfigurierten HTTP-Tunnel auswählen.
    So weit, so gut.

    - Befinde ich mich mit meinem Rechner später einmal wieder in demjenigen Netz, wo auch der Domino-Server steht, so möchte ich ihn

    natürlich direkt ansprechen. Aktuell ändere ich dazu jedesmal im Client die Location (was völlig okay für mich ist)
    Aber nervigerweise muss ich dann auch das Connection-Dokument anpassen.


    Meine Frage an Euch:


    - Gibt es dafür einen eleganteren Weg?

    (Kann ich z.B. in Abhängigkeit von der gewählten Location im Notes-Client jeweils ein anderes Connection-Dokument

    in der names.nsf des Notes-Clients anziehen?)


    - Oder anders gefragt: wie konfiguriert man einen Client, der seinen Notes-Server unter verschiedenen Adressen

    findet - je nachdem, in welchem Netz sich der Client gerade aufhält?


    Viele Grüße


    QuoVadis