Skip to content

Prepare Netch v2.0.0 with broader proxy support and IPv6 TUN routing - #1205

Open
cbear2024 wants to merge 36 commits into
netchx:mainfrom
cbear2024:main
Open

cbear2024 wants to merge 36 commits into
netchx:mainfrom
cbear2024:main

Conversation

@cbear2024

Copy link
Copy Markdown

Summary

  • update the maintained fork to the current Netch v2 codebase and release metadata
  • add/refresh proxy protocol and subscription parsing support
  • harden tun2socks lifecycle handling and TUN route setup
  • add IPv4/IPv6 TUN route handling and bundled Wintun/tun2socks v3 assets
  • improve update checking and display the fork's release version

The fork has been built successfully as a Windows x64 single-file executable. The v2.0.0 release is available here: https://github.com/cbear2024/netch/releases/tag/v2.0.0

Build verification: dotnet publish -c Release -r win-x64 succeeded; the published executable reports file version 2.0.0.0.

cbear2024 and others added 30 commits October 22, 2026 16:31
Log individual shutdown phases and avoid exceptions when a process has no ProcessName during cleanup.
Run MainController shutdown on the worker thread, avoid duplicate stops, and warn if native cleanup exceeds 15 seconds without falsely reporting stopped.
Native aio_free returns void. Correct the managed declaration and FreeAsync Task return type.
fix: prevent Win11 stop action from freezing Netch UI
Fix log writer races, propagate stop failures with retries, bound driver stop waits, provide explicit recovery for stalled native cleanup, correct private-network rule, and remove finalizer-thread WinForms disposal.

Static diff checks passed. Windows 11 build/runtime tests pending.
Prevent use-after-free and malformed SOCKS UDP buffer access; handle partial TCP framing and odd ICMP sizes; fix startup lock and unstarted process cleanup, native TCP port allocation leaks, TUN IPv4/route cleanup and DNS validation. Upgrade GitHub Actions versions.

Static diff checks passed. Windows CI was not triggered on this fork; Windows compilation and runtime verification remain pending.
主要更新:
- 改为中文主文档并保留英文简介
- 更新当前仓库的构建、Release 和许可证徽章
- 增加游戏代理、UDP 转发及 NAT 检测优化说明
- 补充 VLESS + WebSocket 配置注意事项
- 解释 NoUDP、Timeout、UnsupportedServer 等结果
- 增加 .NET 10 SDK、Visual Studio 和完整构建命令
- 补充目录结构及常见故障排查
- 移除过时的 2.0 清仓提示
- Propagate TCP half-closes and keep accept loop alive on transient failures
- Bound SOCKS handshakes, cool down failed UDP associations, and handle domain and wildcard relay replies
- Correct DNS address family, optimize regex filtering and protect config recovery
- Make async/UI interactions safe, improve process and guard error handling
- Add DNS cache expiry and IPv6-safe host parsing

Static diff checks passed; Windows build and runtime verification pending.
- DnsUtils: drop the global lock that serialized every lookup; concurrent
  cache, de-duplicated in-flight queries, bounded system resolver wait,
  parallel A/AAAA queries.
- Server.PingAsync: best of three probes instead of first finished.
- NFController.CheckRules: materialize the lazy query (rules were re-dialed
  after AIO_CLRNAME).
- MainForm: fix CTS race between NAT/HTTP tests after quick restart, await
  single-server speed test, avoid tight loop when StartedPingInterval is 0,
  drop per-second full-window Refresh, always stop the temporary proxy after
  updating subscriptions through it.
- MainController.HttpConnectAsync now awaits so its catch blocks work.
- Guard: event-driven start detection, fail fast when the core exits early,
  keep output encoding in ChangeMainFile, tolerate output after stop.
- NAT test: parallel DNS, 20 s total timeout, always close the proxy;
  HTTP test honors RequestTimeout.
- Share one GeoIP reader; dispose Ping; lock-free traffic counter.
- Firewall: check rules once per process; do not mutate while enumerating.
- TUN: parallel lookups, faster adapter polling.
- Enable nullable annotations context (removes ~670 CS8632 warnings).
- Convert two GBK-encoded sources to UTF-8.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016JoFW4vpFVpVwNbUurcnrw
- build.ps1: stop on errors, restore location, rebuild components unless
  -UseCache, tolerate GeoIP download failures with a local fallback, keep the
  bundled wintun.dll.
