proxychains-ng is a preloader that intercepts socket calls in dynamically linked programs and redirects network traffic through SOCKS or HTTP proxies.
The tool works by hooking libc network functions via LD_PRELOAD and dlsym, allowing transparent proxy redirection without modifying target applications. It supports SOCKS4a, SOCKS5, and HTTP proxies, with features including round-robin proxy selection, DNS handling through proxies, IPv6 support, and raw proxy types. The approach is fundamentally a hack that intercepts function calls at the library level, which means compatibility depends on how programs are built and linked.
Adoption suits developers who need to route traffic from compiled C/C++ programs through proxies on Unix-like systems. The tool works best with simple dynamically linked binaries; it may fail with scripts, background daemons, or programs that use dlopen to load modules. The README explicitly recommends iptables-based solutions as more robust alternatives for cases where proxychains proves incompatible. The project runs on Linux, BSD, Mac, and Haiku. Installation requires a C compiler and standard build tools, with optional system-wide installation via make.
Development shows sustained maintenance across multiple platforms and proxy protocols. Recent work includes adding hooks for newer system functions like close_range to support current OpenSSH versions, implementing new macOS hooking methods for Monterey and later, fixing regressions in the configure script's linker detection, and addressing platform-specific issues on NetBSD and OpenBSD. The changelog demonstrates ongoing bug fixes for edge cases such as file descriptor leaks in forked processes, DNS handling improvements, and robustness fixes in multithreaded applications.