Drei Skripte aus der Folgesession. Stand am Geraet zum Commit-Zeitpunkt (per REST gegengeprueft, nicht aus den Dateikoepfen abgeschrieben): - tp23-stufe1-doh-core.rsc -> LIVE. use-doh-server auf den Cloudflare-Gateway-Resolver, verify-doh-cert=true. Nur der GTS Root R4 importiert statt eines Bundles: der Core hat ~2,8 MB freien Flash, und die Kette endet nachweislich dort. Der Root wurde per SFTP hochgeladen, nicht per fetch geholt -- fetch haette check-certificate=no gebraucht und damit genau die Pruefung ausgehebelt, die hier aufgebaut wird. Schliesst zugleich TP21.1 TODO 1. - tp5-etappe2-nachtrag.rsc -> LIVE. 17 TP5-E2-Whitelists (11 + 6). Vier Luecken, die der Kollektor ueber dreieinhalb Stunden gezeigt hat: Matter (udp/5540, 92 der 119 Zeilen -- die E2-Regel war protocol=tcp und liess Matter komplett durchfallen), der Nautobot-Deploy-Pfad (kommt von .20.31 = worker, nicht von .20.30 = web; jetzt als address-list, weil der scheduler dieselben Jobs faehrt), und zwei Rueckwege aus abgelaufenen Conntrack-Eintraegen. Dazu eine Vorratsregel fuer AdGuard, damit das spaetere DNS-Umstellen ein reiner DHCP-Change bleibt. Korrigiert meine Aussage vom Vortag: "die Log-Regel ist verstummt" beruhte auf einem 70-Sekunden-Fenster und war so nicht haltbar. Genau deshalb verlangt das Runbook ein mehrtaegiges Fenster. - tp5-etappe3-drop.rsc -> VORBEREITET, NICHT AUSGEROLLT. Kein Drop und kein Scheduler auf dem Geraet. Der Auto-Revert steht im Skript bewusst VOR dem Drop, sonst gibt es ein Fenster ohne Sicherung; der Drop kommt HINTER die Log-Regel, damit der Kollektor weiter sieht, was gefressen wird. Gate fuer Etappe 3: die Log-Regel steht aktuell auf 0 Paketen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
49 lines
2.9 KiB
Plaintext
49 lines
2.9 KiB
Plaintext
# TP23 Stufe 1 — DoH auf crs326-core (schliesst zugleich TP21.1 TODO 1).
|
|
#
|
|
# WARUM NUR EIN ROOT UND KEIN CA-BUNDLE
|
|
# ------------------------------------
|
|
# Die Kette von px35ynlol3.cloudflare-gateway.com ist
|
|
# Leaf(CN=cloudflare-gateway.com) -> GTS WE1 -> GTS Root R4
|
|
# (am 2026-08-17 per openssl s_client verifiziert). Fuer verify-doh-cert=yes
|
|
# reicht der Root. Das ist hier kein Geiz, sondern Notwendigkeit: der Core hat
|
|
# nur ~2,8 MB freien Flash, ein Mozilla-Bundle (~230 KB) waere Verschwendung
|
|
# und muesste gepflegt werden. Der Root laeuft bis 2036, das Leaf rotiert
|
|
# darunter ohne Zutun.
|
|
#
|
|
# Datei liegt schon auf dem Geraet: gtsrootr4.pem (per SFTP hochgeladen statt
|
|
# per fetch geholt — fetch haette check-certificate=no gebraucht, also genau
|
|
# die Pruefung ausgehebelt, die wir gerade aufbauen wollen).
|
|
# SHA-256 des Roots, lokal gegengeprueft:
|
|
# 34:9D:FA:40:58:C5:E2:63:12:3B:39:8A:E7:95:57:3C:4E:13:13:C8:3F:E6:8F:93:55:6C:D5:E8:03:1B:3C:7D
|
|
#
|
|
# servers=1.1.1.1 BLEIBT stehen: RouterOS loest damit den DoH-Hostnamen selbst
|
|
# auf (Bootstrap). Ohne das haette man ein Henne-Ei. Alles andere laeuft danach
|
|
# ueber DoH.
|
|
#
|
|
# Push: python3 nautobot/gc-manual-plan.py --device crs326-core \
|
|
# --commands-file routeros/tp23-stufe1-doh-core.rsc \
|
|
# --change-id TP23-Stufe1-DoH --deploy \
|
|
# --assert '/ip/dns|use-doh-server=https://px35ynlol3.cloudflare-gateway.com/dns-query' \
|
|
# --assert '/ip/dns|verify-doh-cert=true'
|
|
# Backup davor: core-pre-tp23-doh-20260817.backup
|
|
#
|
|
# Rollback: /ip dns set use-doh-server="" — eine Zeile, sofort wirksam.
|
|
|
|
# 1) Import. Idempotent: nur wenn der Root noch nicht da ist.
|
|
:do { :if ([:len [/certificate find where common-name="GTS Root R4"]] = 0) do={ /certificate import file-name=gtsrootr4.pem passphrase="" } } on-error={ :log info "tp23s1: 01 import warf" }
|
|
|
|
# 2) Explizit vertrauen. Der Import allein setzt trusted nicht zuverlaessig,
|
|
# und ohne trusted=yes scheitert verify-doh-cert=yes stumm.
|
|
:do { /certificate set [find where common-name="GTS Root R4"] trusted=yes } on-error={ :log info "tp23s1: 02 trust warf" }
|
|
|
|
# 3) DoH scharf. verify-doh-cert=yes ist der ganze Punkt der Uebung — ohne
|
|
# Pruefung waere DoH nur Verschleierung, kein Vertrauensanker.
|
|
:do { /ip dns set use-doh-server=https://px35ynlol3.cloudflare-gateway.com/dns-query verify-doh-cert=yes } on-error={ :log info "tp23s1: 03 doh-set warf" }
|
|
|
|
# 4) Cache leeren, damit die naechste Antwort nachweislich ueber DoH kommt und
|
|
# nicht aus dem Bestand von vorher.
|
|
:do { /ip dns cache flush } on-error={ :log info "tp23s1: 04 flush warf" }
|
|
|
|
# Selbstprotokoll — der Deploy-Job zeigt den Geraete-Output nicht.
|
|
:log info ("tp23s1: ENDE roots=" . [:tostr [:len [/certificate find where common-name="GTS Root R4"]]] . " trusted=" . [:tostr [/certificate get [find where common-name="GTS Root R4"] trusted]] . " doh=" . [/ip dns get use-doh-server])
|