docker/egress/v1.1.6
opensandbox-group/OpenSandboxdocker/egress/v1.1.6Aug 11, 2026by Pangjiping
AI Summary
Enhancements to observability include failure counters for DNS and nftables, while HTTP/2 throughput and DNS lease management have been significantly improved.
Key Highlights
- Failure counters for DNS resolution and nftables updates
- mitmproxy output now lands in the egress log sink
- HTTP/2 throughput restored via mitmproxy 11.0.2
- DNS entries no longer expire under long-lived connections
New Features
- Failure counters for DNS and nftables
- mitmproxy logs piped to egress logger
- DNS latency histogram buckets fixed to seconds
- Credential Vault header injection fix for streamed bodies
- No-SNI TLS connections now pass through transparent MITM
Full Release Notes
## What's New
### ✨ Features
- **Failure counters for DNS resolution and nftables updates.** New `egress.dns.query.failed_total{reason}` (`no_upstreams` / `upstream_error` / `empty_response` / `rcode`) and `egress.nftables.updates.failed_total{operation}` counters make failures that previously existed only in logs observable — including the silent fail-closed case where a failed dynamic allow-set update drops traffic the policy permits. (#1410)
- **mitmdump output now lands in the egress log sink.** mitmproxy and credential-proxy logs printed via `ctx.log` are piped line-by-line into the egress zap logger, so they reach the log file and rotation when `OPENSANDBOX_LOG_OUTPUT` is set; with the env var unset, behavior stays on stdout as before. (#1468)
### 🐛 Bug Fixes
- **mitmproxy 11.0.2 restores HTTP/2 throughput.** The upstream HTTP/2 flow-control fix (mitmproxy/mitmproxy#7317) removes severe throttling of large HTTP/2 responses: a 216 MiB response went from 0.61 MiB/s on mitmproxy 10.4.2 to 24.43 MiB/s — near the direct-path throughput. (#1396)
- **DNS-derived nft entries no longer expire under long-lived connections.** In `dns+nft` mode, IPs learned from allowed DNS responses are renewed while an active TCP connection holds them, with one final renewal after activity ends. The stock six-minute lease previously dropped reconnects after ~370s in a persistent gRPC-channel scenario; that scenario now reconnects cleanly. TCP only — UDP/QUIC still rely on DNS-driven refresh. (#1399)
- **DNS latency histogram buckets now match its seconds unit.** `egress.dns.query.duration` was using the SDK-default millisecond ladder, so every realistic latency landed in a single bucket and quantiles were meaningless interpolations. Explicit second-based boundaries restore a usable distribution, with a regression test guarding them. (#1405)
- **Credential Vault header injection fixed for streamed request bodies.** With `stream_large_bodies`, bodies over 1 MiB are forwarded before the `request` hook fired, so auth headers arrived too late and uploads failed with `403 invalid api-key`. Injection moved to the `requestheaders` hook (fires before the upstream connection), and this also fixes missed response redaction when the response arrives before the request hook (e.g. a 413 mid-upload). (#1466)
- **No-SNI TLS connections now pass through transparent MITM instead of breaking.** With no hostname in the ClientHello, mitmproxy's hostname verification fell back to the destination IP and tore down the connection (`hostname mismatch`) — breaking HTTPS egress to OSS for clients like ossfs2 that connect by IP, unless the insecure flag was set (which Credential Vault rejects). No-SNI flows now pass through untouched; hostname-based `ignore_hosts` matching and TCP deny/allow enforcement still apply. (#1469)
### 📦 Misc
- **mitmproxy SSE truncation repro tooling.** Self-contained reproduction scripts and docs for mitmproxy/mitmproxy#8364, where large SSE bodies over TLS HTTP/1.1 are truncated when the upstream closes right after the body: TLS mode reproduces, plain/delayed-close controls pass. (#1462)
## 👥 Contributors
Thanks to these contributors ❤️
- @bcho
- @ferponse
- @Pangjiping
---
- Docker Hub: opensandbox/egress:v1.1.6
- Aliyun Registry: sandbox-registry.cn-zhangjiakou.cr.aliyuncs.com/opensandbox/egress:v1.1.6
- GHCR: ghcr.io/opensandbox-group/opensandbox/egress:v1.1.6