Es kann kein Verkehr abgerufen werden, wenn der transparente Proxy-Modus für einen bestimmten Port eingerichtet wird

286
shikn

Ich möchte einen HTTP-Dienstaufruf von HostA -> HostB erfassen, um den Client auf HostA zu testen, um die HTTP-Antwort zu ersetzen. Beide Betriebssysteme sind Linux. Ich habe versucht zu folgen, aber versage nicht. Was ist der empfohlene Weg, dies zu tun?

Ich möchte den transparenten Proxy-Modus verwenden, da ich den Client nicht ändern und nicht den gesamten Verkehr von HostA zu HostB als anderen Dienst umleiten kann, der auch auf HostA ausgeführt wird. Ich möchte nur die Verbindung des Clients von Host A zu Host B umleiten. Der Client in Host A ruft einen Dienst auf Host B über einen bestimmten Port 10001 über HTTP auf.

Ich habe versucht, HostC mitmproxy einzurichten (HostA und HostC befinden sich im selben Subnetz). HostA (ip_A) -> HostC (ip_C) mitmproxy-> HostB (ip_B). Ich habe die IP-Tabelle so eingerichtet, dass sie den transparenten Modus erstellt.

Folgendes ist das, was ich auf HostA eingerichtet habe

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 

Auf HostC

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 

Das geht nicht. Client auf HostA-Verbindungszeitlimit. Wenn ich traceroute auf HostA versuche

traceroute ip_B -p 10001 -T 

Es zeigt, dass ip_B auf TCP von HostA nicht erreichbar ist

Ich habe auch Setup mitmproxy auf HostA ausprobiert, aber wenn ich versuche, den Verkehr von Port 10001 auf HostA umzuleiten

sudo iptables -t nat -A OUTPUT -p tcp --dport 10001 -j REDIRECT --to-port 8080 mitmproxy -T --host 

Der Serviceabruf kann mitmproxy auf HostA erfasst werden, er kann jedoch keine Antwort erhalten.

Vielen dank für Deine Hilfe.

0
Es tut uns leid für den Tippfehler, es ist 10001. shikn vor 6 Jahren 0
Was versuchst du wirklich zu tun? Sie wollen nur den Verkehr sehen? Was ist daran falsch, nur einen Switch mit aktivierter [Port Mirroring] (https://en.wikipedia.org/wiki/Port_mirroring) und Wireshark oder tcpdump zu verwenden? Appleoddity vor 6 Jahren 0
Ich möchte die Antwort erfassen und die Antwort für die Anfrage von HostA ersetzen. shikn vor 6 Jahren 0
Möglicherweise hilft eine vollständige Änderung der Software unter https://softwarerecs.stackexchange.com/questions/4239/what-software-to-modify-and-create-tcp-ip-packets Ross vor 6 Jahren 0

1 Antwort auf die Frage

0
Ross

Vielleicht - sobald die Pakete zum MITM-Server gelangen, wird jetzt Port 8080 verwendet - aber der HOST_A-Webserver ist immer noch auf 10001 - müssen Sie also keine weiteren IPTABLES verwenden, um sie auf 10001 zurückzusetzen? Ich denke, du bist besser als ich, aber ich schätze

sudo iptables -t nat -A OUTPUT -p tcp --dport 8080 -j REDIRECT --to-port 10001 

würde es tun