1 votos

Reenvío de puertos

Me gustaría interceptar el tráfico tcp de un dispositivo de mi red. No puedo cambiar el destino, pero me puse la IP del router a la IP de mi M1 Mac Mini.

Yo solía hacer esto con ipfw en una máquina virtual que ejecuta Ubuntu. He utilizado este comando para lograr la interceptación:

sudo iptables -A PREROUTING -t nat -p tcp -d 176.58.117.69 --dport 10004 -j DNAT --to-destination 192.168.245.32
sudo iptables -A OUTPUT -t nat -p tcp -d 176.58.117.69 -j DNAT --to-destination 192.168.245.32

Quiero obtener el mismo resultado con pf en MacOS Monterey. He añadido un nuevo archivo de anclaje en /private/etc/pf.anchors que contiene: rdr pass proto tcp from any to 176.58.117.69 -> self

Enviando un paquete a esa dirección en el puerto 10004 desde otro ordenador con la IP del Mac Mini como IP del router y ejecutando nc -l 10004 en el Mac Mini no devuelve nada.

He comprobado que las reglas no contienen un error con sudo pfctl -vnf /private/etc/pf.conf Las normas estaban cargadas de pfctl -ef /private/etc/pf.conf ¿Qué me estoy perdiendo?

0voto

PatrickB Puntos 11

Después de muchos intentos fallidos y frustrantes, he conseguido que funcione.
Resumiendo: Crea un archivo con esta regla:

rdr pass on en0 inet proto tcp from any to xxx.xxx.xxx.xxx -> sss.sss.sss.sss

xxx.xxx.xxx.xxx es la IP de destino que deseo interceptar. sss.sss.sss.sss es la IP secundaria del Mac Mini. Puede que haya formas más sencillas o mejores pero esto funciona.
Ponga este archivo en /private/etc/pf.anchors. Haz que tenga los mismos privilegios que com.apple en ese directorio.
Debe verificar que la regla no contiene errores con:

sudo pfctl -vnf /etc/pf.anchors/<your file name>

A continuación, edite /private/etc/pf.conf. Añada:

rdr-anchor "your file name"

bajo el actual rdr-anchor . Este era el detalle que me faltaba. Al final de pf.conf añadir:

anchor "your file name"
load anchor "your file name" from "full path of your file"

He habilitado el reenvío de puertos con:

sudo sysctl -w net.inet.ip.forwarding=1

No estoy seguro de que esto sea realmente necesario. El cargué mis reglas con:

sudo pfctl -f /etc/pf.conf

Puede que necesites habilitar explícitamente pf para que funcione. Y entonces, como por arte de magia, funciona.
Ahora todo lo que necesito es instalar el proceso que hace algo con los datos interceptados.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X