Promox auf einem Hetznerserver mit virtuellen Netzwerken

4 Mai 2019 Lesezeit: 3 Minuten

Wenn ich ein Thema ziemlich zweifelhaft finde, dann ist es Cloudcomputing. Ich kann verstehen wann und warum man das macht. Was mir aber nicht gelingt ist den wandel von "VServer" zu "CloudInstanz" zu akzeptieren - immerhin habe ich "damals" mehr für weniger einsatz bekommen.

Wie dem auch sei. Ich mag Proxmox als Möglichkeit seine Virtualisierung zu realisieren. Man könnte ja auf die Idee kommen, dass man das auch auf seinem Root-Server bei zum Beispiel Hetzner haben möchte. Lustiger Weise wird das sogar angeboten. Was dann leider noch zu tun ist, ist die Absicherung und vor allem aber die Einrichtung von virtuellen Netzwerken, damit man seine Infrastruktur auch fein separieren kann.

In meinem Setup mache ich das mit einfachen Linux-Bridges. Wer es nocht etwas "cooler" haben will, dem kann ich einen Cluster mit OpenVswitch empfehlen. Das kommt vielleicht ein anderes Mal.

Mein Ziel ist, das es eine Bridge gibt, an die ich bestimmten Traffic (in meinem Fall HTTP/HTTPS) weiterleite um dort mit Hilfe von zum Beispiel OpenSense einen Reversproxy mit SSL Offloading anzubieten. So kann ich dann "hinter" dieser Firewall beliebig viele "virtuelle Netzwerke" aufbauen und routen/regeln wie man es von einer "richtigen" Installation kennt.

Dazu richte ich mir zunächst eine Bridge ein die auch eine IP-Adresse bekommt und sorge dafür dass beim hochfahren auch gleich die notwendigen iptables Regeln gesetzt werden um zum einen das NAT für den ausgehenden Traffic zu realisieren. auch will ich, wie schon oben beschrieben, das eingehender Traffic auf Port 80 und 443 zur OpenSense Installation weitergereicht wird, die mit der Bridge verbunden ist.

/etc/network/interfaces

auto vmbr0
iface vmbr0 inet static
  address 10.11.12.1
  netmask 255.255.255.0
  bridge-ports none
  bridge-stp off
  bridge-fd 0
  post-up echo 1 > /proc/sys/net/ipv4/ip_forward
  post-up iptables -t nat -A POSTROUTING -s '10.11.12.0/24' -o ***NAME-SER-NETZWERKKARTE*** -j MASQUERADE
  post-down iptables -t nat -D POSTROUTING -s '10.11.12.0/24' -o ***NAME-SER-NETZWERKKARTE*** -j MASQUERADE
  post-up iptables -t nat -A PREROUTING -i ***NAME-SER-NETZWERKKARTE*** -p tcp --dport 80 -j DNAT --to 10.11.12.2:80
  post-up iptables -A FORWARD -j ACCEPT -p tcp --dport 80 -d 10.10.99.2
  post-up iptables -t nat -A PREROUTING -i ***NAME-SER-NETZWERKKARTE*** -p tcp --dport 443 -j DNAT --to 10.11.12.2:443
  post-up iptables -A FORWARD -j ACCEPT -p tcp --dport 443 -d 10.11.12.2

Anschließend richte ich einfach weitere Bridges ein, die ich dann verwende um private LAN innerhalb des Proxmox bereitzustellen.

auto vmbr1
iface vmbr1 inet manual
 bridge-ports none
 bridge-stp off
 bridge-fd 0

Anschließend können die neuen Bridges wie folgt aktiviert werden:

ifup vmbr0
ifup vmbr1

Kernel 5.x auf CentOS installieren

1 Mai 2019 Lesezeit: ~1 Minute

Manchmal ist es notwendig, dass man den sicheren Hafen verlässt und auf das große weite Meer segelt. So brauche ich hin und wieder einen aktuellen Mainstream-Kernel auf einem perse eher konservativen System wie CentOS.

Das ist in wenigen Schritten erledigt und erfordert auch nur einen Neustart hust.

yum -y install https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum -y --enablerepo=elrepo-kernel install kernel-ml
yum -y --enablerepo=elrepo-kernel install kernel-ml-{devel,headers,perf}
sed -i 's/GRUB_DEFAULT=save/GRUB_DEFAULT=0/g' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot

Warum macht macht das? Zum Beispiel, weil man die LSB konformität von CentOS schätzt und auch die langen Supportzeiten des Systems als solches zu würdigen weiss, gleichzeitig aber herausfinden will/muss ob zum Beispiel Kubernetes sich anders verhält, wenn es einen aktuellen Kernel unter der Haube hat.

Quellen und Hinweise:


IOPS messen unter Linux

28 Apr 2019 Lesezeit: ~1 Minute

Vielleicht kommt der eine oder andere mal in die Situation die möglichen IOPS auf einem Linux-System messen zu wollen oder müssen. Leider ist das Thema nicht ganz so eindeutig gelöst, daher bleibt immer ein wenig Interpretationsspielraum.

Wie dem auch sei. Irgendwie muss man ja anfangen.

fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75

Dieser Aufruf war für mich schon mal ein ziemlich guter Anfang.

Quellen und Hinweise: