我想从 HostA -> HostB 捕获 HTTP 服务调用来测试 HostA 上的客户端。两个操作系统都是Linux。我尝试跟随但失败了。推荐的方法是什么?
我想使用透明代理模式,因为我无法修改客户端,也无法将所有流量从 HostA 重定向到 hostB,因为其他服务也在 HostA 上运行。我只想将客户端的连接从主机 A 重定向到主机 B。主机 A 中的客户端通过 HTTP 在某个端口 10001 上调用主机 B 上的服务。
我尝试使用 mitmproxy 设置 HostC(HostA 和 HostC 在同一子网中) HostA (ip_A) -> HostC(ip_C) 和 mitmproxy-> HostB(ip_B) ,我将 ip 表设置为构建透明模式。
以下是我在 HostA 上设置的内容
sudo iptables -t mangle -I OUTPUT -p tcp --dport 10001 -j MARK --set-mark 1
sudo ip route add default via ip_C table 100
sudo ip rule add fwmark 0x1 table 100
在主机 C
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A PREROUTING -o eth0 -p tcp --dport 10001 -j REDIRECT --to-port 8080
mitmproxy -T --host
这行不通。HostA 上的客户端连接超时。如果我在 HostA 上尝试 traceroute
traceroute ip_B -p 10000 -T
它显示 ip_B 在 TCP 上无法从 HostA 访问
我也尝试在 HostA 上设置 mitmproxy,但是当我尝试在 HostA 上重定向端口 10001 的流量时
sudo iptables -t nat -A OUTPUT -p tcp --dport 10001 -j REDIRECT --to-port 8080
mitmproxy -T --host
服务调用可以被 HostA 上的 mitmproxy 捕获,但无法获得响应。
非常感谢你的帮助。