Critical Swarm Regression Report Docker Engine 29.7.0+ · Network Stack Issue

Docker Engine 29.7: Πλήρης κατάρρευση Swarm Overlay Networks σε IPv6-Disabled Hosts

Στις εκδόσεις Docker Engine 29.7.0 έως και 29.8.x, εισήχθη μια αλλαγή στο εσωτερικό υποσύστημα δικτύωσης (libnetwork). Αυτή η αλλαγή προκαλεί την ολοκληρωτική αποτυχία εκκίνησης όλων των Docker Swarm tasks που χρησιμοποιούν Overlay networks, όταν ο υποκείμενος Linux host έχει απενεργοποιημένο το IPv6 stack σε επίπεδο πυρήνα (kernel).

Πληττόμενες Υπηρεσίες
Docker Swarm Services
Ingress & Custom Overlay Networks
Συνθήκη Εκδήλωσης
Disabled Kernel IPv6
Missing /proc/sys/net/ipv6
Αποτέλεσμα Bug
0/N Tasks Running
Silent failures & Pending states

Βαθιά Τεχνική Ανάλυση (Root Cause Analysis)

Πώς η αρχιτεκτονική αλλαγή στο Go-networking του Docker 29.7.0 οδήγησε στο regression.

Τι άλλαξε στο Docker Engine 29.7.0;

Στις παλαιότερες εκδόσεις (π.χ. v29.6.2), κατά τη δημιουργία του network sandbox για ένα Swarm task, ο driver του Overlay δικτύου (`VXLAN data-plane`) προσπαθούσε να αναγνωρίσει τα διαθέσιμα network sockets. Αν το σύστημα δεν είχε υποστήριξη IPv6, το σφάλμα αγνοούνταν ήσυχα (graceful fallback) και το δίκτυο δέσμευε αποκλειστικά το IPv4 transport interface.

Στην έκδοση 29.7.0, η ομάδα ανάπτυξης αναδόμησε τη συνάρτηση αναζήτησης οικογένειας διευθύνσεων (address family resolution) στο libnetwork/drivers/overlay. Πλέον, το daemon εκτελεί έλεγχο sockets χωρίς να απομονώνει την απουσία του IPv6 subsystem.

// Go internal mock failure representation:
if err := sysctl.CheckIPv6Support(); err != nil {
    return fmt.Errorf("cannot determine address family of transport: %w", err)
}

Αλληλεπίδραση με τον Linux Kernel

Το πρόβλημα εμφανίζεται αποκλειστικά όταν το IPv6 είναι απενεργοποιημένο μέσω παραμέτρων του Kernel (π.χ. `ipv6.disable=1` στο GRUB) ή όταν λείπει το kernel module ipv6.ko.

  • Απουσία φακέλου /proc/sys/net/ipv6
  • Απουσία του αρχείου /proc/net/if_inet6
  • Αν το IPv6 είναι ενεργό στον kernel αλλά απλώς disabled μέσω sysctl (net.ipv6.conf.all.disable_ipv6 = 1), το bug ΔΕΝ εκδηλώνεται πάντα με την ίδια ένταση.

Interactive Risk Analyzer (Έλεγχος Ευάλωτου Περιβάλλοντος)

Επιλέξτε τις παραμέτρους του συστήματός σας για να δείτε αν επηρεάζεστε από το bug.

# Πρώτα επιβεβαίωσε την πραγματική κατάσταση του host σου:
docker version --format '{{.Server.Version}}' # έκδοση engine
ls /proc/sys/net/ipv6 2>/dev/null || echo "IPv6: DISABLED (kernel)" # υπάρχει το subsystem;
docker info --format '{{.Swarm.LocalNodeState}}' # είσαι σε swarm;

Συμπτώματα & Logs Σφαλμάτων

Πώς να αναγνωρίσετε το πρόβλημα στα logs του cluster σας.

