我使用 iptables (PREROUTING) 将所有 TCP 流量重定向到本地端口。
现在我想使用 C 程序捕获这些数据包。我尝试了很多套接字变体(UDP / TCP / ...),但我无法使用我在 iptables 中指定的端口连接到 localhost。
我可以看到所有被重定向的数据包,但是如何捕获此流量?
这些是我的规则(它的 Android,但不应该有任何区别......):
Chain PREROUTING (policy ACCEPT 32 packets, 5675 bytes)
pkts bytes target prot opt in out source destination
FIX ME! implement getprotobynumber() bionic/libc/bionic/stubs.c:384
0 0 DNAT tcp -- any any anywhere anywhere tcp dpt:5512 to:192.168.1.107
Chain OUTPUT (policy ACCEPT 56 packets, 3433 bytes)
pkts bytes target prot opt in out source destination
FIX ME! implement getprotobynumber() bionic/libc/bionic/stubs.c:384
0 0 DNAT tcp -- any any anywhere anywhere tcp dpt:5512 to:127.0.0.1
我已经尝试过创建 TCP/UDP/RAW Socket(我也考虑过“本地”/UNIX-Sockets,但它的地址是什么?)和 ServerSocket/DatagramServer——但我什么也没收到……
谢谢!!