IMHO tu entorno de servidor web es defectuoso porque puedes simplemente reemplazar 35.166.133.11 por 192.168.1.2 en las fuentes en lugar de enrutar los paquetes desde 192.168.1.2 a lo0 (35.166.133.11 mantener estado) y posteriormente redirigirlos desde lo0 a la fuente en0(192.168.1.2) de nuevo.
Pero en otras configuraciones puede ser útil. Por ejemplo, si ejecutas un segundo servidor web imitando la página de prueba de la AMI de Amazon Linux en localhost o 192.168.1.3/4/5.
rdr sólo acepta paquetes entrantes. Por lo tanto, primero tiene que enrutar esos paquetes a lo0, luego agregar una regla rdr allí (que los atrapará ya que serán enrutados desde "algún lugar") para enviarlos a su servidor web local en 192.168.1.2.
El orden en el archivo de configuración es necesariamente rdr paquetes entrantes entonces filtrar paquetes (como pass), pero cronológicamente la 2ª regla golpeará primero (en en0), que entonces activará la primera regla (en lo0).
# Step "2". redirect those same packets that were routed to lo0 below
rdr pass log on lo0 proto tcp from en0 to 35.166.133.11 port 80 -> 192.168.1.2 port 80
# Step "1". Route new IPv4 TCP connections leaving en0 to lo0
pass out on en0 route-to lo0 proto tcp from en0 to 35.166.133.11 port 80 keep state
en pf.conf esto se vería así:
...
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr pass log on lo0 proto tcp from en0 to 35.166.133.11 port 80 -> 192.168.1.2 port 80
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
pass out on en0 route-to lo0 proto tcp from en0 to 35.166.133.11 port 80 keep state
En el ejemplo anterior tendrías que cambiar la interfaz en0 por, por ejemplo, en1 si en0 no tienen la IP 192.168.1.2 pero en1 hace .
Descargue su pf.conf actual y detenga pf: sudo pfctl -d
. A continuación, añada las dos líneas adicionales anteriores. Después de modificar pf.conf compruebe la sintaxis del archivo con sudo pfctl -vnf /etc/pf.conf
que debería dar como resultado la siguiente salida:
pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.
scrub-anchor "/*" all fragment reassemble
nat-anchor "/*" all
rdr-anchor "/*" all
rdr pass log on lo0 inet proto tcp from 192.168.1.2 to 35.166.133.11 port = 80 -> 192.168.1.2 port 80
anchor "/*" all
pass out on en0 route-to lo0 inet proto tcp from 192.168.1.2 to 35.166.133.11 port = 80 flags S/SA keep state
dummynet-anchor "/*" all
y si tiene éxito cargarlo con sudo pfctl -e -f /etc/pf.conf
.
Después de apagar el servidor web en el puerto 80 puede probar esto con netcat:
En una ventana de terminal, introduzca sudo nc -l 80
. En una segunda ventana de terminal, introduzca sudo nc 35.166.133.11 80
. Ahora introduce algún texto en la segunda sesión de nc y pulsa la tecla intro. El texto debería aparecer en la primera sesión nc. También puedes introducir texto en la sesión de escucha, que aparecerá en la segunda ventana. Para finalizar la sesión, introduzca ctrlD en cualquiera de las dos sesiones nc.
0 votos
¿Qué otras acciones hay además de "bloquear"?
0 votos
Sólo puede redirigir entrante tráfico - ahora depende de donde configure pf: en 192.168.1.2 o en otro Mac configurado como router. Si quieres redirigir el tráfico saliente desde y hacia 192.168.1.2 con pf tienes que redirigir el tráfico localmente primero para hacerlo "entrante".
0 votos
@patrix Gracias por tu respuesta. He actualizado mi post para mostrar otras acciones
0 votos
@klanomath Muchas gracias por tu comentario. Estoy configurando pf en 192.168.1.2 y sí, quiero redirigir el tráfico saliente de 192.168.1.2 a 35.166.133.11 para volver de nuevo a 192.168.1.2 ¿Podrías proporcionar más información sobre el redireccionamiento del tráfico localmente?