您尚未登录。

#1 2023-07-04 22:32:50

小狐狸
会员
注册时间: 2023-07-04
帖子: 1

Wireguard 可以经由 socks5 代理链接对端吗?

Wireguard 是一个较新的提供虚拟专用网路 (VPN) 的方案,在某些领域大受欢迎。根据其白皮书,Wireguard 的底层传输协议可以基于 UDP。与此同时,支持 UDP 模式的 SOCKS5 代理软件与代理服务提供商也在近些年快速发展。因此,使 Wireguard 经由支持 UDP 的 SOCKS5 代理连接远方对端,在理论上不应存在难以逾越的技术障碍。
然而经过简单的搜索,有非常多的结果指导访问者如何将 Wireguard 客户端作为 SOCKS5 服务器为本地程序提供代理,但如何让 Wireguard 经由已经运行的 SOCKS5 服务器连接远端的结果屈指可数。在这些屈指可数的结果中,有一个 Reddit 帖子提供了两个方案: SSTap 和 socksify。
根据 SSTap 的介绍,这款软件会申请一个虚拟网络接口(VNI),然后将经由该网络接口的 TCP 和 UDP 流量重定向到 SOCKS5 服务器。SSTap 的理念非常好,如果其转发效率足够高那必然非常有用。但是根据其 SourceForge 主页,SSTap 只提供了 Windows PE32 可执行文件,并未提供可被编译的源码。因此,SSTap 无法在 GNU/Linux 平台下运行。
另一个被提到的方案是 socksify。socksify 的工作原理是通过 LD_PRELOAD 加载一个携带 libc function hook 的动态加载库,从而劫持网络相关的函数。这样之后可以在被劫持进程进行网络活动时,将直接面向远端的连接重定向到 SOCKS5 服务器并在此之前完成必要的协议握手。如果 Wireguard 处理网络的进程处于用户态,那么这个方案可能会起作用。然而很不幸,Wireguard 的核心进程实现早已驻进了内核。而且为了提升效率,减少非比要的 syscall,Wireguard 的核心进程即使在用户态也不应该基于 libc 提供的 syscall wrapper 进行网络通信。因此,socksify 方案对 Wireguard 不是很适用。
鉴于互联网中能搜到的方案实在有限,而且在有限的方案中做不出称体载衣的选择,所以不得不请教一下诸位有没有更好的方案。

离线

#2 2023-07-05 00:50:35

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,491
个人网站

Re: Wireguard 可以经由 socks5 代理链接对端吗?

试试 TPROXY。

离线

页脚