Repository navigation
v0.4.16
追加
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 です。
- 書き方は TCP と同じ
修正
- 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
udprules can now accept PROXY protocol v2 (#312,features.proxy_protocol_in_udp). An inner rproxy reads the header an outer rproxy adds to UDP withsource_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. Withrequiredtrue, headerless datagrams fromfromare dropped; datagrams from outsidefromthat start with a header are always dropped (stats.denied,conn.deniedwithreason: proxy_protocol/proxy_protocol_untrusted). - The header's client is used for
allow_from,geoip,crowdsec,limits,bandwidth, the log'sclientand the outboundsource_ip(proxy_v2andtransparent, per-routesource_iptoo). The upstream's address stays in the logs asproxy_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_protocolis unchanged; parsing the header costs about 45 ns per datagram.
- Written as for TCP:
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
httprules is out of scope. On the experimental DPDK path (thedpdkfeature),udprules withproxy_protocolare refused (bind_failed).
UI: TCP-UDP-rproxy-ui v0.4.7 · Kubernetes: rproxy-gateway v0.4.14