Docker & QEMU auf einem Rechner

Problem : Ich habe Docker und QEMU auf einem Rechner laufen. Nach der Docker Installation war es der virtuellen Maschine in QEMU nicht mehr möglich ins Internet zu zugreifen.

Lösung :
In meinem Fall waren die Default Einstellungen der Docker-CE Installation Schuld. Durch das korrigieren der IP-Tables konnte ich das Problem in meinem Fall beheben.
iptables -A FORWARD -i br1 -o br1 -j ACCEPT
Der Fehler tritt auch manchmal auf wenn der Linux Server in QEMU installiert ist und die lokale Firewall Einstellung das forwarding nicht zulässt.

Switch HP OfficeConnect 1920S: Telnet/SSH aktivieren

Problem:
Der Switch HP OfficeConnect 1920S ist ein sehr günstiger Full-Gigabit PoE Switch. Man muss ein paar Abstriche am Gerät machen, aber an sich ein sehr guter Switch. Für mich sind folgende Punkt etwas störend, aber für den Zweck der Switche akzeptabel:
- kein Consolen-Port (serieller Anschluss)
- Stromkabel kein Kaltgerätestecker - ist nur für den direkten Anschluss an der USV geeignet.
- Only Web-Managed

Mein Problem war, dass der Switch nur Web-Managed ist und keinen Zugriff per Telnet oder SSH bietet. Da ich kein Freund von GUIs bei Switchen bin wollte ich Telnet und/oder SSH-Zugriff haben um auf die CLI zugreifen zu können.
Per Default leider nicht möglich, aber man kann es über einen kleinen Umweg aktivieren!

Lösung:
ACHTUNG: Diese Lösung funktioniert nur bis Firmeware PD.02.08 - mit der Version PD.02.09 hat HP diese Möglichkeit unterbunden (Danke Benjamin für den Hinweis!)
1.) Firmware-Update auf die aktuelle Version über die GUI (bei mir PD.02.06)
2.) Eine aktuelle Start-Config exportieren über Maintenance -> Backup and Update Manage
3.) Die exportierte Config editieren und folgende Zeile VOR der Zeile "configure" setzen
ip telnet server enable
Beispiel Startup-Config von mir:
!Current Configuration:
!
!System Description "HPE OfficeConnect Switch 1920S 48G 4SFP PPoE+ (370W) JL386A, PD.02.06, Linux 3.6.5-a07f8920, U-Boot 2012.10-00118-g3773021 (Oct 11 2016 - 15:39:54)"
!System Software Version "PD.02.06"
!System Up Time "0 days 0 hrs 6 mins 39 secs"
!Additional Packages HPE QOS,HPE IPv6 Management,HPE Routing
!Current SNTP Synchronized Time: SNTP Client Mode Is Disabled
!
vlan database
exit
ip telnet server enable
configure
time-range Schedule-1
exit
time-range Schedule-2
exit
no username guest
line console
exit
line telnet
exit
line ssh
exit
!
exit

4.) Neue Startup-Config speichern und über die GUI als Startup-Config importieren (Maintenance -> Backup and Update Manage)
5.) Switch rebooten
6.) Telnet auf die Switch-IP ausführen (Default: Telnet 192.168.1.1)
7.) Mit folgenden Zeilen SSH aktivieren:
enable
configure
crypto key generate rsa
crypto key generate dsa
exit
ip ssh server enable
ip ssh protocol 2
write memory confirm
quit

8.) Wer möchte kann Telnet auch wieder deaktivieren mit dem Befehl:
ip telnet server disable


Kleiner Tipp am Rande: Wenn man die Startup-Config hochlädt, dann werden Kennwörter und sonstige Konfigurationen wieder verworfen! Also bitte erste Telnet/SSH aktivieren und dann Switch konfigurieren!

Quelle für die Hilfe:
Switches 'HPE OfficeConnect 1920S' - Enable SSH / TFTP Services

Websockets mit Apache hinter haproxy

Ich hab hier eine Anwendung die WebSocket verwendet und im HA Umfeld läuft (haproxy). Leider benötigt diese Anwendung auch Sessions (sticky) deswegen musste ich ein wenig basteln ;-) Bei mir läuft eine node.js Anwendung hinter dem haproxy , für andere Fälle muss man vermutlich noch etwas mit der Konfiguration spielen.

haproxy config websockets
Erstmal habe ich in der vhost des Apaches dafür gesorgt das ws auf den richtigen Server geleitet wird.

vhost
   RewriteEngine On
   RewriteCond %{HTTP:Connection} Upgrade [NC]
   RewriteCond %{HTTP:Upgrade} websocket [NC]
   RewriteRule /demoapp/(.*) ws://demo-srv-01:3030/$1 [P,L]

   RedirectMatch           ^/demoapp$   TARGET-URL/demoapp/
   ProxyPass               /demoapp/    http://demo-srv-01:3030/
   ProxyPassReverse        /demoapp/    http://demo-srv-01:3030/

Dann hab ich die haproxy Konfiguration auf die Anwendung zugeschnitten.

haproxy
listen demoapp:3030
  bind *:3030
  # EIO ist immer gesetzt wenn über Websocket
  acl IsStatus urlp(EIO) 3
  use_backend ws_demoapp if IsStatus
  use_backend default if !IsStatus

backend ws_demoapp
  mode http
  # eventuell gesetzte Header löschen
  rspdel ^Server:.*
  rspdel ^X-Powered-By:.*
  # und durch Server demoapp Header ersetzen
  rspadd Server:\ demoapp
  # diese Seite muss HTTP-Status 200 liefern damit der HA erkennt das alles ok ist
  option httpchk HEAD /lbhealth
  # check auf Status wenn der 200 ist ist alles ok
  http-check expect status 200
  # using the `io` cookie set upon handshake
  cookie io prefix indirect nocache
  # Server Endpunkte
  server wsdemoapp01 ws-demo-srv-01:8200 check cookie monitor01
  server wsdemoapp02 ws-demo-srv-02:8200 check cookie monitor02

backend default
  mode http
  # eventuell gesetzte Header löschen
  rspdel ^Server:.*
  rspdel ^X-Powered-By:.*
  # und durch Server demoapp Header ersetzen
  rspadd Server:\ demoapp
  # Server Endpunkte wird normal gebalancet
  balance leastconn
  server node01 ws-demo-srv-01:80 check cookie node01
  server node02 ws-demo-srv-02:80 check cookie node02
Quellen & Info :
https://de.wikipedia.org/wiki/WebSocket
https://load-balancer.info/themen/sticky-session-load-balancing/
https://nodejs.org/en/about/
https://www.haproxy.org/#desc
https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API
“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)