La antigua utilidad ipfw
fue desaconsejada en las versiones recientes de Mac OS X y ahora se ha ido de El Capitan.
¿Cuál es la forma moderna de hacer reenvío de puertos en El Capitan?
Simplemente quiero que el puerto 80 reenvíe al puerto 8080.
La antigua utilidad ipfw
fue desaconsejada en las versiones recientes de Mac OS X y ahora se ha ido de El Capitan.
¿Cuál es la forma moderna de hacer reenvío de puertos en El Capitan?
Simplemente quiero que el puerto 80 reenvíe al puerto 8080.
Respuestas:
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/
sudo pfctl -F all -f /etc/pf.conf
y para mostrar sus reglas actuales de reenvío de puertos,sudo pfctl -s nat
pf.conf
archivo
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. Por favor, ajuste las redirecciones a sus necesidades.
Cree un archivo de anclaje 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 de anclaje 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>
Tiene que 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 tu Mac, se habilitará pf (esa es la opción -e).
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 o actualización del sistema, 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 habilitar esto en /etc/sysctl.conf:
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
ping
es su amigo en el diagnóstico de problemas de red.
Para extender la solución de @ sal-ferrarello respuesta, he creado dos secuencias de comandos súper básica Shell para habilitar o deshabilitar el redireccionamiento sin comprometer las entradas existentes en pf
.
I. Primero encuentre las entradas que 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
script:
#!/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.
III. Crear disable.sh
script:
Similar a enable.sh
crear script, pero sin redireccionamiento 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