pf (Mac OS X) pour redirect tout le trafic vers un ip / port spécifique

J'essaie de recréer cette configuration iptables (à partir de https://github.com/darkk/redsocks ) avec pf:

iptables -t nat -A REDSOCKS -p tcp -d 10.0.0.0/8 -j REDIRECT --to-ports 12345 iptables -t nat -A OUTPUT -p tcp -j REDSOCKS 

Je veux redirect toutes les connections allant au 10.0.0.0/8 (peu importe le port) vers le port local 12345. Dans linux, cela fonctionne bien avec les règles spécifiées ci-dessus. Maintenant, j'essaie de le recréer sur Mac OS X. Actuellement, j'ai essayé des travaux par ex.

 rdr inet proto tcp from any to 10.0.0.0/8 port 0:65535 -> 127.0.0.1 port 12345 

J'ai défini sysctl net.inet.ip.forwarding = 1

Je ne suis pas certain si même la règle rdr équivaut à la redirection IP iptables. Redsocks nécessite la connection pour conserver l'adresse IP / port pour un renvoi correct via le proxy. Je suppose donc que la destination dans les packages ne devrait pas être changée / réécrite à 127.0.0.1:12345.

Donc, je suis probablement mal compris, mais je pense que vous risquez de confondre les cibles iptables de TPROXY et REDIRECT, mais je ne pense pas que cela soit important. En ignorant cela, vous pourrez toujours réaliser votre objective.

Votre frustration avec la règle rdr pf est uniquement valable pour les packages entrants. Selon une publication de FreeBSD-pf de 2005 , vous pourrez éventuellement contourner cette limitation avec une règle de route. Je n'ai jamais utilisé PF, mais si je comprends la syntaxe et le courrier électronique lié, la règle suivante avec votre règle rdr peut-elle être correcte?

 rdr inet proto tcp from any to 10.0.0.0/8 -> 127.0.0.1 port 12345 pass out route-to (lo0 127.0.0.1) from any to 10.0.0.0/8 

Je me rends count que je ne suis guère qualifié d'expert pour commenter ici; mais j'espère que mes commentaires peuvent vous aider à find une solution.


En ce qui concerne votre commentaire à la fin de votre question où vous avez écrit:

Je ne suis pas certain si même la règle rdr équivaut à la redirection IP iptables. Redsocks nécessite la connection pour conserver l'adresse IP / port pour un renvoi correct via le proxy. Je suppose donc que la destination dans les packages ne devrait pas être changée / réécrite à 127.0.0.1:12345.

Selon les extensions iptables (8), la cible REDIRECT:

"Il redirige le package vers la machine elle-même en changeant l'IP de destination vers l'adresse principale de l'interface entrante …"

et, TPROXY conserve l'adresse de destination d'origine:

"Il redirige le package vers un socket local sans changer l'en-tête du package d'aucune façon".

Je ne sais pas si pf prend en charge l'opération TPROXY spécifique au linux.