Breaking Changes
- MSRV bumps to v1.91, required by
smoltcpv0.13 refactor(service)!: rework outbound proxy chain into a unified client. The outbound proxy architecture has been completely reworked into a single self-contained modulenet::outbound, exposingOutboundProxyClient,OutboundProxyStream,Socks5Auth,HttpProxyAuthand aTcpDialertrait.crate::net::outbound_proxy— removed; usecrate::net::OutboundProxyClientcrate::net::http_connect::HttpConnectClient— moved tocrate::net::HttpConnectClient(only available with thelocal-httpfeature)crate::net::Socks5TcpClient(the chain-mixing wrapper) — split: the pure SOCKS5 client is nowcrate::local::socks::client::socks5::Socks5TcpClient; the in-band negotiator iscrate::net::Socks5Negotiatorcrate::local::net::tcp::outbound_proxy— removedServiceContext::outbound_proxies()— replaced byoutbound_client()returningOption<&Arc<OutboundProxyClient>>
create_inbound_udp_socketpublic function signature changed, addedallow_fragmentationparameterinbound_udp_allow_fragmentationnew configuration option split fromoutbound_udp_allow_fragmentation, which now only controls outbound sockets. The inbound (listener) UDP sockets default to disabling IP fragmentation (false).
Features
- #2106 Allow chaining
ssserverto another SOCKS5/HTTP/HTTPS proxy - #2109 Expose
user_key()onCryptoStreamandProxyServerStream, lets callers identify which multi-user identity was authenticated after an AEAD-2022 handshake - EIH (Extended Identity Header) support
- #1994
local-http: Support HTTP Basic auth service: Outbound UDP relay through SOCKS5-only chains. UDP traffic can now be relayed through proxy chains when all hops are SOCKS5. Chains containing HTTP/HTTPS hops will emit a startup warning and UDP traffic will bypass the chain.- Optimized
socket2::Socketwithsocket2::SockRef
Bug Fixes
- Allow fragmentation for inbound UDP replies
- RUSTSEC-2026-0258, RUSTSEC-2026-0204, RUSTSEC-2026-0185, RUSTSEC-2026-0119, RUSTSEC-2026-0104, RUSTSEC-2026-0099
net: Make UDP batch configs match the BSD module routing for tvOS/watchOS- #2100 Native build error on arm64
shadowsocks-service: Fixed build withoutlocal-httpfeature- #2062
http: Addis_readymethod and enhance connection checks - #2097 Unify alpine base version in Docker images
- #2093
PingBalancer: Remove unnecessary double checks netbsd: Cross-compilation fixes withgetentropyshim and passthroughRUSTFLAGSsyntax
Miscellaneous
shadowsocks-cryptoupgraded to v0.8.0smoltcpupgraded to v0.14- Upgraded various dependencies
What's Changed
- chore(deps): update actions/upload-artifact action to v6 by @renovate[bot] in #2056
- fix(deps): update rust crate reqwest to 0.13 by @renovate[bot] in #2058
- chore: clippy fix by @AaronChen0 in #2059
- fix(http): add is_ready method and enhance connection checks by @arloor in #2062
- fix(deps): update rust crate nix to 0.31 by @renovate[bot] in #2066
- chore(deps): update rust crate time to v0.3.46 by @renovate[bot] in #2067
- chore(deps): update rust crate clap to v4.5.57 by @renovate[bot] in #2071
- chore(deps): update rust crate regex to v1.12.3 by @renovate[bot] in #2072
- chore: fix a warning by @AaronChen0 in #2076
- chore: fix typos by @AaronChen0 in #2075
- fix(deps): update rust crate rand to 0.10 by @renovate[bot] in #2074
- chore(deps): update actions/upload-artifact action to v7 by @renovate[bot] in #2079
- chore(deps): bump quinn-proto from 0.11.13 to 0.11.14 in the cargo group across 1 directory by @dependabot[bot] in #2080
- chore(deps): update rust crate libc to v0.2.183 by @renovate[bot] in #2085
- chore(deps): update rust crate socket2 to v0.6.3 by @renovate[bot] in #2086
- chore(deps): update rust crate tracing-subscriber to v0.3.23 by @renovate[bot] in #2087
- chore(deps): update rust crate tun to v0.8.6 by @renovate[bot] in #2088
- chore(deps): update rust crate clap to v4.6.0 by @renovate[bot] in #2089
- chore(deps): update rust crate ipnet to v2.12.0 by @renovate[bot] in #2090
- chore(deps): update rust crate tokio to v1.50.0 by @renovate[bot] in #2091
- chore(deps): update rust docker tag to v1.94.0 by @renovate[bot] in #2092
- chore(deps): update docker/build-push-action action to v7 by @renovate[bot] in #2081
- chore(deps): update docker/login-action action to v4 by @renovate[bot] in #2082
- chore(deps): update docker/setup-buildx-action action to v4 by @renovate[bot] in #2084
- chore(deps): update docker/metadata-action action to v6 by @renovate[bot] in #2083
- fix: remove unnecessary double checks in PingBalancer by @AaronChen0 in #2093
- fix: unify alpine base version by @vndroid in #2097
- chore(deps): update rust crate arc-swap to v1.9.0 - autoclosed by @renovate[bot] in #2096
- chore(deps): bump rustls-webpki from 0.103.8 to 0.103.10 in the cargo group across 1 directory by @dependabot[bot] in #2095
- fix(deps): update rust crate smoltcp to 0.13 by @renovate[bot] in #2094
- fix: native build error on arm64 by @vndroid in #2100
- chore(deps): update rust crate libc to v0.2.184 by @renovate[bot] in #2104
- chore(deps): update rust crate tokio to v1.51.1 by @renovate[bot] in #2105
- [Feature]: Allow to chain ssserver to another socks5/http/https proxy #1397 by @missdeer in #2106
- feat: expose user_key() on CryptoStream and ProxyServerStream by @ibigbug in #2109
- chore(deps): update softprops/action-gh-release action to v3 by @renovate[bot] in #2108
- Remove unused imports in outbound_proxy by @faern in #2111
- chore(deps): update rust crate clap to v4.6.1 by @renovate[bot] in #2113
- chore(deps): update rust crate tracing-appender to v0.2.5 by @renovate[bot] in #2119
- chore(deps): update rust crate webpki-roots to v1.0.7 by @renovate[bot] in #2116
- chore(deps): update rust crate tokio to v1.52.1 by @renovate[bot] in #2110
- chore(deps): update rust docker tag to v1.95.0 by @renovate[bot] in #2118
- feat: add eih support by @alex27riva in #2115
- chore(deps): update rust crate blake3 to v1.8.5 by @renovate[bot] in #2123
- chore(deps): update rust crate libc to v0.2.186 by @renovate[bot] in #2122
- chore(deps): update rust crate mimalloc to v0.1.50 by @renovate[bot] in #2120
- chore(deps): update rust crate rpassword to v7.5.1 by @renovate[bot] in #2126
- refactor(service)!: rework outbound proxy chain into a unified client by @zonyitoo in #2127
- fix(deps): update rust crate aes to 0.9 by @renovate[bot] in #2107
- Replace
ringwithaws-lc-rsby @faern in #2112 - fix(deps): update rust crate hickory-resolver to 0.26 by @renovate[bot] in #2114
- chore(deps): update rust crate pin-project to v1.1.12 by @renovate[bot] in #2133
- chore(deps): update rust crate hickory-resolver to v0.26.1 by @renovate[bot] in #2132
- chore(deps): bump openssl from 0.10.75 to 0.10.79 in the cargo group across 1 directory by @dependabot[bot] in #2121
- chore(deps): update rust crate tokio to v1.52.2 by @renovate[bot] in #2131
- chore(deps): update rust crate rpassword to v7.5.2 by @renovate[bot] in #2130
- Document redir iptables setup by @TurboTheTurtle in #2135
- fix(deps): update rust crate spin to 0.12 by @renovate[bot] in #2136
- chore(deps): update rust crate log to v0.4.32 by @renovate[bot] in #2140
- chore(deps): update rust crate time to v0.3.49 by @renovate[bot] in #2141
- chore(deps): update actions/checkout action to v7 by @renovate[bot] in #2145
- chore(deps): update rust crate arc-swap to v1.9.2 by @renovate[bot] in #2149
- chore(deps): update rust crate dynosaur to v0.3.1 by @renovate[bot] in #2153
- chore(deps): update rust crate env_logger to v0.11.11 by @renovate[bot] in #2148
- chore(deps): update rust crate etherparse to v0.20.3 by @renovate[bot] in #2154
- chore(deps): update rust crate spin to v0.12.1 by @renovate[bot] in #2147
- chore(deps): update rust crate time to v0.3.53 by @renovate[bot] in #2150
- chore(deps): update rust docker tag to v1.96.1 by @renovate[bot] in #2151
- chore(deps): update rust crate rand to v0.10.2 by @renovate[bot] in #2152
- chore(deps): update rust crate bytes to v1.12.1 by @renovate[bot] in #2155
- chore(deps): update rust crate spin to v0.12.2 by @renovate[bot] in #2156
- chore(deps): update rust crate clap to v4.6.4 by @renovate[bot] in #2159
- chore(deps): update rust crate tun to v0.8.14 by @renovate[bot] in #2158
- fix(net): make udp batch cfgs match the bsd module routing for tvos/watchos by @gengjiawen in #2162
- chore(deps): update rust crate clap to v4.6.6 by @renovate[bot] in #2163
- fix: allow fragmentation for inbound UDP replies by @pengwk in #2161
- chore(deps): update rust crate blake3 to v1.8.7 by @renovate[bot] in #2166
- chore(deps): update rust crate log to v0.4.34 by @renovate[bot] in #2168
- chore(deps): update rust crate spin to v0.12.3 by @renovate[bot] in #2165
- chore(deps): update rust docker tag to v1.98.0 by @renovate[bot] in #2167
New Contributors
- @arloor made their first contribution in #2062
- @missdeer made their first contribution in #2106
- @alex27riva made their first contribution in #2115
- @TurboTheTurtle made their first contribution in #2135
- @gengjiawen made their first contribution in #2162
- @pengwk made their first contribution in #2161
Full Changelog: v1.24.0...v1.25.0