geoblock: match_original_dport (conntrack --ctorigdstport) fuer Dienste hinter DNAT

Bei Portweiterleitung/DNAT schreibt der Kernel den Zielport in PREROUTING um,
BEVOR der Filter laeuft -- eine Regel auf den oeffentlichen Port (z.B. 1194)
matcht dann nie, weil im Filter der interne Port (z.B. 6666/6667) ankommt.
Genau der Fall auf Endian-Appliances (public 1194 -> intern 6666-6667,
443 -> 30443).

Neue Option 'match_original_dport = true': matcht per 'conntrack --ctorigdstport'
den urspruenglichen Zielport (vor DNAT). Dann in 'ports' die OEFFENTLICHEN Ports
eintragen -- immun gegen den internen Remap.

- build_rule_variants: bei orig-dport eine Regel pro (proto, port), da conntrack
  --ctorigdstport einwertig ist (kein multiport). _variant_port_args nutzt dann
  conntrack statt multiport.
- load_config: match_original_dport (bool, default false).
- show_status zeigt den Match-Modus an.
- Doku: geoblock.ini.example + README-Abschnitt "Dienst hinter Portweiterleitung/DNAT".

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
duffyduck
2026-07-28 09:32:58 +02:00
co-authored by Claude Opus 4.8
parent af2a75c443
commit 161d90de45
3 changed files with 104 additions and 10 deletions
+10
View File
@@ -46,6 +46,16 @@
; oder "tcp,udp" fuer beides. Fuer die meisten Web-/App-Ports
; reicht "tcp".
;
; match_original_dport:
; optional, true/false (Default false). Nur relevant wenn "ports"
; gesetzt ist. Fuer Dienste hinter einer Portweiterleitung/DNAT
; (z.B. Endian: public 1194/udp -> intern 6666): iptables sieht im
; Filter sonst den UMGESCHRIEBENEN Port, nicht den, den der Client
; gewaehlt hat -- die Regel greift dann nicht. Mit true wird per
; conntrack der ORIGINAL-Zielport (vor DNAT) gematcht. Dann in "ports"
; die OEFFENTLICHEN Ports eintragen (z.B. 1194, 443), nicht die
; internen -- immun gegen den Remap. Meist zusammen mit chain=FORWARD.
;
; proxy: optional, HTTP(S)-Proxy-URL, ueber den das Script ipdeny.com
; erreicht -- fuer Hosts, die zwar aus dem Internet erreichbar
; sind (z.B. hinter Reverse-Proxy/Firewall), selbst aber KEINE