Port Forwarding en macOS Sierra

5

He cambiado a macOS Sierra y no puedo hacer que el reenvío de puertos funcione para localhost (http y https) mediante la interfaz de bucle invertido lo0. Estoy usando pf y sigo las instrucciones existentes para El Capitán pero sin éxito:

enlace , enlace

Básicamente, instalo ifconfig:

sudo ifconfig lo0 10.0.0.1 alias

Luego creo un archivo de anclas pf : /etc/pf.anchors/myorganization

rdr pass on lo0 inet proto tcp from any to 10.0.0.1 port = 80 -> 127.0.0.1 port 3000
rdr pass on lo0 inet proto tcp from any to 10.0.0.1 port = 443 -> 127.0.0.1 port 7000

Agregue una referencia a él en pf.conf (tuvo que deshabilitar y luego volver a habilitar SIP para hacer esto):

rdr-anchor "myorganization"
...
load anchor "myorganization" from "/etc/pf.anchors/myorganization"

Pruebo los anclajes:

sudo pfctl -vnf /etc/pf.anchors/myorganization

y el resultado se ve bien:

...
TRANSLATION RULES:
nat-anchor "com.apple/*" all
rdr-anchor "com.apple/*" all
rdr-anchor "myorganization" all
...

Los he habilitado:

sudo pfctl -evf /etc/pf.conf

He agregado localhost a mi / etc / hosts

127.0.0.1   localhost

Pero cuando navego a http://localhost obtengo ERR_CONNECTION_REFUSED . Si navego a http://localhost:3000 , el sitio funciona bien.

Actualizar Activé el registro de pf y probé sin el alias 10.0.0.1:

rdr pass log (all) on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 3000
rdr pass log (all) on lo0 inet proto tcp from any to any port 443 -> 127.0.0.1 port 7000

Y la primera vez que presioné enlace , veo el registro:

00:00:00.000000 rule 4294967295/8(ip-option): pass in on en0: (tos 0x0, ttl 1, id 59674, offset 0, flags [none], proto IGMP (2), length 32, options (RA))
    192.168.0.106 > 224.0.1.60: igmp v2 report 224.0.1.60
00:00:00.204784 rule 4294967295/8(ip-option): pass in on en0: (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 32, options (RA))
    192.168.0.3 > 224.0.0.252: igmp v2 report 224.0.0.252
00:00:00.093232 rule 4294967295/8(ip-option): pass out on en0: (tos 0x0, ttl 1, id 11047, offset 0, flags [none], proto IGMP (2), length 32, options (RA))
    192.168.0.77 > 224.0.0.251: igmp v2 report 224.0.0.251
00:00:00.111608 rule 4294967295/8(ip-option): pass in on en0: (tos 0x0, ttl 1, id 60629, offset 0, flags [none], proto IGMP (2), length 32, options (RA))
    192.168.0.106 > 239.255.255.250: igmp v2 report 239.255.255.250
00:00:00.102426 rule 4294967295/8(ip-option): pass in on en0: (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 32, options (RA))
    192.168.0.3 > 224.0.0.251: igmp v2 report 224.0.0.251
00:00:00.000120 rule 4294967295/8(ip-option): pass in on en0: (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 48, options (RA))
    192.168.0.3 > 224.0.0.22: igmp v3 report, 2 group record(s) [gaddr 224.0.0.251 is_ex, 0 source(s)] [gaddr 224.0.0.252 is_ex, 0 source(s)]

Los accesos posteriores a localhost no agregan nada a los registros y veo que la interfaz de loopback lo0 no se muestra en ese registro, solo en0 (Ethernet), por lo que no estoy convencido de que la salida del registro sea relevante para el problema. También intenté agregar en0 y en1 al archivo /etc/pf.anchors/myorganization pero con los mismos resultados.

    
pregunta Daniel Flippance 26.09.2016 - 18:59

1 respuesta

6

Mi responde a la pregunta: ¿Cuál es la forma moderna de hacer port-port reenvío en El Capitán? (el puerto de reenvío 80 a 8080) sigue siendo válido.

Sin embargo, tienes varias fricciones / configuraciones erróneas en tu configuración:

  • No es necesario establecer una dirección de red adicional (es decir, 10.0.0.1) para lo0 si no tiene un segundo host http / https.
  • Una redirección:

    rdr pass on lo0 inet proto tcp from any to 10.0.0.1 port = 80 -> 127.0.0.1 port 3000
    

    solo redirigirá una solicitud de 10.0.0.1:80 a 127.0.0.1:3000.

    Una solicitud de localhost: 80 (que se traduce a 127.0.0.1:80 y no a 10.0.0.1:80) no se redirigirá porque no hay una línea rdr ... apropiada y usted obtendrá un error de conexión.

  • Incluso la adición de la línea 10.0.0.1 localhost a / etc / hosts no solucionará el problema porque localhost parece estar codificado en 127.0.0.1.

Para que tu redirección funcione, descarga pf.conf con sudo pfctl -d . Luego revisa tu ancla y pf.conf:

rdr pass log (all) on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 3000
rdr pass log (all) on lo0 inet proto tcp from any to any port 443 -> 127.0.0.1 port 7000

y

...
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr-anchor "myorganization"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
load anchor "myorganization" from "/etc/pf.anchors/myorganization"

Luego analice / marque myorganization con sudo pfctl -vnf /etc/pf.anchors/myorganization y cargue pf.conf con sudo pfctl -evf /etc/pf.conf .

En algunos casos excepcionales, es posible que tenga que agregar una línea adicional:

::1     127.0.0.1 

a su archivo / etc / hosts. Sin embargo, esto no parece lógico y puede aplicarse solo a versiones anteriores de Sierra. No he podido confirmar esto.

    
respondido por el klanomath 27.09.2016 - 16:30

Lea otras preguntas en las etiquetas