Docker, iptables, and NAT routing

Really understanding and debugging iptables (or better these days, nftables) is an art. Of course a sysadmin should know what s/he’s doing, but there are also the moments where a non-sysadmin might need to set up, say, a laptop or a Raspberry as a very temporary wireless gateway. There are plenty of longer or shorter tutorials around the ubiquitous lines

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $EXTERNAL_IF -j MASQUERADE

where $EXTERNAL_IF could be your wi-fi device, such as “wlan0” or “wlp2s0” if you are sharing your wi-fi connection to other non-wireless systems; or it could be your Ethernet interface (such as “eth0” or “eno1”) if that’s where your Internet connection is.

If you happen to have Docker on that machine, and possibly firewalld, Docker might be configured to add a lot of firewall rules. As I want my containers to keep their connectivity both among each other and towards the net, I’d rather not touch those rules so much. Docker changed the “policy” for the FORWARD chain – that is, what happens inside a chain if no rules match – from ACCEPT to DROP. This means that without extra rules, packets that before passed your firewall are now blocked. The Docker documentation explains how to add rules to the DOCKER-USER chain to remedy this, and they give as an example:

iptables -I DOCKER-USER -i src_if -o dst_if -j ACCEPT

It’s an excellent hint that they talk about adding “rules” in the plural, unfortunately the example above is a single line, and after that single iptables line above for masquerading, you might say: OK, I got the source interface where my internal network is, and the destination interface is the external one where the Internet connection comes from, and I write one line. But it won’t work. It may be enough to send out packets, but in order to let the responses come back, you also need to add the other direction! Very obvious once you have it working.

iptables -I DOCKER-USER -i $INTERNAL_IF -o $EXTERNAL_IF -j ACCEPT
iptables -I DOCKER-USER -i $EXTERNAL_IF -o $INTERNAL_IF -j ACCEPT

Lest I forget, I note down what helped me debugging, here on an AlmaLinux / Rocky Linux / CentOS / RHEL 8:

  • To see what’s going on in iptables, “-L” is not enough. “iptables -v -x -n -L“, or for another table “iptables -t nat -v -x -n -L” is much better.
  • To see accepted or blocked packages, you can mark them to be traced, like this:
    iptables -I DOCKER-USER -j TRACE

    TRACE does not stop the rule evaluation, but ACCEPT would. So make sure your TRACE rule is at the right position (e.g. above, not below, others that would match, too).
    But how do you see the traces? I did not succeed in getting them in the kernel log, but with “nft monitor trace” I could see them. (Yes, Red Hat says you shouldn’t mix firewalld, iptables, and nftables, but read-only usage of another tool won’t hurt.)

  • firewalld adds another level of complexity here with its “zones”. I suspected it to be involved in my Docker/NAT router problem, but in the end, I did not need to change anything there.
Posted in English | Tagged , , | Comments Off on Docker, iptables, and NAT routing

Weird hangers on a Debian 8 system?

If everyday actions on your Debian Jessie with systemd start to hang forever:

  • Pulseaudio clients cannot connect to their servers any more…
  • “ifup” of a network device needs to be Ctrl-C’ed (but has accomplished its work)…
  • Trivial daemons refuse to start with “systemctl start”…

…then it might be that systemd has choked on something and needs to be restarted. Fortunately, that is possible without any reboot or log-out:

systemctl daemon-reexec

Posted in English | Tagged , , , | Comments Off on Weird hangers on a Debian 8 system?

Video recordings of the FOSDEM 2013 Cloud devroom available

I had the honour of speaking in the Cloud devroom at this year’s FOSDEM. With me, I brought a little camera and recorded most talks. Finally I managed to make them ready for publication. They are also linked on the individual talk pages. The sound is far away from being optimal, as the camera was simply positioned in the middle of the large lecture hall. Still, it’s better than nothing. Enjoy!

Posted in English | Tagged , , , , | Comments Off on Video recordings of the FOSDEM 2013 Cloud devroom available

Neues Gesicht für hoerbuecher.tuxfamily.org – Bitte um Feedback!

Seit Sommer 2005 gibt es meine Seite für freie Hörbücher (früher „vorleser-amateure”, heute legamus.eu hoerbuecher.tuxfamily.org (unter dem Namen legamus.eu befindet sich inzwischen ein anderes Hörbücher-Projekt, welches ein europäisches Pendant zu LibriVox darstellt und multilingual ist)). In den letzten Jahren war ich damit beschäftigt, die Seite aktuell zu halten und im Hintergrund Verbesserungen vorzunehmen, um mir diese Arbeit zu erleichtern. Vor allem die Einführung von „Sammlungen” hat mir dabei geholfen; unter einer Sammlung verstehe ich ein Werk eines Autors (z.B. ein Band von Gedichten oder Kurzgeschichten), von der ein Stück hier, ein Stück dort aufgenommen wurde. Seit einem Jahr kann ich solche zusammengesetzten Werke viel besser erfassen. Beispiel hier.

Zuletzt war ich mit dem Forum beschäftigt; das inzwischen nicht mehr gepflegte PBLang ist seit wenigen Tagen durch ein phpBB ersetzt worden – natürlich unter Beibehaltung aller bestehender Beiträge und Nutzerkonten. Ein Hoch auf freie Software! auch wenn ich mit PHP wohl nie warm werden werde.

Das prinzipielle Layout der Seite wurde allerdings seit 2005 kaum verändert, und das will ich nun in Angriff nehmen und dafür eure Meinung hören. Ich stehe nach wie vor zu meiner konservativen Grundhaltung, auf Datenbanken zu verzichten – aber auch, wenn der Server weitgehend statische Seiten ausliefert, läßt sich auf Client-Seite mit JavaScript viel bewegen.

