Konfiguration des Multiplexing Proxys

Der Proxy kann entsprechend der Projektanforderungen konfiguriert werden. Hierbei kann der Proxy entweder als normaler Manager innerhalb des Projektes oder als abgesetzter Manager verwendet werden. Ein abgesetzter Proxy erlaubt es, die Verbindungen mehrerer Projekte mit nur einem Proxy zu verwalten. Der Proxy kann ebenfalls für redundante oder verteilte Projekte konfiguriert werden. Das nachfolgende Kapitel beschreibt, wie der Multiplexing Proxy in verschiedenen Anwendungsfällen konfiguriert werden muss.

VORSICHT: Lokale Kommunikation wird nie verschlüsselt!

Folgende Anwendungsfälle werden innerhalb dieses Kapitels beschrieben:

Lokaler Client und Proxy

Wenn sich der WCCILproxy auf dem gleichen Host wie WCCILdata (Data Manager) und WCCILevent (Event Manager) befindet, sind keine weiteren Anpassungen erforderlich, da die Einstellungen automatisch durch die Config-Einträge [general} data und [general] event generiert werden.

Single System-Konfiguration

Der Proxy und der Server befinden sich auf dem selben Host. Der Client (auf einem anderen Host) kommuniziert mit dem Server über den Proxy.

  1. Der Client öffnet eine Verbindung zu dem Proxy und signalisiert diesem, eine Verbindung zu dem Data-Manager des Servers zu öffnen.
  2. Der Proxy öffnet eine Verbindung zu dem Data-Manager und verknüpft diese mit der Verbindung zum Client.
  3. Der Proxy sendet nun alle Nachrichten des Clients an den Data Manager und alle Nachrichten des Data-Managers zurück an den Client.

Der Verbindungsaufbau für den Event-Manager erfolgt identisch zum Verbindungsaufbau des Data-Managers.

Anmerkung: Ein Client kann so viele Verbindungen öffnen, wie erforderlich sind. So werden z.B. auch die Alive-Verbindungen, welche nicht im Bild oberhalb dargestellt wurden, über den Proxy abgewickelt. Bei der Verwendung von ReduLAN-Konfigurationen werden durch den Client bis zu 8 Verbindungen geöffnet:

2 Daten und 2 Alive-Verbindungen für den Data-Manager und

2 Daten und 2 Alive-Verbindungen für den Event-Manager.

Config-Datei Einträge

Serverkonfiguration

Keine weiteren Einstellungen erforderlich

Client-Konfiguration

[general]
data="Server[:<dataPort>]"
event="Server[:<eventPort>]"
mxProxy="Server Server[:<proxyPort>] cert"
Anmerkung: Die Konfiguration von <dataPort>, <eventPort> und <proxyPort> in den data-, event- und mxProxy-Einträgen sind optional. Wenn die Default-Portnummern verwendet werden, können die entsprechenden Angaben entfallen.
Anmerkung: mxProxy- Config-Eintrag in Projekten mit DesktopUI Client:

Wenn der mxProxy-Config-Eintrag nicht angegeben wurde, wird ein automatischer Standardeintrag verwendet.

Wenn Sie den mxProxy-Config-Eintrag manuell angegeben haben, wird dieser verwendet. Beachten Sie, dass auch die Data- und Event-Einträge automatisch gesetzt werden. Prüfen Sie daher, ob der Server Ihrer Data und Event-Einträge mit dem Server Ihres manuell angegebenen mxProxy-Eintrags übereinstimmt.

ACHTUNG! Beachten Sie, dass auch wenn der mxProxy-Config-Eintrag auf "none" gesetzt wäre, Sie den Multiplexing Proxy in Ihrem Projekt trotzdem starten müssen!

Abgesetzter Multiplexing Proxy

In vielen Fällen wird das Intranet eines Unternehmens als sichere Zone angesehen und es ist keine Verschlüsselung erforderlich. Trotzdem soll es möglich sein, einen verschlüsselten Zugang über das Internet zu haben. Es gibt mehrere Ansätze für eine Organisation um ihre extern verfügbaren Services in größeren, unsicheren Netzwerken, meist das Internet, anzubieten. Ein grundlegender Ansatz für dieses Szenario ist das Konfigurieren des Multiplexing Proxys innerhalb einer DMZ hinter einer Firewall.

