如何在使用iptables REDIRECT时获取twisted中UDP包的原始目标地址

Jin*_*nog 5 python sockets udp iptables twisted

我正在编写一个代理程序,该程序在客户端应该从本地计算机获取发往任意主机和端口的包,并将它们转发到接收服务器,该服务器将进一步处理它们。所有相关流量都使用 iptables 重定向到客户端侦听端口。

在客户端,我需要记录该程序拦截的所有连接的原始目标地址和端口。使用此代码(快照)的 TCP 没有问题:

    class MyProtocol(Protocol, object):
        def dataReceived(self, data):
            dst_info = self.transport.socket.getsockopt(socket.SOL_IP, 80, 16)
            dst_port = sint(dst_info[2:4])
            dst_addr = socket.inet_ntoa(dst_info[4:8])
Run Code Online (Sandbox Code Playgroud)

然而,这种方法不适用于 UDP,看来我还不够熟练,无法弄清楚这一点。有人可以告诉我如何使用twisted获取UDP数据报的原始目标地址吗?一些指针甚至代码片段将不胜感激。