Transparenter Proxy für IPv6-Datenverkehr unter Linux
Frage
Wenn Netzwerke aufrechterhalten wird, ist es oft eine sinnvolle Sache zu tun, einen transparenten Proxy zu laufen. Durch transparente Proxy meine ich einen Proxy, dass ‚Hijacking‘ ausgehende Verbindungen und führt sie über einen lokalen Service. Insbesondere betreibe ich eine Linux-Firewall mit Tintenfisch so konfiguriert, dass alle TCP / IP fowarded Verbindungen auf Port 80 von Tintenfisch proxied werden.
Dies ist achived des iptables 'nat' Tabelle, IPv4 verwendet wird.
Aber iptables für IPv6 hat keine ‚nat‘ Tabelle, so kann ich nicht die gleiche Implementierung verwenden. Was ist eine Technik, die ich transparent für IPv6-Verbindungen Proxy-Verkehr nutzen?
Lösung
Ein gangbarer Weg, dies zu tun mit der TProxy Regel in iptables, Dokumentation finden Sie hier:
- http://wiki.squid-cache.org/Features/Tproxy4#IPv6_Support
- http://www.mjmwired.net/kernel/Documentation/networking /tproxy.txt
Dies sollte unterstützt Squid (> = Version 3.2) werden. Mit --enable-linux-netfilter
und die iptables -t mangle -j TPROXY
Regel.
Andere Tipps
iptables hat eine QUEUE Ziel, das Sie Pakete an Userspace liefern können. Ich bin nicht sicher, aber vielleicht könnte etwas dort umgesetzt werden.
Past, dass Sie einen Stich an dem Hinzufügen etwas an dem Kernel-Umleitung zu tun nehmen könnten.
Sie können nicht. Zitiert von squid-cache.org :
NAT nicht einfach in IPv6 existieren. Durch Design.
Da die Transparenz / Interception tatsächlich ist ein Merkmal gewonnen durch heimlich drehen NAT Routen innerhalb und zurück auf sich selbst. Es ist ziemlich logisch, dass ein Protokoll ohne NAT kann nicht Transparenz tun und Abfangen auf diese Weise.
Hier ist eine Implementierung:
Eine andere Art von hässlichen Hack:
- MARK gesamter Verkehr mit iptables (scheint, gibt es CONNMARK Ziel für IPv6)
- Route alle markierten Verkehr zu tun Device
- User-Space-NAT in dem Dämon zu tun Device hören
- ...
Schreiben Sie Ihre eigene Implementierung von NAT in IPv6-Stack.