VORSICHT: Da der Multiplexing Proxy kein Manager im herkömmlichen Sinn ist und keine DP-Identification benötigt, sind die Config Einträge "data =" und "event =" innerhalb der [general] Sektion für einen abgesetzten Proxy nicht erforderlich.
Anmerkung: Für diesen Anwendungsfall kann die Default-Konfiguration nicht verwendet werden. Hierfür müssen die Clients außerhalb des Unternehmens manuell konfiguriert werden.

Abgesetzer Multiplexing Proxy - Einzelner Server

Die Verschlüsselung wird auf allen Host innerhalb des Intranets deaktiviert ([general] mxProxy = "none"), nur die Clients innerhalb des Internets sowie der Proxy verwenden eine SSL Verschlüsselung.

Config-Datei Einträge

Konfiguration Server

[general]
mxProxy="none"

Konfiguration Abgesetzter Multiplexing Proxy

[proxy]
server="Server:<dataPort>"
server="Server:<eventPort>"
Anmerkung: Die Portnummer für die Server-Einträge sind auch erforderlich, wenn die Default-Portnummern für Data- und Event-Manager verwendet werden.

Konfiguration Client

[general]
data="Server[:<dataPort>]"
event="Server[:<eventPort>]"
mxProxy="Server Proxy[:<proxyPort>] cert"
Anmerkung: Die Konfiguration von <dataPort>, <eventPort> und <proxyPort> in den data-, event- und mxProxy-Einträgen sind optional. Wenn die Default-Portnummern verwendet werden, können die entsprechenden Angaben entfallen.

Abgesetzter Multiplexing Proxy - Redundanter Server

Konfiguration - Redundantes Server Paar

[general]
data="Server1-1[:<dataPort>],Server1-2[:<dataPort>]$Server2-1[:<dataPort>],Server2-2[:<dataPort>]"
event="Server1-1[:<eventPort>],Server1-2[:<eventPort>]$Server2-1[:<eventPort>],Server2-2[:<eventPort>]"
mxProxy="none"
Anmerkung: Die Konfiguration von <dataPort> und <eventPort> in den data- und event-Einträgen sind optional. Wenn die Default-Portnummern verwendet werden, können die entsprechenden Angaben entfallen.
VORSICHT: Bitte beachten Sie, dass die Kommunikation innerhalb des vertrauenswürdigen Netzwerks nicht verschlüsselt ist.

Konfiguration Abgesetzter Multiplexing Proxy

[proxy]
server = "Server1-1:<dataPort>"
server = "Server1-1:<eventPort>"
server = "Server1-2:<dataPort>"
server = "Server1-2:<eventPort>"
server="Server2-1:<dataPort>"
server="Server2-1:<eventPort>"
server="Server2-2:<dataPort>"
server="Server2-2:<eventPort>"
Anmerkung: Die Port Nummer für die Server-Einträge sind auch erforderlich, wenn die Default-Portnummern für Data- und Event-Manager verwendet werden.

Client Konfiguration

VORSICHT: Beachten Sie, dass wenn Sie ein mobiles Gerät oder das Desktop UI verwenden, Sie die notwendigen "Client Konfiguration"-Config-Einträge zu der config.webclient-Datei hinzufügen.
[general]
data="Server1-1[:<dataPort>],Server1-2[:<dataPort>]$Server2-1[:<dataPort>],Server2-2[:<dataPort>]"
event="Server1-1[:<eventPort>],Server1-2[:<eventPort>]$Server2-1[:<eventPort>],Server2-2[:<eventPort>]"
mxProxy = "Server1-1 Proxy[:<proxyPort>] cert"
mxProxy = "Server1-2 Proxy[:<proxyPort>] cert"
mxProxy = "Server2-1 Proxy[:<proxyPort>] cert"
mxProxy = "Server2-2 Proxy[:<proxyPort>] cert"
Anmerkung: Die Konfiguration von <dataPort>, <eventPort> und <proxyPort> in den data-, event- und mxProxy-Einträgen sind optional. Wenn die Default-Portnummern verwendet werden, können die entsprechenden Angaben entfallen.

Abgesetzter Redundanter Multiplexing Proxy - Redundanter Server

Konfiguration - Redundantes Server Paar

[general]
data="Server1-1[:<dataPort>],Server1-2[:<dataPort>]$Server2-1[:<dataPort>],Server2-2[:<dataPort>]"
event="Server1-1[:<eventPort>],Server1-2[:<eventPort>]$Server2-1[:<eventPort>],Server2-2[:<eventPort>]"
mxProxy="none"
Anmerkung: Die Konfiguration von <dataPort> und <eventPort> in den data- und event-Einträgen sind optional. Wenn die Default-Portnummern verwendet werden, können die entsprechenden Angaben entfallen.
VORSICHT: Bitte beachten Sie, dass die Kommunikation innerhalb des vertrauenswürdigen Netzwerks nicht verschlüsselt ist.

