2 votos

PF no reenvía el tráfico entrante en el bucle de un puerto a otro

Escenario

Tengo un servidor escuchando en el puerto 3000 a localhost. Quiero tráfico entrante localhost:8080 para ser enviado a ese servidor.

Mi configuración:

  1. El servidor escucha en el puerto 3000; nada de lo que escuche en el puerto 8080
  2. pfctl: rdr pass log on lo0 proto tcp from any to any port 8080 -> 127.0.0.1 port 3000
  3. ver todas las conexiones entrantes al puerto 8080 a lo0 interfaz de: sudo tcpdump -nn -i lo0 dst port 8080 -v

Prueba

curl localhost:8080

Espera

  1. servidor en el puerto 3000 recibe solicitud de curl
  2. tcpdump devuelve algo como: 127.0.0.1.57330 > 127.0.0.1.3000 < más información >

La realidad

  1. curl consigue curl: (7) Failed to connect to localhost port 8080: Connection refuse
  2. tcpdump devuelve 127.0.0.1.57330 > 127.0.0.1.8080 < más información >

=> tcpdump salida significa que la regla no se aplica ya que el puerto de destino es todavía 8080 y no 3000.

Pregunta

¿Dónde está mi configuración que salió mal y cómo arreglarlo?

1voto

Jordanss10 Puntos 129

Primero de todo, no pfctl (que hacia adelante), pero en lugar de PF en su lugar. pfctl es sólo un control de utilidad (de ahí "ctl").

Ahora a la depuración. Se dio ninguna de esa información, de modo que todo está basado en mi propia experiencia y de las suposiciones, la lectura de "conjeturas".

pfctl -si debe mostrar si PF es en realidad habilitado. Sí, las reglas se pueden cargar en él, pero está deshabilitado de no procesar el tráfico.

pfctl -vsn debe mostrar si sus reglas de NAT está recibiendo ningún hits o no lo están.

Y si usted tiene algunas otras reglas de PF aplicado es mejor estar seguro de que no hay set skip on lo0.

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