- CI: current action versions, explicit .NET SDK, drop unused Rust setup,
  least-privilege permissions, cancel superseded runs.
- README: correct target framework, document -UseCache and new optimizations.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016JoFW4vpFVpVwNbUurcnrw
Scripts from a downloaded source archive carry Mark-of-the-Web and are
refused under the RemoteSigned execution policy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016JoFW4vpFVpVwNbUurcnrw
…yConfig

- VSTHRD011 (error): replace Lazy<Task<T>> with AsyncLazy<T>.
- VSTHRD103: await CancelAsync instead of Cancel.
- V2rayConfig.cs: '#nullable disable warnings' keeps annotations valid.
- Remove unused exception variable (CS0168).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016JoFW4vpFVpVwNbUurcnrw
- Raise Redirector relay threads (TCP accept/relay, UDP receive, DNS relay)
  to THREAD_PRIORITY_HIGHEST so forwarding is not delayed behind game threads.
- 1 MiB send/receive buffers on SOCKS UDP relay sockets.
- Count redirected TCP bytes so aio_getUP/DL cover all forwarded traffic.
- ProcessTuning: while accelerating, run Netch and the proxy cores
  (xray, sing-box, tun2socks, pcap2socks) at AboveNormal and opt them out of
  power throttling (EcoQoS). Controlled by GameProcessBoost (default on).
- Process mode traffic display reads the Redirector counters instead of a
  system-wide kernel network ETW session.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016JoFW4vpFVpVwNbUurcnrw
…tching

- Add process-mode rules (with child processes, LAN direct) for:
  EA App + EA games + anti-cheat, Steam + Steam games, Rockstar Games +
  GTA series, PUBG + BattlEye, Counter-Strike 2 + VAC/FACEIT.
- Redirector: compile rules case-insensitive (Windows paths are).
- filterParent now walks up to 6 ancestors instead of only the direct
  parent, using NtQueryInformationProcess for parent PID and process
  creation time to reject recycled parent PIDs. Fixes cached processes
  that were looked up without parent information never matching by parent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016JoFW4vpFVpVwNbUurcnrw
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016JoFW4vpFVpVwNbUurcnrw
cbear2024 and others added 6 commits October 27, 2026 14:30
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016JoFW4vpFVpVwNbUurcnrw
Remove the legacy SSH, Shadowsocks(R), Socks5 and Trojan controller/form
implementations that were replaced by the Xray/sing-box based servers,
and update Guard, the V2ray controller/config, Redirector and workflows
to match the local tree the following optimizations were made on.
…h overhead

- Multiplex proxied DNS queries over a single long-lived UDP ASSOCIATE by
  rewriting the transaction ID, instead of a new SOCKS handshake, UDP socket
  and two threads (plus an upstream TLS session) per query. Recycles the
  association after repeated unanswered queries and on FREE.
- Compile per-connection / per-packet logging out of Release builds.
- Run the simulated ICMP delay on its own thread instead of sleeping on the
  Netfilter IP callback thread.
- Raise the TCP relay buffer from 1446 bytes to 16 KiB.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016JoFW4vpFVpVwNbUurcnrw
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016JoFW4vpFVpVwNbUurcnrw
- Correct supported protocols and cores (SSR/SSH removed; Hysteria2, TUIC,
  AnyTLS, NaiveProxy, MASQUE added; sing-box must be placed in bin).
- Drop the non-existent Web mode; describe the three real modes.
- Add a game acceleration guide (Game Collection mode, Steam downloads,
  GameProcessBoost, rule syntax) and matching troubleshooting entries.
- Build works from plain PowerShell (vswhere, unblocked sub-scripts).
- Move detailed release notes into a Changelog section.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016JoFW4vpFVpVwNbUurcnrw
- The release workflow reads docs/release-notes/<version>.md (tag v2.0.1 ->
  2.0.1.md) as the release body and appends download instructions and a
  SHA256 table; falls back to the README changelog link.
- Publish Netch-<tag>-win-x64.zip and the single-file .exe, matching the
  v2.0.0 release layout.
- Add 2.0.1 release notes and document the release process in README.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016JoFW4vpFVpVwNbUurcnrw
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants