Status Quo: Neuer Server / IPv6 Services bei UUGRN

February 16, 2013

Hallo zusammen,

die letzten Wochen habe ich den neuen UUGRN Vereinsserver fertig gemacht und weitgehend in Betrieb genommen. Der neue Server löst den Anfang 2006
gekaufen Server top.uugrn.org ab, der bis heute auf einem P4 mit 2GB RAM seinen Dienst verrichtet hat.

Auf dem alten Server war vieles “gewachsen” und wurde daher reichlich unflexibel, der Server läuft bis jetzt noch unter FreeBSD 7.4 (i386).

Der neue Server (top3.uugrn.org) läuft mit dem aktuellen FreeBSD 9.1 (amd64).

Migration Altsysteme

Ich wollte aufgrund der großen Differenzen keine alten Jails 1:1 auf dem neuen Server hochfahren, auch wenn dies vermutlich weitgehend
geklappt hätte. Aus diesem Grund habe ich alle UUGRN-Services und (fast) alle aktiven Mitglieder-Jails auf den neuen Server neu aufgebaut!

Mitglieder, die seit sehr langer Zeit gar nichts mehr mit ihren Jails gemacht haben wurden nicht migriert, die Jails sind aber noch offline vorhanden (Backup) und können auf Wunsch neu aufgebaut werden.

Jail vermisst? Einfach melden!

Neubau statt Migration

Da ich einen stark automatisierten Buildprozess für Packages und Images habe und jetzt außerdem auf ZFS aufsetzen kann, kann ich mit verhältnismäßig wenig Aufwand ein komplettes neues Jail anlegen.

IPv6

Die gesamte Migration bringt auch weitere Neuerungen: Alle Services, die wir über IPv4 anbieten, bieten wir prinzipiell jetzt auch unter IPv6 an. Es könnte irgendwo noch Ausnahmen geben, da wurde es schlichtweg noch nicht reinkonfiguriert.

Das bedeutet aber auch, dass Mitglieder mit Zugang auf shell.uugrn.org oder eigenen Jails nicht nur via IPv6 hinkommen, sondern auch von dort
wieder wegkommen.

Aktuelle Services/Jails

Aktuell haben wir folgende Jails am laufen:

  • shell.uugrn.org (Special: sshd auf port 443/tcp für Proxy-CONNECT)
  • web.uugrn.org (Wiki, Blogs, Planet, …)
  • irc.uugrn.org
  • lists.uugrn.org (Mailman und Web-Archive)
  • mail.uugrn.org (interner MTA, Mailrouting, Virtuser, outgoing-MX, …)
  • news.uugrn.org (demnächst, läuft noch auf dem alten Jail)
  • xmpp.uugrn.org (noch nicht in Betrieb)
  • mysql.uugrn.org
  • uugrn.uugrn.org (Vereinswebseite, Vorstand, Mitgliederverwaltung)
  • bnc.uugrn.org (IRC-Bouncer, User können eigene v6-Adressen bekommen, mit rDNS!)
  • ftp.uugrn.org (v4+v6, ftp, http, https)
  • fbsd9.uugrn.org (Buildsystem)
  • qa.uugrn.org (Qualitätssicherung, Testumgebung)
  • diverse Mitglieder-Jails.

Verluste

Bei der Migration der Dienste wurden manche Dinge nicht mit übernommen, beispielsweise ist der Webserver auf shell.uugrn.org ersatzlos entfallen mangels erkennbarer aktiver Nutzung. Sollte jemand einen Webserver benötigen richtige ich gerne ein eigenes Jail dafür ein.

Neue Jails

Es existieren folgende fertige Images, aus denen sich ad-hoc neue Jails anlegen lassen:

  • virgin: das enthält nur und ausschließlich das Ergebnis von “make installworld distribution” und ist so nicht nutzbar.
  • tiny: virgin plus zahlreiche Einstellungen, die ein Jails benutzbar machen, keine Packages!
  • small: tiny + bash coreutils sudo gsed findutils nano screen portupgrade pkg_cutleaves portaudit
  • medium: small + vim-lite emacs mc gnupg mutt slrn tin irssi lynx w3m wget rsync procmail figlet fetchmail”
  • large: medium + links rar unrar zip zsh gawk ksh93 pwgen unix2dos muh climm graphviz ImageMagick dovecot apache22 php5 php5-extensions
  • webstatic: tiny + apache22
  • webphp: webstatic + php5 php5-extensions ImageMagick

Das ist jeweils die Basis für ein neues Jail. Ein einmal installiertes Jail kann natuerlich per Packages oder durchselbst kompilieren von Ports (make install clean) beliebig verändert oder erweitert werden.

Mailrouting

Ich habe das Mailrouting (IMHO) vereinfacht und gewachsene Altlasten entsorgt. Da gab es teilweise arg verworrene, sich widersprechende Konfigurationen verteilt über mail/mx1, shell, verein und lists. Mailadressen wurden teilweise mit alias UND per virtusertable auf verschiedene Ziele konfiguriert etc.

