Skip to content

v0.4.16

Choose a tag to compare

@github-actions github-actions released this 21 Oct 03:28
· 20 commits to master since this release
f182fa1

追加

  • udp のルールでも PROXY protocol v2 を受け取れるようになりました(#312、features.proxy_protocol_in_udp)。外側の rproxy が source_ip: proxy_v2 で UDP に付けるヘッダ(DGRAM、データグラムごと)を内側の rproxy が読み、多段の構成でもクライアントのグローバル IP を最後まで保てます。
    • 書き方は TCP と同じ proxy_protocol: {"from": [...], "required": true} です。受け付けるのは v2 の DGRAM だけで、v1・STREAM・形の誤ったヘッダは捨てます。required が true なら from からのヘッダのないデータグラムを、from の外からヘッダで始まるデータグラムはいつも捨てます(stats.denied、conn.denied の reason: proxy_protocol / proxy_protocol_untrusted)。
    • ヘッダのクライアントを allow_from・geoip・crowdsec・limits・bandwidth・ログの client・転送先への source_ip(proxy_v2 と transparent、route ごとの source_ip も)に使います。前段のアドレスはログの proxy_peer に残ります。返事は前段へヘッダなしで返します。
    • tls.mode: sni(DTLS・QUIC の名前での振り分け)と DTLS の終端では、ヘッダを外してから扱います。
    • PATCH・ルールの組の PUT・設定ファイルの再読み込みで、接続を切らずに付け外しできます。
    • proxy_protocol のないルールの UDP の処理は変わりません。ヘッダの解析は 1 データグラムあたり約 45 ns です。

修正

  • rustls-webpki 0.103.16・webpki-roots 1.0.10 にしました(RUSTSEC-2026-0382・RUSTSEC-2026-0381、#317)。証明書の検証で、信頼されなくなった中間証明書(emSign など)を受け入れることがありました。転送先への TLS・ACME・OIDC などの検証に効きます。

変更

  • http のルールの HTTP/3 は対象外です。実験の DPDK の道(dpdk の機能)で動く udp のルールでは、proxy_protocol を断ります(bind_failed)。

UI: TCP-UDP-rproxy-ui v0.4.7 · Kubernetes: rproxy-gateway v0.4.14


Added

  • udp rules can now accept PROXY protocol v2 (#312, features.proxy_protocol_in_udp). An inner rproxy reads the header an outer rproxy adds to UDP with source_ip: proxy_v2 (DGRAM, on every datagram), so multi-hop setups keep the client's global IP all the way.
    • Written as for TCP: proxy_protocol: {"from": [...], "required": true}. Only v2 DGRAM is accepted; v1, STREAM and malformed headers are dropped. With required true, headerless datagrams from from are dropped; datagrams from outside from that start with a header are always dropped (stats.denied, conn.denied with reason: proxy_protocol / proxy_protocol_untrusted).
    • The header's client is used for allow_from, geoip, crowdsec, limits, bandwidth, the log's client and the outbound source_ip (proxy_v2 and transparent, per-route source_ip too). The upstream's address stays in the logs as proxy_peer. Replies go back to the upstream without a header.
    • With tls.mode: sni (routing DTLS / QUIC by name) and DTLS termination, the header is removed first.
    • It can be added and removed without cutting connections (PATCH, rule set PUT, settings reload).
    • UDP handling of rules without proxy_protocol is unchanged; parsing the header costs about 45 ns per datagram.

Fixed

  • rustls-webpki 0.103.16 and webpki-roots 1.0.10 (RUSTSEC-2026-0382, RUSTSEC-2026-0381, #317). Certificate verification could accept distrusted intermediates (such as emSign). This affects verifying backends over TLS, ACME, OIDC and so on.

Changed

  • HTTP/3 of http rules is out of scope. On the experimental DPDK path (the dpdk feature), udp rules with proxy_protocol are refused (bind_failed).

UI: TCP-UDP-rproxy-ui v0.4.7 · Kubernetes: rproxy-gateway v0.4.14