如何利用eBPF在TCP握手前关联代理连接信息
问题:在Go反向代理的TCP连接建立前捕获本地绑定端口
我基于Go标准库的httputil.ReverseProxy实现了一个简单反向代理,希望在出站TCP连接建立(connect系统调用阶段)之前,关联代理的连接或绑定端口。举个例子:客户端1.2.3.4:3333向目标5.6.7.8:4444发起请求时,代理会先绑定某个<port>,再从localhost:<port>向5.6.7.8:4444建立新连接,以此代理请求与响应。
我想了解:能否在连接/TCP握手前捕获这个新连接的四元组,至少获取到本地绑定的端口?是否可以通过eBPF追踪实现?
我已经做过一些尝试:
- 用eBPF程序嗅探出站数据包,但无法在TCP握手前及时获取所需信息;
- 尝试用
httptrace回调向嗅探器提供信息,但GotConn这类回调仅在握手完成后才会返回连接信息。
内容的提问来源于stack exchange,提问作者Nimrodshn
相关产品推荐
相关产品推荐

