Qual è il modo moderno di fare port forwarding su El Capitan? (porta anteriore da 80 a 8080)

45

Il vecchio programma di utilità ipfw è stato scoraggiato nelle recenti versioni di Mac OS X ed è ora rimosso da El Capitan.

Qual è il modo moderno di fare port forwarding a El Capitan?

Voglio semplicemente la porta 80 da inoltrare alla porta 8080.

    
posta Basil Bourque 08.03.2016 - 23:30
fonte

3 risposte

67

Per inoltrare tutto il traffico della porta 80 alla porta 8080, è possibile immettere quanto segue dalla riga di comando del Terminale.

echo "
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -

Tratto da link

    
risposta data 02.08.2016 - 17:40
fonte
35

Il modo moderno di inoltrare le porte in El Capitan è utilizzare pf . Nell'esempio seguente tutte le richieste della porta 80 vengono inoltrate alla porta 8080 sullo stesso host. Si prega di regolare i reindirizzamenti alle proprie esigenze.

  1. Crea un file di ancoraggio org.user.forwarding in /private/etc/pf.anchors

    sudo touch /private/etc/pf.anchors/org.user.forwarding
    

    con il seguente contenuto e una riga vuota finale

    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. Modifica il file /private/etc/pf.conf ma mantieni una riga vuota finale

    file originale:

    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. Analizza e verifica il tuo file di ancoraggio per assicurarti che non vi siano errori:

    sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
    
  4. Ora modifica /System/Library/LaunchDaemons/com.apple.pfctl.plist da

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

    Devi disabilitare la protezione dell'integrità del sistema per fare ciò. Dopo aver modificato il file riattivabile SIP. Dopo aver riavviato il tuo Mac pf sarà abilitato (è l'opzione -e).

    In alternativa puoi creare il tuo demone di lancio simile alla risposta qui: Uso del server 5.0.15 per condividere internet SENZA condivisione Internet .

Dopo un aggiornamento del sistema o l'aggiornamento di alcuni dei file originali di cui sopra potrebbe essere stato sostituito e devi riapplicare tutte le modifiche.

Se vuoi inoltrare su diverse interfacce devi abilitarlo in /etc/sysctl.conf:

net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
    
risposta data 09.03.2016 - 05:43
fonte
1

Per estendere la soluzione dalla risposta @ sal-ferrarello, ho creato due script di base super-base per abilitare o disabilitare reindirizzare senza compromettere le voci già esistenti in pf .

. Prima trova le voci che hai già con:

sudo pfctl -s nat

Il mio output era come:

No ALTQ support in kernel
ALTQ related functions disabled
nat-anchor "com.apple/*" all
rdr-anchor "com.apple/*" all

Ciò che ci interessa sono le voci effettive quindi ommit le prime due linee di informazione.

II. Crea script enable.sh :

#!/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

Le prime due righe dopo echo sono le voci che erano già presenti. La terza riga è con il nuovo reindirizzamento, in questo caso da 80 a 8080. Alla fine chiamiamo sudo pfctl -s nat per vedere se sono state applicate le modifiche.

III. Crea script disable.sh :

Simile a enable.sh creiamo uno script, ma senza il reindirizzamento 8080 > 8080, ma con le voci già esistenti precedenti:

#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
" | sudo pfctl -ef -
sudo pfctl -s nat
    
risposta data 14.09.2018 - 11:02
fonte

Leggi altre domande sui tag