¿Cuál es la forma moderna de realizar el reenvío de puertos en El Capitán? (puerto de reenvío 80 a 8080)

44

La antigua utilidad ipfw se desalentó en las versiones recientes de Mac OS X y ahora ya no está en El Capitán.

¿Cuál es la forma moderna de realizar el reenvío de puertos en El Capitán?

Simplemente quiero que el puerto 80 se reenvíe al puerto 8080.

    
pregunta Basil Bourque 08.03.2016 - 23:30

3 respuestas

66

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 enlace

    
respondido por el Sal Ferrarello 02.08.2016 - 17:40
34

La forma moderna de reenviar puertos en El Capitán es usando 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.

  1. 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
    
  2. 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"
    
  3. Analice y pruebe su archivo de anclaje para asegurarse de que no haya errores:

    sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
    
  4. 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>
    

    Tienes 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, su pf Mac estará habilitado (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 usted 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
    
respondido por el klanomath 09.03.2016 - 05:43
1

Para extender la solución de la respuesta de @ sal-ferrarello, creé dos Shell Scripts super-básicos para habilitar o deshabilitar redirigiendo sin comprometer las entradas ya existentes en pf .

I. Primero encuentra qué entradas tienes ya 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 de echo son las entradas que ya estaban allí. La tercera línea es con una nueva redirección, en este caso 80 a 8080. Al final, llamamos a sudo pfctl -s nat para ver si se aplicaron cambios.

III. Crear disable.sh script:

Similar a enable.sh creamos un script, pero sin redireccionamiento 80- > 8080, pero con entradas previas ya existentes:

#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
" | sudo pfctl -ef -
sudo pfctl -s nat
    
respondido por el cadavre 14.09.2018 - 11:02

Lea otras preguntas en las etiquetas