SagerNet / SagerNet/sing-tun

gvisor: HandleLocal=true breaks WireGuard userspace stack inbound

Open
#72 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
237
Forks
228
PR merge metrics
No merged PRs in 30d

Description

ce2b05a introduces HandleLocal: !isLocalStack in newGVisorStack. Combined with the SetPromiscuousMode(DefaultNIC, true) that is always enabled, every inbound packet on a WireGuard userspace stack is dropped as InvalidSourceAddressesReceived. The result is that any WireGuard outbound running on the pure gvisor device cannot receive replies.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at newGVisorStack and inspect how HandleLocal interacts with the always-enabled SetPromiscuousMode(DefaultNIC, true). Reproduce the pure gVisor WireGuard userspace case and confirm inbound packets are reported as InvalidSourceAddressesReceived. Done means outbound traffic can receive replies without those inbound packets being dropped.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.