Das aktuelle Layout will ich ein wenig anpassen und in eine „mobile Version” überführen, d.h. minimalistische Seiten, die für kleine Displaygrößen gedacht sind und bei denen man von einem Schritt zum nächsten kommt. Beim Hörbuch-Katalog würde das wie folgt aussehen: Auf der ersten Seite sieht man nur eine lange Liste von Autoren. Der Klick auf einen Autor bringt einen zur nächsten Seite, die alle seine Werke anzeigt. Klick auf einen Eintrag bringt einem zur nächsten Seite mit den Details. Auf diese Weise hoffe ich, den ganzen internetfähigen Mobiltelephonen gerecht zu werden, ohne einzelne Applikationen für einzelne Plattformen schreiben zu müssen. Außerdem sollten alte Browser oder Text-Browser für blinde und sehbehinderte Menschen damit prima zurechtkommen.

Daneben soll es aber eine neue „Desktop-Version” geben. Hier können wir davon ausgehen, daß die Bildschirme groß sind und die Browser JavaScript beherrschen (z.B. die Basisvariante vom Dojo Toolkit). Meine Idee ist, daß die Seite immer den ganzen Anzeigebereich des Browsers einnimmt und innen gescrollt wird. So könnten die Anleitungen aussehen:

Im Hörbuch-Katalog möchte ich JavaScript und AJAX einsetzen, um die Bedienung übersichtlicher und schneller zu gestalten. Anstatt neue Seiten zu laden, sollen nur Teilbereiche der Seite aktualisiert werden. Die Anzeige aller Werke eines Autors geschieht sehr schnell, weil die Daten schon alle da sind und nur von JavaScript angezeigt werden müssen.

Wie soll der Katalog aussehen? Hier ein Vorschlag mit zwei Bereichen, der Autoren- und Werkliste und der Detailansicht.

Dies ist die Ansicht, die man erhält, wenn man in der linken Spalte auf „Ludwig Bechstein” klickt – danach erscheinen die Werke unterhalb des Namens – und anschließend auf „In optima forma”. Die Ansicht in der rechten Spalte, vor allem den Block „Sprecherin / Formate / … / Download” muß man sich noch hübscher formatiert vorstellen. Mit den Auswahlmöglichkeiten über den Spalten kann man zwischen den Bereichen „Klassiker” und „Selbstgeschriebenes” auswählen, außerdem kann man entscheiden, ob Sammlungen oder nur vollständige Hörbücher angezeigt werden sollen und ob nur Hörbücher einer bestimmten Spieldauer aufgelistet werden.

Die rechte Spalte stellt dabei den hauptsächlichen Anzeigebereich da, in dem man auch anderes darstellen könnte (z.B. nach Klick auf den Namen einer Sprecherin alle Aufzeichnungen, an denen diese beteiligt  war), während die linke Spalte stets Autoren und Werke enthält.

Ich halte diese Aufteilung für die beste Ausnutzung des verfügbaren Platzes. Es stellt sich aber die Frage, wie wir mit Sammlungen verfahren sollen. Zurzeit werden diese in Form einer breiten Tabelle dargestellt, die sich in der rechten Spalte nur schlecht unterbringen ließe. Hier ist eine Ansicht mit drei Bereichen, die an gängige E-Mail-Programme erinnert:

Wenn der untere Bereich stets angezeigt wird (anfangs leer), dann geht der Autorenliste wertvoller Platz verloren, selbst wenn die Werke dann in den Bereich oben rechts ausgegliedert werden können. Alternativ könnte der untere Bereich erst später dazukommen, aber erstens heißt das, den Nutzer durch ein sich veränderndes Layout womöglich zu verwirren, und zweitens würde dies nur am Anfang helfen – sobald man eine Detailansicht sieht, ist die Autorenliste verkürzt.

Eine andere Möglichkeit sieht das Aufbrechen der breiten Tabelle vor:

Es werden nur die wichtigsten Spalten der Tabelle angezeigt, womöglich abgekürzt („Textsammlung” ist sicher ein Kandidat), und mit einem Knopf, oben durch das Symbol rechts neben dem Tabellenkopf „Download” dargestellt, kann man sich weitere Spalten anzeigen lassen (und ggf. danach sortieren). Sofern man nach diesen Spalten nicht sortieren will, ist auch ein großer Tooltip vorstellbar, der erscheint, sobald man die Maus auf einer Tabellenzeile liegen läßt.

Dies sind meine österlichen Layout-Überlegungen, bei denen mir Pencil 1.2 eine große Hilfe war (in Mozillas Erweiterungs-Katalog gibt es erst die Version 1.0). Jetzt ist eure Meinung gefragt: Welches Layout würdet ihr auf legamus.eu bevorzugen? Was bietet die einfachste und eleganteste Bedienbarkeit? Ich bin an allen Meinungen interessiert, egal ob ihr täglich stundenlang beruflich im Internet seid oder nur wenige Minuten pro Woche privat. Ihr könnt im Forum (nach Anmeldung) einen Kommentar hinterlassen oder auch gerne eine E-Mail senden oder anrufen, wenn ein echter Dialog euch besser geeignet scheint!

Vielen Dank fürs Lesen, und noch schöne Osterfeiertage!

Posted in Deutsch | Tagged , , | Comments Off on Neues Gesicht für hoerbuecher.tuxfamily.org – Bitte um Feedback!