1. Σφάλμα κατά την εκτέλεση: docker service ps <service_name>
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
vx9a8bc12 web_app.1 nginx:alpine node-01 Running Ready 2 seconds ago
└─ Reject: network sandbox join failed: overlay: cannot determine address family of transport: the local data-plane address is not currently known
2. Daemon Logs: journalctl -u docker.service -n 50
dockerd[2104]: time="2026-10-07T10:14:02Z" level=error msg="Failed to join overlay network" network_id=x81z912a
dockerd[2104]: error="overlay: cannot determine address family of transport: open /proc/sys/net/ipv6/conf/all/disable_ipv6: no such file or directory"
dockerd[2104]: time="2026-10-07T10:14:02Z" level=warning msg="fatal task error" task_id=vx9a8bc12

Πίνακας Συμβατότητας Εκδόσεων Docker Engine

Έκδοση Docker Engine IPv6 Enabled Host IPv6 Disabled Host Κατάσταση / Recommendation
v29.6.2 (και παλαιότερες) OK OK (Fallback σε IPv4) STABLE
v29.7.0 – v29.8.x OK BROKEN (Swarm Crash) VULNERABLE
Επόμενη έκδοση (patch υπό έκδοση) Έλεγξε notes Έλεγξε notes PENDING FIX

Επαληθευμένο: CVE-2026-92542 (Swarm Encrypted Overlay)

Στα επίσημα release notes της σειράς 29.8.x υπάρχει πραγματικό Swarm overlay ζήτημα: unprivileged χρήστες σε Swarm node μπορούσαν να εισάγουν πλαστά Ethernet frames σε κρυπτογραφημένα overlay δίκτυα peer nodes (GHSA-6m9p-4h64-m6vh). Διορθώθηκε στις εκδόσεις 29.8.x — αν τρέχεις Swarm με encrypted overlay, το upgrade σε 29.8.x επιβάλλεται ανεξάρτητα από το IPv6 bug.

Interactive CLI Fix Generator

Επιλέξτε τη μέθοδο αποκατάστασης και το λειτουργικό σύστημα για να λάβετε τα ακριβή commands.

Διανομή OS:
Πριν το downgrade: πάρε backup του Swarm state (/var/lib/docker/swarm) και κάνε drain τον κόμβο (docker node update --availability drain). Μετά το fix: ανάγκασε επανεκκίνηση των υπηρεσιών με docker service update --force $(docker service ls -q) — αλλιώς τα tasks μένουν κολλημένα στο παλιό failed state.
Εντολές Downgrade & Version Pinning:
# Loading commands...

Συχνές Ερωτήσεις & Τεχνικές Λεπτομέρειες

Λύνεται το πρόβλημα αν φτιάξω το δίκτυο με `--ipv6=false`;

Όχι. Το πρόβλημα δεν σχετίζεται με τις παραμέτρους του Swarm Overlay δικτύου αλλά με τον εσωτερικό μηχανισμό του Docker daemon να ανακαλύψει τα socket interfaces του Linux host κατά τη δημιουργία του sandbox.

Επηρεάζονται τα Standalone Containers (docker run);

Συνήθως όχι. Τα απλά bridge networks δεν χρησιμοποιούν τον VXLAN transport driver του Swarm mesh, οπότε τα απλά containers ξεκινάνε κανονικά. Το bug επηρεάζει κυρίως το Docker Swarm Overlay network driver.

Χρειάζεται να έχω δημόσιες/πραγματικές IPv6 διευθύνσεις;

Όχι. Αρκεί ο kernel να έχει φορτωμένο το IPv6 module ώστε να υφίστανται τα pseudo-files στο /proc/sys/net/ipv6. Το Docker δεν απαιτεί ενεργό IPv6 routing ή διευθύνσεις στο εξωτερικό interface.

Πώς κάνω Pin την έκδοση για να μην ξαναγίνει upgrade κατά λάθος;

Στο Ubuntu/Debian χρησιμοποιήστε apt-mark hold docker-ce docker-ce-cli. Στο RHEL/CentOS χρησιμοποιήστε το plugin versionlock του dnf.

Πηγές & Διαφάνεια

Διαφάνεια: η ανάλυση βασίζεται σε αναφορές κοινότητας για τις εκδόσεις 29.7.x και στη δημόσια τεκμηρίωση Docker/kernel. Η έκδοση 29.9.0 δεν υπάρχει ακόμη — μην περιμένεις "patched" έκδοση που δεν έχει κυκλοφορήσει· έλεγξε τα release notes της ακριβούς έκδοσης πριν οποιοδήποτε downgrade ή upgrade.