Idealerweise versuche ich, meinen Laptop und ein 3G-Telefon als WLAN-Router zu verwenden, um FORWARD-HTTP, aber nicht HTTPS-Verkehr an Privoxy umzuleiten, das den Verkehr dann über einen SSH-Tunnel an einen Ziproxy-VPS weiterleitet.
der Einfachheit halber ist Privoxy derzeit auf die Standardeinstellungen eingestellt, d. h. es wird nicht an einen anderen Proxy weitergeleitet. Mit Ausnahme der Annahme von Intersepts 1
also sysctl net.ipv4.ip_forward=1
Die folgenden iptable-Befehle funktionieren lokal, werden aber vom FORWARD-Verkehr ignoriert. Das heißt, Benutzer, die über WLAN verbunden sind, werden von Privoxy nicht gefiltert, der lokale Benutzer jedoch schon. Ich möchte das umgekehrte Verhalten.
iptables -t nat -A POSTROUTING -o ${INTERNET_IFACE} -j MASQUERADE
iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner --uid-owner privoxy -j ACCEPT
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8118
iptables -A FORWARD -i ${WIFI_IFACE} -j ACCEPT
Wie erzwinge ich, dass FORWARD-HTTP-Verkehr über Privoxy läuft?
Antwort1
Der Grund, warum es nicht funktioniert, ist, dass Sie Pakete nur auf bestimmte Weise an bestimmten Stellen des Netfilter-Stacks ändern können. Das Ändern des Ziels auf dem Weg nach draußen ist zu spät. Sie müssen es auf dem Weg hinein ändern.
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8118
Ich empfehle, die verschiedenen Tabellen zu untersuchen, aus denen der Netfilter-Stapel besteht.