Konfiguration Abgesetzter Multiplexing Proxy 1

[proxy]
server = "Server1-1:<dataPort>"
#server = "Server1-2:<dataPort>"
server = "Server2-1:<dataPort>"
#server = "Server2-2:<dataPort>"
server = "Server1-1:<eventPort>"
#server = "Server1-2:<eventPort>"
server = "Server2-1:<eventPort>"
#server = "Server2-2:<eventPort>"

Konfiguration Abgesetzter Multiplexing Proxy 2

[proxy]
#server = "Server1-1:<dataPort>"
server = "Server1-2:<dataPort>"
#server = "Server2-1:<dataPort>"
server = "Server2-2:<dataPort>"
#server = "Server1-1:<eventPort>"
server = "Server1-2:<eventPort>"
#server = "Server2-1:<eventPort>"
server = "Server2-2:<eventPort>"
Anmerkung: Die Portnummer für die Server-Einträge sind auch erforderlich wenn die Default-Portnummern für Data und Event Manager verwendet werden.

Client Konfiguration

VORSICHT:

Beachten Sie, dass, wenn Sie ein mobiles Gerät oder das Desktop UI verwenden, Sie die notwendigen "Client Konfiguration"-Config-Einträge zu der config.webclient-Datei hinzufügen.

[general]
data="Server1-1[:<dataPort>],Server1-2[:<dataPort>]$Server2-1[:<dataPort>],Server2-2[:<dataPort>]"
event="Server1-1[:<eventPort>],Server1-2[:<eventPort>]$Server2-1[:<eventPort>],Server2-2[:<eventPort>]"

mxProxy="Server1-1 Proxy-1[:<proxyPort>] cert"
mxProxy="Server1-2 Proxy-2[:<proxyPort>] cert"
mxProxy="Server2-1 Proxy-1[:<proxyPort>] cert"
mxProxy="Server2-2 Proxy-2[:<proxyPort>] cert"
Anmerkung: Die Konfiguration von <dataPort>, <eventPort> und <proxyPort> in den data-, event- und mxProxy-Einträgen sind optional. Wenn die Default-Portnummern verwendet werden können die entsprechenden Angaben entfallen.

Multiplexing Proxy in einem verteilten System

Für die Konfiguration des Multiplexing Proxys innerhalb eines verteilten Systems müssen für die unterschiedlichen Systeme verschiedene Config-Einträge angegeben werden. Für ein Beispiel siehe Kapitel Beispiel für ein verteiltes System mit unterschiedlichen WinCC OA -Versionen.

Verbindung mit einem kundenspezifischen WinCC OA - Server Manager über Multiplexing Proxy

Der WinCC OA Multiplexing Proxy baut eine Verbindung zu freigegebenen WinCC OA-Server Manager auf. Einige WinCC OA-Server Manager (Data-Manager, Event-Manager, Redu-Manager, Split-Manager) sind standardmäßig freigegeben.

Der WCCILproxy kann die Verbindung aufbauen, weil er die Default-Ports der Server kennt oder die geänderte Parametrierung der Ports aus der Config-Datei liest. Weil der WCCILproxy nicht weiß, wie ein Client die Server anspricht (per Hostname oder per IP-Adresse), generiert er nicht nur einen [proxy]server= Eintrag pro Server, sondern einen Eintrag für jeden Hostnamen und jede IP-Addresse des Hosts.

Für einen Host mit 2 Netzwerkkarten generiert der WCCILproxy, für den Fall dass ein redundantes Netzwerk konfiguriert ist, für jeden Server mindestens 5 [proxy]server= Einträge.

- einen Eintrag für die IP-Adresse jeder Netzwerkkarte

z.B.
 server = "192.168.1.1:<dataPort>"
 server = "192.168.2.1:<dataPort>"

- einen Eintrag für jeden Hostnamen jeder IP-Adresse

z.B.
 server = "speedy:<dataPort>"
 server = "speedy_1:<dataPort>"
 server = "speedy_2:<dataPort>"

