基于 socks5 协议给公司做了个代理访问的系统.客户端部分类似 clash 使用的 tun 设备引流的方式.网关是 go 编码实现的 socks5 server 端.
问题是 ping 和 traceroute 是 IMCP 协议,没法使用 socks5 代理. 请问在上述设计上怎么扩展可以支持 ping 和 traceroute
1
Badupp 299 天前
sock5 是四层。ICMP 是三层。怎么 代理?
|
2
ShineyWang 299 天前
导入到 Netch,应该支持 ICMP
|
3
leonshaw 299 天前
VPN
|
4
Kinnice 299 天前
如果是 fake 的 ping ,可以使用 tun2socks 然后魔改一下实现,如果是真的 ping ,bye~ 网络层级都不同
|
5
monstervivi 299 天前
试一试修改 iptables 来支持?
|
6
wanmyj 299 天前
ipsec 这种代理才可以
|
7
LaTero 299 天前 via Android
用真 vpn ,openvpn 可以指定 socks ,路由表里要让代理机 ip 走真网关,否则会循环。
|
8
smileawei 299 天前
大部分的科学工具都支持入口是 socks
openvpn over socksproxy 然后记得调整好 mtu 。分流的话,可以考虑用 chnrouter 去做路由层的分流。 不过这一整套组建都需要自己搞。做好心里准备。 |
11
yxmyxmyyy 299 天前 via Android
wireguard 可以代理
|
12
ysc3839 299 天前 via Android
你这个代理怎么实现 UDP 代理的? ICMP 也是类似的逻辑,简单改改就好了。
|
13
tool2d 299 天前
楼上说的对,ICMP 类似 UDP ,代理软件特殊处理一下就行。比如加个 RPC 远程转发指令。
虽然可以实现,但是一般来说没太大必要,ping 又不带具体数据。 |
14
x77 299 天前
应用层: http 、ftp <-----> socks 被动代理应用层协议
传输层:tcp 、udp 网络层:icmp <-------> vpn 主动劫持网络及上层的协议 |
15
0o0O0o0O0o 298 天前 via iPhone
我是在任意支持 UDP 的代理上跑 wireguard ,写规则让 icmp 走 wireguard
|
16
jiulang 298 天前
就算对 socks5 扩展支持 icmp 得到 socks6 ,问:应用程序如何拦截系统的 icmp 包
|
17
l4ever 298 天前
tcpping 呗
|
18
iqoo 298 天前
linux 的 ssh 内置 tap 转发
|
19
lisxour 298 天前
@specture #10 由于 icmp 属于特殊协议,在特殊场合可能会被拦截,所以有一种方式就是通过 socket 连接目标,看下连不连的上,以及延迟,这就是 fake ping 。
|
20
angryPHP 298 天前
zerotier 的为啥可以
|
21
retanoj 298 天前
在你这种场景下,不是说 socks 不可以代理 ICMP ,而是你客户端软件上面向操作系统建立的 tun 设备在收到一个 ICMP 数据包的时候怎么处理
|
22
snoopygao 298 天前
用 wireguard 代替 其它代理 ,icmp 属于 ip 层协议,socks 只能代理 tcp/udp
|
24
specture OP @0o0O0o0O0o 大佬能更具体一点嘛?客户端写规则走 icmp,然后网关部署 wireguard 嘛?
|
25
0o0O0o0O0o 298 天前 via iPhone 1
@specture
我电脑是 Linux ,本机跑代理和 wireguard 1. 为了不让 wireguard 自动添加路由规则影响正常的代理分流,wireguard 配置 Table = off 2. AllowedIPs 照常写 3. 通过 PostUp 添加路由规则,例如已创建对应的 wireguard 路由表是 51820 ,那 PostUp = ip -4 rule add ipproto icmp lookup 51820 就行了 网关上做这些事情只会更容易 |
26
specture OP @0o0O0o0O0o 好的,谢谢
|
29
bugfan 295 天前
socks 是代理,得用 vpn 协议
否则就得自己弄一些手段,接管系统网络流量,然后通过这个 socks 代理送出去 #12 #13 说的也对,如果你自己改也可以,我记得网络包有一个字段可以区分这三个协议,0x06 是 TCP,0x01 是 UDP,0x11 是 ICMP |
30
zachary99 292 天前 via Android
clash 的虚拟网卡,应该是能代理 ICMP 包
|
32
busier 291 天前
@angryPHP 因为他底层是 WireGuard ,属于真正意义上的 VPN 。
真正意义上的 VPN 都可以三层转发,例如 PPTP 、L2TP 、IKEv2 、OpenVPN 、WireGuard 等。 |
33
a9k1n9 291 天前 via Android
https://github.com/esrrhs/pingtunnel
有这样的项目,但是不管怎么优化也只能跑个 3 - 4mb/s ,效率太低。 |