Das “vereinfachte” Mailkonzept sieht so aus:

  • Incoming Mails via mx1 und mail (mx2 wird es bald auch einen geben), mailrouting anhand von Domains in die jeweiligen Jails (mailertable)
  • Outgoing-Mails einheitlich via mail.uugrn.org
  • @uugrn.org: Mails @uugrn.org werden nur via mx1.uugrn.org eingeliefert und gespamfiltert und weitergeleitet auf mail.uugrn.org und werden dort ausschließlich(!) per virtusertable weiter verteilt. Unbekannte Adressen @uugrn.org haben einen catch-all auf “error:5.7.0:550 Address invalid” umgeleitet.
  • Für Mitglieder bestehen idR Weiterleitungen auf externe Mailadressen oder auf user_at_shell.uugrn.org oder user_at_user.uugrn.org. Wer das nutzt, sollte prüfen, dass es jetzt noch tut.
  • @uugrn.de: Unter dieser Domain haben wir nur die allerwichtigsten Roleaccounts als Alias für die jeweiligen .org eingerichtet.
  • Mailinglisten (Listenadresse und alle Request-Adressen) grundsätzlich über @mailman.uugrn.org erreichbar, im Falle von UUGRN-eigenen Mailinglisten existieren passende Virtuser-Weiterleitungen in der Form listename@uugrn.org listename@mailman.uugrn.org
  • Mitglieder-Domains werden per Mailrouting direkt in die jeweiligen Mitglieder-Jails geroutet, der dortige MTA (sendmail) muss entsprechend Mails annehmen können.

DNS / Eigene Domains

Jedes Mitglied kann im eigenen Jail eigene Domains hosten. Entsprechendes Mailrouting gibts dann gratis dazu.

UUGRN hostet seine Domains (und diverse rDNS) im Vereinsjail “uugrn.uugrn.org” als Hidden Primary. Öffentliche DNS sind ns{1,2,3}.jpru.de, weitere (inoffizielle) slaves sind u.a. auf top3.uugrn.org, welcher auch gleichzeitig der primäre recursor für alle Jails ist, d.h. Änderungen an der Zone werden auf dem Server sofort
wirksam (also-notify) und sehr zeitnah auch an die öffentlichen DNS-Server notifiziert, Vorausgesetzt man hat die serial erhöht und die zone reloaded.

IRC/BNC/DNS/IPv6

Wer eine eigene Domain hat und damit ins IRC möchte, kann auf bnc.uugrn.org einen User und eine *persönliche* IPv6-Adresse mit rDNS auf einen Namen aus der eigenen Domain bekommen, also zB nickname!user_at_foo.example.com

Wer BNC will aber keine Domain hat, kann wahlweise mit nick!user_at_bnc.uugrn.org (v4+v6) oder nick!user_at_wunschname.uugrn.org (nur v6) auf einen oder mehrere IRC-Server eigener Wahl zugreifen und dazu die Vorteile eines BNC (wir bieten znc mit SSL) insgesamt nutzen.

Was fehlt?

  • VIMAGE: Jails können innerhalb eines vollkommen autonomen IP-Stacks betrieben werden, d.h. eigenes IP-Setup, Routing, Firewalling, …
  • ping ist weiterhin nicht möglich, sorry (raw sockets).
  • XMPP ist vorbereitet, tut aber noch nicht. Hilfe gesucht.
  • shared memory gibts auch noch nicht, AFAIK sind shared memory segmente (immernoch) nicht “jailbar” und stellen daher eine Sicherheitslücke zwischen den Jails dar. Möglicherweise kann ich Shared memory “per jail” erlauben und auf diese Weise ein dediziertes PostgreSQL betreiben. Es gibt da so Ansätze, mir fehlt die Zeit und die Motivation.
  • Eigene DNS-Server: Domains laufen bei uns idR via TWX/Jürgen Unger und somit über seine Server. Die Zonen können bei uns lokal editiert werden. Komplett eigene DNS würden uns unabhängiger/flexibler machen, birgt aber auch ein erhöhtes Ausfallrisiko und ggf. Kosten (verteilt aufgestellte Systeme). Ich kann mit dem aktuellen Stand gut leben.
  • mx2.uugrn.org … irgendwo ganz weit extern als Fallback für einen Totalausfall (Server, Netze, Standort). Wer könnte uns was mit sendmail hosten? FreeBSD oder debian willkommen, eigene root-Rechte erforderlich.
  • jailed-ZFS: Eigene Volumes im Jail managen, zB Snapshots, Rollback, … Müsste Out-of-the-Box funktionieren, ich hab nur noch nicht die richtigen Stellschrauben gefunden, um das (gefahrlos) für alle root@mitgliederjails zu aktivieren.
  • debian-kfreebsd Image: Ich habe irgendein altes RC von wheezy schon vorbereitet, aber da muss *nur* noch Finetuning passieren, damit die debian-Jails auch ordentlich funktionieren. Bootstrappen von debian/kfreebsd aus FreeBSD ist PITA, d.h. es funktioniert *etwas*. Der alternative Ansatz ist, ein zB in VirtualBox installiertes wheezy verwenden als Staging für den Bau der eigentlichen Images mittels debootstrap.
    Da ich das Ganze in meiner Freizeit baue, hatte ich bisher einfach keine Lust das Thema voranzutreiben. Wer gerne selbst ein Debian statt FreeBSD-Jail haben möchte, sollte sich einfach bei mir melden (zwecks Motivation) und außerdem suche ich noch Probanden, also experimentierfreudige Debian-Gurus, die das von mir gebaute auseinandernehmen oder reparieren und (nichtreligiöse) konstruktive Kritik anbringen können.
    Wenn sich jemand von euch die Zeit nimmt, nehme ich sie mir auch, das Thema “debian-Jail” habe ich schon seit sehr vielen Jahren auf dem Radar und hab es mangels Durchhaltevermögen und Motivation nie wirklich umgesetzt.
  • Menschen mit KnowHow, Engagement und Zeit, also Du!

