NDS pre-auth allowlist ineffective: nds_enforce_forward (nft prio −1) rejects before the allow chain can mark/accept
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
- #782 @Amperstrand による — マージされずにクローズ
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 42/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- go
- 領域
- networking
調査の方向性
Start by reviewing the nftables chain generation for nds_enforce_forward and the preauthenticated-users allowlist; the issue does not name the relevant files or tests. Use the cited benchmark report and session record for runtime evidence, then verify that pre-auth connections to the listed mint ports are accepted before the reject rule.
索引モデルが issue の本文から書いたものです。
説明
Migrated from Amperstrand/tollgate-module-basic-go#97 as part of the fork retirement — OpenTollGate/tollgate-module-basic-go is the single source of truth; the fork issue carries the original discussion and any lab evidence. Retirement plan: see the tracking issue linked in the migration comment there.]
Found live 2026-09-27 during the ESP32-wallet take against the NR7101 (gonuts-tollgate deployed, NDS 5.0.2):
Symptom: pre-auth clients cannot reach the accepted mints even though nodogsplash uci carries the intended preauthenticated_users entries (allow tcp port 3080/8190/8383 to 192.168.13.221). SYNs hit the compiled accept rule (counter increments) yet every connection dies — the device sees ICMP port-unreachable → lwIP EHOSTUNREACH.
Mechanism: nds_enforce_forward is a base chain at priority filter−1; its unmarked-br-lan-egress REJECT executes BEFORE the priority-0 fw4 chains (ndsTRU/ndsALW/…) can set the trusted mark or accept. The allowlist entries compile into a chain that runs too late. The 0x20000/0x30000 mark-accept rules only help already-marked traffic.
Runtime workaround used (removed post-take): nft insert rule inet fw4 nds_enforce_forward ip daddr <mint-host> tcp dport {…} counter accept ahead of the reject.
Evidence: conwrt-bench data/bench/s3-take-20260926-230924/REPORT.md + the nft dumps in the session record (sessions/2026-09-27-esp32-wallet-tollgate-take.md).
Product impact: pre-auth mint access (top-up-before-pay, the natural client flow) is broken on deployed builds — every client must be provisioned off-portal (pre-mined tokens or a PSK side-net, as our take did).
Fix direction: emit the preauth-allowlist accepts (or the trusted-mark sets) INTO the priority−1 enforce chain, ahead of its reject — or move the reject to a later priority.
- 主要言語
- Go
- スター
- 12
- フォーク
- 14
- 平均マージ
- 3日 21時間
- マージ済み PR(30日)
- 269
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
OpenTollGate/tollgate-module-basic-go のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
OpenTollGate/tollgate-module-basic-go#1135 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
OpenTollGate/tollgate-module-basic-go#1122 ·
メンテナーはふだん 1 日以内に返信
-
changelog: dependency-security sweep missing from [Unreleased] [Amperstrand fork #105 review debt]オープン
難易度 1/5 1時間未満 初心者へのやさしさ 72/100
OpenTollGate/tollgate-module-basic-go#1055 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
OpenTollGate/tollgate-module-basic-go#1027 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
OpenTollGate/tollgate-module-basic-go#1026 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
OpenTollGate/tollgate-module-basic-go の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
containerd/containerd#14485 ·
メンテナーはふだん 1 日以内に返信
-
bug needs-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
kind/bug
難易度 2/5 1〜3時間 初心者へのやさしさ 79/100
kubernetes-sigs/kueue#17944 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
SocialGouv/iterion#2800 ·
メンテナーはふだん 1 日以内に返信