Kundenspezifische WinCC OA-Server Manager müssen manuell für den Multiplexing Proxy freigegeben werden, weil der Proxy nicht den Defaultport oder die Severport-Konfiguration kennt. Damit die kundenspezifischen WinCC OA-Server Manager über den Multiplexing Proxy erreicht werden können, muss manuell [proxy]server= Einträge erstellt werden. Bei großen Anlagen wo die Projektkonfiguration mit Config-Datei-Templates erfolgt, oder für System-Integratoren, die Branchenpakete erstellen, ist dieses Verfahren fehlerträchtig, weil die Config-Datei für jeden Host angepasst werden muss.

Um diesen Prozess bei der Projektierung zu erleichtern und zu beschleunigen, bietet WinCC OA das Schlüsselwort $host. Dieses Schlüsselwort generiert die notwendigen Einträge für den spezifischen Server ( WinCC OA-System). Mit dem Eintrag wird dem WCCILproxy mitgeteilt, dass es einen Kundenspezifischen Server gibt und er für diesen Server die gleichen Defaults, wie für die standardmäßig freigegebenen Manager, erzeugen soll.

Im folgenden Beispiel für einen Server am Host "Speedy" mit dem Serverport 1234, generiert der WCCILproxy

für den Eintrag
 [proxy]
 server = "$host:1234"

- einen Eintrag für die IP-Adresse jeder Netzwerkkarte

z.B.
 [proxy]
 server = "192.168.1.1:1234"
 server = "192.168.2.1:1234"

- einen Eintrag für jeden Hostnamen jeder IP-Adresse

z.B.
 [proxy]
 server = "speedy:1234"
 server = "speedy_1:1234"
 server = "speedy_2:1234“
Abbildung 1. Kommunikation mit einem kundenspezifischenWinCC OA-Manager über Multiplexing Proxy

Multiplexing Proxy unter Linux

Wenn der Multiplexing Proxy unter Linux verwendet wird, ist die Anzahl der Clients, die gleichzeitig über Multiplexing Proxy eine Verbindung aufbauen, eingeschränkt.

Die maximale Anzahl der File-Deskriptoren pro Prozess ist 1024. Die Anzahl der verfügbaren File-Descriptoren pro Prozess kann mit dem Shell-Befehl ulimit –n <Nummer der Deskriptoren> gesetzt werden. Diese Einschränkungen werden für den Multiplexing Proxy berücksichtigt.

Die Anzahl der File-Deskriptoren, die für den Multiplexing Proxy - Single Client-Verbindung, vorausgesetzt werden:

  • Wenn die Clients Single-Netzwerkverbindungen verwenden, ist die Anzahl8(1 Verbindung benötigt 8 File-Deskriptoren).

  • Wenn die Clients redundante Netzwerkverbindungen verwenden, ist diese Anzahl16(1 Verbindung benötigt 16 File-Deskriptoren).

Wenn die Alive-Überwachung verwendet wird, kann diese einen Einfluss auf die Anzahl haben.

Es gibt eine bestimmte Reserve von verfügbaren File-Deskriptoren im Multiplexing Proxy für andere Zwecke wie Log-Dateien, Standard-Eingabe/Ausgabe usw.

Typische Client-Szenarien:

Beispiel 1
Die Clients verwenden Single-Netzwerkverbindung
Alive-Überwachung wird verwendet
Die Anzahl der verfügbaren File-Descriptoren pro Prozess wurde mit ulimit -n auf 4096 gesetzt
Die maximale Anzahl von Clients, die sich gleichzeitig über den Multiplexing Proxy verbinden, ist 126
Beispiel 2
Die Clients verwenden redundante Netzwerkverbindungen
Alive-Überwachung wird verwendet
Die Anzahl der verfügbaren File-Descriptoren pro Prozess wurde mit ulimit -n auf 4096 gesetzt
Die maximale Anzahl von Clients, die sich gleichzeitig über den Multiplexing Proxy verbinden, ist 63
Beispiel 3
Die Clients verwenden Single Netzwerkverbindungen
Alive-Überwachung wird verwendet
Die Anzahl der verfügbaren File-Descriptoren pro Prozess wurde mit ulimit -n auf 256 gesetzt
Die maximale Anzahl von Clients, die sich gleichzeitig über den Multiplexing Proxy verbinden, ist 30

Multiplexing Proxy und IPV6-Adressen

Wenn eine IPV6-Adresse für den "server" und "mxProxy"-Einträge verwendet wird, müssen [ ] (Eckige Klammern) verwendet werden.

[general]
mxProxy = "[::1] [::1]:5678 cert"
[proxy]
server = "[fe80::2c5c:5415:98f1:82f3]:1234"