Linux.xinetd

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen

"xinetd als Redirector verwenden (in diesem Falle für SOAP auf einem fremden Server)"

  • Problematik

Ein Fremdsystem stellt Web-Services in Form von SOAP Diensten zur Verfügung Aus Sicherheitsgründen wird die Befragung der SOAP - Routinen nur für einzelne fest eingestellte Client-IP Adressen freigschaltet. Ich selbst habe jedoch wechselnde IP Adressen, und kann somit keine IP Adresse an den SOAP Betreiber durchgeben.

  • Lösungs-Strategie

Ein eigener dritter Server, der mir zur Verfügung steht, wird als SOAP-Gateway oder SOAP-Router oder SOAP-Redirector (wie man will) eingesetzt. Dessen IP wird vom SOAP Dienstleister freigeschaltet. Dieser Redirector kann auf einem gewissen vereinbarten Port angesteuert werden, leitet aber jeden Traffic an den eigentlichen SOAP Anbieter weiter.

Dienst, Eingangsseitig auf einen Port mappen

  • WICHTIG: Damit die Umleitung funktioniert muss erst mal der Dienst dem System bekannt gemacht werden. Dieser muss genauso wie der spätere xinetd service genannt werden.
  • TIPP: Spare Dir den Aufwand, und gebe im Service type = UNLISTED ein, dann sucht das System den Dienst nicht in der /etc/services.
  • In unserem Fall wollen wir den Aufwand mal machen!

SOAP als "dienst" erst mal bekannt machen

 joe /etc/services

diese Zeile an passender Stelle hinzu:

 soap 8081/tcp  # my soap redirect

einzelne redirect Dienste hinzunehmen

im Verzeichnis /etc/xinet.d die neue Datei "soap" anlegen.

joe /etc/xinetd.d/soap
service soap
{ 
 socket_type = stream
 wait = no
 flags = REUSE
 protocol = tcp
 type = UNLISTED               # nur wenn "soap" in der /etc/services ungenannt ist
 port = 8081                   # das ist der öffentliche Port
 user = root      
 redirect = 80.139.34.230 80   # "Ziel-IP" "Ziel-Port"
 disable = no
}

xinetd neu starten

  • nach Änderungen der Dateien in /etc/xinet.d muss der Dienst über die Änderungen informiert werden.
# die PID des aktuellen xinetd ermitteln
# die angegebene PID dann gut merken
pgrep xinetd

# Nun die PID in den folgende Befehl einsetzten
kill -HUP <PID>
  • unter Umständen gibt es mehrere PIDs (weis auch nicht warum). Besser ist es in diesem Fall den xinetd neu zu starten.
rcxinetd restart