[1.74.2] - 2026-08-02
- FIXED: b4's own output filled a router's memory - init scripts from older installers wrote b4's full log to a file kept in RAM on OpenWrt, and updates never replaced those scripts.
- FIXED: A restart could leave a second copy of b4 running alongside the first - the departing process deleted the file that tracks the running service, after its replacement had already claimed it.
- FIXED: Log files kept growing while b4 ran - the error log was checked against its size limit only at startup, the update log was never trimmed, and abandoned trace files were left behind.
- FIXED: Turning "Route UDP through upstream" off left the UDP rules in the firewall and took the listener away - the rule state was keyed on the upstream host, port and username alone, so the switch never rebuilt the firewall side, while the listener was rebuilt without its UDP half. Matched UDP kept being diverted to a port with nothing behind it, so a browser speaking HTTP/3 to a routed site sat through its timeout rather than falling back to TCP, and switching the option off made the site less reachable than leaving it on. Only a restart applied the change.
- CHANGED: A set routed through a TCP-only upstream proxy refuses QUIC instead of letting it past - with "Route UDP through upstream" off, matched UDP was not diverted at all, so any site offering HTTP/3 was reached over QUIC straight out of the router while its TCP traffic went through the proxy. The bypass was silent, and a browser kept preferring it for a month after a single visit, since sites advertise HTTP/3 with a long
alt-svclifetime. Matched UDP on port 443 is refused with an ICMP port-unreachable, which browsers read as a signal to fall back to TCP. Turn the option on if the upstream implements UDP ASSOCIATE. - CHANGED: An upstream proxy that cannot relay UDP reported it only at trace level - matched UDP was dropped without a word, so a set pointed at a TCP-only SOCKS5 with "Route UDP through upstream" left on looked like a broken site rather than a setting to change.
- FIXED: Traffic handed to an upstream SOCKS5 proxy went out direct once for every address behind a domain - a set matches by domain suffix, so
ipinfo.iocoverswebsite-cdn.assets.ipinfo.io, while the address pre-resolve only looked up the names written in the set. Every other hostname was learned one address at a time from connections that had already left unrouted, and a site spread across a CDN kept producing them. A hostname that matches a routing set by suffix is resolved in full, and every address it answers with enters the set. - FIXED: The first connection after a redirected DNS answer could escape a routing set - b4 sent the answer to the client and only then wrote the addresses into the set, and writing them runs the
nftoripsetbinary, which takes longer than the client takes to send the packet that follows its DNS answer. - ADDED: A Remove button for each geo database - a downloaded
geosite.datorgeoip.datcould only be replaced, never taken off the device, and pointing the destination directory somewhere else left the previous copy at the old path, since editing that field alone changes nothing to save. On a router with little free storage that meant two copies of a 51 MB file with no way to reach either from the interface. Remove deletes the file and clears its path and source URL, so the scheduler does not fetch it back, and a download or upload into a different directory deletes the copy b4 wrote at the old location. - FIXED: An update ran out of space on devices with little storage - it kept a second copy of the installed b4 alongside the new one, and a failed update left that copy behind.
- ADDED: An IPv4/IPv6 switch in the DC Relay socat helper - the generated commands could only reach Telegram over IPv4, so on a VPS whose working route to the data centers is the IPv6 one, the addresses had to be found elsewhere and pasted in by hand every time a host was lost. The switch emits
TCP6:upstreams, and a DC Relay address written as an IPv6 literal ([2001:db8::1]:7007) also flips the listening side toTCP6-LISTEN.
What's Changed
- feat: add IPv4/IPv6 support in DC Relay and update documentation by @DanielLavrushin in #287
- fix: update changelog date for version 1.74.2 by @DanielLavrushin in #288
Full Changelog: v1.74.1...v1.74.2