Fragen? Anregungen?

Viele Grüße
Raphael


Neue Heimat für das UUGRN-Packagebuild-Jail: freebsd.forum41.uugrn.org

January 10, 2010

Das UUGRN Package-Build-Jail erzeugt regelmäßig neue Packages aus den aktuellen FreeBSD Ports. Derzeit läuft der Großteil der UUGRN-Infrastruktur noch auf FreeBSD 7.2, entsprechend werden für dieses RELEASE auch die Packages gebaut. Wie das genau funktioniert habe ich im Juli 2009 im Artikel Pflege und Aufzucht von FreeBSD Ports und Packages beschrieben.

Bis Ende 2009 lief dieses Jail auf meinem PC @home, der dank moderner QuadCore CPU genug Power hat, um Packages in angenehmer Zeit zu bauen. Da ich @home inzwischen aber auf FreeBSD 8.0 upgegraded habe, habe ich das UUGRN-Buildjail nun unter dem Namen freebsd.forum41.uugrn.org auf charm.uugrn.org laufen, der mit 4GB RAM und 2x 2.8GHz XEON CPU ebenfalls ausreichend dimensioniert ist.

Charm dient derzeit außerdem als Backup für top.uugrn.org und als IPv6-Gateway im Forum41 (kann auch IPv4 mit NAT). Etwas tricky ist das Setup für Jails, denn die laufen nur auf einer RFC 1918-IP-Adresse (z.B. freebsd.forum41.uugrn.org has address 192.168.0.20) müssen aber via externem Interface auf das Internet zugreifen können.

Hierfür benötigen wir den natd, der im Userland IP-Pakete umschreibt und in den IP-Stack zurückschiebt. Damit der natd die IP-Pakete überhaupt zu sehen bekommt, muss folgende IPFW-Regel weit oben stehen:

add divert natd ip4 from any to any via em0

In der /etc/rc.conf benötigen wir dann noch:
natd_enable="YES"
natd_interface="em0"

… wobei “em0” das externe Interface ist, die Jails sind an das Interface em1 gebunden und sind somit im LAN verfügbar.

Wichtiges Detail: wenn man via SSH am NAT-Setup rumspielt (die ipfw-Regel), sollte man tunlichst dafür sorgen, dass der natd schon läuft sonst werden alle IP-Pakete ins Nirvana geroutet.

Sobald das Jail “in-sync” ist wird es den nächsten Packagebuild geben.

Have fun!
Raphael


noname.uugrn.org abgebaut

August 2, 2009

Auf Wunsch des Admins habe ich das NoName Jail abgebaut, das Jail wurde nicht mehr benötigt und wäre sonst verwaist.

Raphael


Jail Templates aktualisiert

July 17, 2009

Heute war das Update der UUGRN Jail-Templates fällig.

Insgesamt wurde für alle 5 Jail-Templates ein aktuelles 7.2-RELEASE Userland ausgerollt und ge-mergemaster-t. Das war insofern nervig, weil das der erste Durchgang von mergemaster war und somit aufgrund eines fehlenden mtree-Files das Auto-Update (mergemaster -U) nicht funktionierte. Also 5x mergemaster mit Einzelbestätigung. Es gibt Schlimmeres, aber nicht mehr sehr viel!

Danach gab es das Update der 4(!) Jails mit Packages, wobei hier das “sandbox“-Jail verwendet wird. Das Update verläuft für alle Jail-Templates in folgender Reihenfolge: Read the rest of this entry »


Pflege und Aufzucht von FreeBSD Ports und Packages

July 12, 2009

Im UUGRN::Jailkonzept ist nur kurz beschrieben, dass es ein gemeinsames /usr/ports für alle Jails gibt, das in den Jails jeweils read-only zur Verfügung steht. Nicht dokumentiert ist, wie /usr/ports (aktuell) gepflegt wird.

Derzeit gibt es ein Jail, welches ausschließlich zur Pflege der Ports und dem Bau der Packages verwendet wird. Ein besonderes Augenmerk liegt dabei auf Konsistenz der Packages bzw. deren Abhängigkeiten zueinander. Read the rest of this entry »