Skip to content

single#5982

Open
LjhAUMEM wants to merge 3 commits intoXTLS:mainfrom
LjhAUMEM:single-conn
Open

single#5982
LjhAUMEM wants to merge 3 commits intoXTLS:mainfrom
LjhAUMEM:single-conn

Conversation

@LjhAUMEM
Copy link
Copy Markdown
Collaborator

@LjhAUMEM LjhAUMEM commented Apr 20, 2026

变回 single

#5976

@LjhAUMEM
Copy link
Copy Markdown
Collaborator Author

xray dial udp 上层 dest 填什么是不是都 listen 的 0.0.0.0,这样就刚好默认双栈

我得测试双栈下 addr String 行为是不是一致的,先别合了

@LjhAUMEM
Copy link
Copy Markdown
Collaborator Author

LjhAUMEM commented Apr 20, 2026

测完了,先说结论
1.xray dial udp 无 sockopt 下不管 dest 是啥都是默认 listen 的 0.0.0.0:0
2.ListenPacket 不管 laddr 是 AnyIP 还是 AnyIPv6,readfrom 的 ipv4 addr String 都是一致的,不会出现 4 in 6

不过发现双栈需要 network 是 udp,如果是 udp4 或者 udp6 都会收不到另一种

应该没有要改的了

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 20, 2026

第一次无比希望 NAT 是 symmetric,甚至对于 IPv6 也映射下端口吧

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 20, 2026

加个配置两种模式都保留吧,对于 UDP 真的会有单端口限速的

@LjhAUMEM
Copy link
Copy Markdown
Collaborator Author

加个配置两种模式都保留吧,对于 UDP 真的会有单端口限速的

如果没加 mux 无需担心,下次 dial 就换端口了,两种都保留算了吧,本来是为了解决那哥们要的应用 sockopt,要么两个都关了要么 single 吧

第一次无比希望 NAT 是 symmetric,甚至对于 IPv6 也映射下端口吧

ipv6 映射啥意思,我要改啥吗

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 20, 2026

我的意思是如果用同一个 socket,那么在经过 Symmetric NAT 前,或者 NAT 是 Cone,来源二元组都是一样的,运营商/GFW 可能有 UDP 单端口限速,多 resolvers 的速度就会受影响,而 IPv6 更是理论上不需要任何 NAT,本地端口号即公网端口号

还是希望能同时兼容多 sockets 和 sockopt

@RPRX
Copy link
Copy Markdown
Member

RPRX commented Apr 20, 2026

难道说 sockopt 那个文件夹引用了 finalmask/xdns 吗,引用这个干啥

@LjhAUMEM
Copy link
Copy Markdown
Collaborator Author

有可能,来源一样 dst 不一样有打洞的嫌疑

sockopt 不是我的需求啊,就算是为了防止 tun 回环在路由里操作一下就好了,那把两个都关了吧

@LjhAUMEM
Copy link
Copy Markdown
Collaborator Author

难道说 sockopt 那个文件夹引用了 finalmask/xdns 吗,引用这个干啥

没引用啊

sockopt 主要是缺少上层 streamSettings 问题,不然可以直接调用 internet.DialSystem

@26X23
Copy link
Copy Markdown
Contributor

26X23 commented Apr 20, 2026

还是希望能同时兼容多 sockets 和 sockopt

@RPRX in the second force-pushed version (6ddda1a) of my PR #5976 I added callback controller to the WrapPacketConnClient to apply sockopts to multiple sockets and to modify as least files outside the finalmask/ folder as possible (compared to the first version). I can revert my PR to the 6ddda1a if you think it would be better.

@LjhAUMEM
Copy link
Copy Markdown
Collaborator Author

LjhAUMEM commented Apr 20, 2026

@RPRX in the second force-pushed version (6ddda1a) of my PR #5976 I added callback controller to the WrapPacketConnClient to apply sockopts to multiple sockets and to modify as least files outside the finalmask/ folder as possible (compared to the first version). I can revert my PR to the 6ddda1a if you think it would be better.

你封装个 streamSettings.sockopt 进去干啥,还不如像 udphop 封装个 dialer 进去呢,然后就可以把 udphop 移到 mask

不过这个 dialer 也只能 tcp udp,对于 icmp 就没办法了

@26X23
Copy link
Copy Markdown
Contributor

26X23 commented Apr 20, 2026

Why wrap streamSettings.sockopt inside?

Because I can't pass SocketConfig to the WrapPacketConnClient directly, there will be an import cycle.

You might as well wrap it in a dialer

Do you mean to pass net.Dialer wraper with sockopts inside it into the WrapPacketConnClient instead of the controller?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants