Port Forwarding su macOS Sierra

5

Sono passato a macOS Sierra e non riesco a far funzionare il port forwarding per localhost (http e https) usando l'interfaccia loopback lo0. Sto usando pf e seguendo le istruzioni esistenti per El Capitan ma senza successo:

link , link

Fondamentalmente, ho configurato ifconfig:

sudo ifconfig lo0 10.0.0.1 alias

Quindi creo un file% ancorepf: /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

Aggiungi un riferimento ad esso in pf.conf (dovevi disabilitare e riabilitare SIP per farlo):

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

Controllo le ancore:

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

e il risultato sembra buono:

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

Li ho abilitati:

sudo pfctl -evf /etc/pf.conf

Ho aggiunto localhost al mio / etc / hosts

127.0.0.1   localhost

Ma quando sfoglio a http://localhost ottengo ERR_CONNECTION_REFUSED . Se sfoglio a http://localhost:3000 il sito funziona correttamente.

Aggiorna Ho attivato la registrazione pf e ho provato senza l'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

E la prima volta che ho colpito link , vedo il 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)]

I successi successivi a localhost non aggiungono nulla ai log e vedo che l'interfaccia loopback lo0 non compare in quel log, solo en0 (Ethernet), quindi non sono convinto che questa uscita di log sia rilevante per il problema. Ho anche provato ad aggiungere en0 e en1 al file /etc/pf.anchors/myorganization ma gli stessi risultati.

    
posta Daniel Flippance 26.09.2016 - 18:59
fonte

1 risposta

6

La mia risposta alla domanda: Qual è il modo moderno di fare inoltro su El Capitan? (porta avanti da 80 a 8080) è ancora valido.

Tuttavia hai diversi problemi / errate configurazioni nel tuo setup:

  • Non è necessario stabilire un indirizzo di rete aggiuntivo (ad esempio 10.0.0.1) per lo0 se non si dispone di un secondo host http / https.
  • Un reindirizzamento:

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

    reindirizzerà solo una richiesta da 10.0.0.1:80 a 127.0.0.1:3000.

    Una richiesta di localhost: 80 (che si traduce in 127.0.0.1:80 e not in 10.0.0.1:80) non verrà reindirizzata perché non esiste una riga rdr ... appropriata e tu otterrà un errore di connessione.

  • Anche l'aggiunta della riga 10.0.0.1 localhost a / etc / hosts non risolverà il tuo problema perché localhost sembra essere codificato a 127.0.0.1.

Per far funzionare il reindirizzamento scarica pf.conf con sudo pfctl -d . Quindi controlla l'ancora e 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

e

...
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"

Quindi analizza / controlla myorganization con sudo pfctl -vnf /etc/pf.anchors/myorganization e carica pf.conf con sudo pfctl -evf /etc/pf.conf .

In alcuni rari casi potresti dover aggiungere una riga aggiuntiva:

::1     127.0.0.1 

nel tuo file / etc / hosts. Questo non sembra logico e potrebbe essere applicato solo alle versioni precedenti di Sierra. Non sono stato in grado di confermarlo.

    
risposta data 27.09.2016 - 16:30
fonte

Leggi altre domande sui tag