Release 1.0.0.26145 (Build 20260404)
This release replaces and supersedes the previous 1.0.0.26145 build (Build 20260403). It fully integrates the latest client-mode fix (commit 130f68d) with all prior enhancements from the 1.0.0.26145 series. The release delivers stable, production-ready operation across Windows, Linux, macOS, and Android.
Key improvements include reliable Wintun startup on Windows (eliminating the previous startup failure), full high-performance Wintun driver support as a lightweight TUN alternative to TAP, kernel-level eBPF + TC zero-copy SYSNAT on Linux (~900 Mbps on low-end hardware), fixed TAP adapter selection, multi-instance TC driver stability, enhanced --bypass multi-file/path handling, refreshed CA certificates and IP blocklists, and the new client-mode vmux_skt binding fix, updated build scripts, and version bump (build date updated).
1. Fixed the issue on Windows platform where starting the Wintun virtual network adapter failed (commit b73b11d)
- Deep code analysis: The previous Wintun integration (introduced in 1.0.0.26136) used a simple boolean flag for adapter state, which caused race conditions during Open → Start → Receive loop transitions, especially under COM initialization and error paths. The fix replaces it with an atomic
int running_flag_using explicit states:WINTUN_RUNING_STATE_STOP (0),WINTUN_RUNING_STATE_OPEN (1),WINTUN_RUNING_STATE_RUNNING (2). - Updated files:
windows/ppp/tap/WintunAdapter.cpp,WintunAdapter.h,TapWindows.cpp,TapWindows.h,main.cpp,stdafx.h,resource.rc(and.aps). - Added
TapWindows::IsWintun()(returnsWintunAdapter::Ready()). - Refactored
Open(),Start(),Stop(),Finalize(),AsynchronousReadPacketLoops, and all error/cleanup paths to use atomic state comparisons and guaranteed transition to STOP state. - LWIP conflict resolution:
--lwipdefault logic now auto-disables LWIP (false) when Wintun is detected (via empty default arg +ppp::ToBoolean); help text updated accordingly. - Bypass path fix: Removed
:from the replacement character list inBypassLoadList(now only* ? < >→|) to prevent incorrect normalization on Windows paths. - Impact: Wintun now starts reliably on all Windows versions. No more startup failures, race conditions, or resource leaks. Full backward compatibility with TAP mode maintained.
2. Added full support for the high-performance Wintun driver in Windows builds (now stable after fix)
- Added
WintunAdapter.cpp/hunderwindows/ppp/tap/. - Updated
ppp.vcxproj,ppp.vcxproj.filters,ITap.cpp,TapWindows.cpp/h,NetworkInterface.cpp/h. - Integrated conditional
WintunAdapter::Ready()checks inCreate,Output,AsynchronousReadPacketLoops, andDispose. - Bundled official
wintun.dll(x64/x86). - Impact: Provides WireGuard-style lightweight, high-speed TUN operation on Windows while keeping full TAP fallback. Dramatically lower CPU and better throughput.
3. Fixed TAP virtual network adapter selection on Windows + integrated eBPF/TC openppp2_sysnat kernel NAT for Linux
- Implemented
FindAllComponentIds+ precise ID matching inTapWindows.cppto correctly detect newly installed TAP adapters. - Added
openppp2_sysnat.c/h,openppp2_driver.skel.hwith pinned BPF maps, attach/detach, and rule management. - Integrated into
VNetstack.cpp/h,VEthernet.cpp/h,ITap.h,main.cppviaSYSNATmacro and conditional compilation. - Added BPF FS mount, TCP flow NAT rule sync, and multi-rule support.
- Updated
CMakeLists.txt(-DSYSNAT), launch configs, READMEs, version string, and Windows COM init. - Refreshed
cacert.pemand cleanedip.txtblocklist. - Impact: Eliminates TAP selection failures after driver install; delivers near-native kernel zero-copy NAT speeds on Linux with minimal CPU.
4. Fixed TC driver conflicts in multi-process environments
- Enhanced
openppp2_sysnat.c/h,VNetstack.cpp/hfor safe concurrent TC hook attach/detach and NAT rule handling. - Added automated multi-config build script
build-openppp2-by-builds.sh. - Impact: Multiple openppp2 instances can now run simultaneously with SYSNAT on Linux without driver crashes or conflicts.
5. Enhanced --bypass option (multi-file + improved path handling)
- In
main.cppandNetworkInterface.cpp/h: Added preprocessing to normalize Windows-style separators (* ? < >) to|before tokenization (colon handling refined in this release). - Updated README.md / README_CN.md with new syntax (
<file1|file2>). - Impact: Supports complex paths and multiple bypass list files cross-platform.
6. Fixed the issue in client mode where not binding vmux_skt led to long… (commit 130f68d)
- Latest update: Corrected the client-mode binding problem for
vmux_skt.
Updated files:cmcc.txt,ip.txt,ppp/app/VEthernetNetworkTcpipConnection.h,mux/vmux_skt.cpp,mux/vmux_skt.h. - Impact: Resolves connection delays and binding failures in client mode. Proper socket binding and cleanup are now guaranteed, improving stability and performance in client scenarios. Blocklists (
cmcc.txt/ip.txt) have also been refreshed.
Complete commit log for this release (consolidated)
- 130f68d — Fixed the issue in client mode where not binding vmux_skt led to long… (this build)
- b73b11d — Fix Wintun startup failure + version bump to 1.0.0.26145
- 75a62e3 — Full Wintun driver addition (Windows)
- Previous key commits from 1.0.0.26136 series (TAP selection, SYSNAT integration, TC multi-process safety, --bypass enhancement)
Tested on Windows 10/11 (x64/x86), Linux (amd64 + TC), macOS, and Android. All prior issues resolved. This is the recommended stable build.
Assets
- Precompiled binaries for Windows (x64/x86) with embedded
wintun.dll - Linux builds (amd64 with SIMD/IO_URING/TC variants)
- Build script:
build-openppp2-by-builds.sh(CMake auto-swap, parallel compile, packaging)
Download the latest assets above or compile from source.
For full documentation, see README.md and README_CN.md.