La antigua utilidad ipfw
se desaconsejó en las versiones recientes de Mac OS X y ahora ya no está en El Capitan.
¿Cuál es la forma moderna de hacer el reenvío de puertos en El Capitán?
Simplemente quiero que el puerto 80 se reenvíe al puerto 8080.
Para reenviar todo el tráfico del puerto 80 al puerto 8080, puede ingresar lo siguiente desde la línea de comando de la Terminal.
echo "
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -
Tomado de https://salferrarello.com/mac-pfctl-port-forwarding/
La forma moderna de reenviar puertos en El Capitán está utilizando pf
. En el siguiente ejemplo, todas las solicitudes del puerto 80 se reenvían al puerto 8080 en el mismo host. Ajuste las redirecciones a sus necesidades.
Cree un archivo ancla org.user.forwarding en /private/etc/pf.anchors
sudo touch /private/etc/pf.anchors/org.user.forwarding
con el siguiente contenido y una línea vacía al final
rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr pass on en0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr pass on en1 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
o
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
Modifique el archivo /private/etc/pf.conf pero mantenga una línea vacía al final
archivo original:
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
a
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr-anchor "org.user.forwarding"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
load anchor "org.user.forwarding" from "/etc/pf.anchors/org.user.forwarding"
Analice y pruebe su archivo ancla para asegurarse de que no haya errores:
sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
Ahora modifique /System/Library/LaunchDaemons/com.apple.pfctl.plist desde
<array>
<string>pfctl</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
a
<array>
<string>pfctl</string>
<string>-e</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
Debe deshabilitar la Protección de integridad del sistema para lograr esto. Después de editar el archivo, vuelva a habilitar SIP. Después de reiniciar su Mac, se habilitará pf (esa es la opción -e).
En macOS 10.15 Catalina (y su volumen del sistema de solo lectura), debe editar el demonio de inicio en modo de recuperación. SIP está deshabilitado de forma predeterminada en el modo de recuperación, por lo que no es necesario ejecutar csrutil :
/Volumes/Name_of_boot_volume/usr/bin/nano /Volumes/Name_of_boot_volume/System/Library/LaunchDaemons/com.apple.pfctl.plist
con el nombre de volumen de arranque predeterminado Macintosh HD esto es:
/Volumes/Macintosh\ HD/usr/bin/nano /Volumes/Macintosh\ HD/System/Library/LaunchDaemons/com.apple.pfctl.plist
Alternativamente, puede crear su propio demonio de lanzamiento similar a la respuesta aquí: Uso del servidor 5.0.15 para compartir Internet SIN compartir Internet .
Después de una actualización del sistema o una mejora, algunos de los archivos originales anteriores pueden haber sido reemplazados y debe volver a aplicar todos los cambios.
Si desea reenviar a través de diferentes interfaces, debe habilitarlo en /etc/sysctl.conf:
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
ping
es tu amigo en el diagnóstico de problemas de red.9283
. Agregué org.user.forwarding
: rdr pass on lo0 inet proto tcp from any to any port 443 -> 127.0.0.1 port 9283
y los anclajes relativos en pf.conf, los reinicié con los comandos sudo pfctl -f /etc/pf.conf
. Pero cuando intento acceder al sitio web mywebsite.dev
no obtengo respuesta del servidor. Pero si escribo explícitamente el puerto, funciona. ¿Qué acaso podría estar perdiéndome aquí?/System/Library/LaunchDaemons/com.apple.pfctl.plist
no funciona en Catalina debido al sistema de archivos de solo lectura (incluso con SIP deshabilitado)Para extender la solución de la respuesta de @sal-ferrarello, creé dos scripts de Shell súper básicos para habilitar o deshabilitar la redirección sin comprometer las entradas ya existentes en pf
.
I. Primero busque qué entradas ya tiene con:
sudo pfctl -s nat
Mi salida fue como:
No ALTQ support in kernel
ALTQ related functions disabled
nat-anchor "com.apple/*" all
rdr-anchor "com.apple/*" all
Lo que nos interesa son las entradas reales, así que omita las dos primeras líneas de información.
II. Crear enable.sh
guión:
#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -
sudo pfctl -s nat
Las primeras dos líneas después echo
son las entradas que ya estaban allí. La tercera línea es con nueva redirección, en este caso 80 a 8080. Al final, llamamos sudo pfctl -s nat
para ver si se aplicaron los cambios.
tercero Crear disable.sh
guión:
Similar a enable.sh
we create script, pero sin redirección 80->8080, pero con entradas anteriores ya existentes:
#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
" | sudo pfctl -ef -
sudo pfctl -s nat
anupam jainista
brad parques
sudo pfctl -F all -f /etc/pf.conf
, y para mostrar sus reglas actuales de reenvío de puertos,sudo pfctl -s nat
guido tarsia
pf.conf
archivo