La vecchia utility è ipfw
stata scoraggiata nelle recenti versioni di Mac OS X ed è ora scomparsa da El Capitan.
Qual è il modo moderno di effettuare il port forwarding a El Capitan?
Voglio semplicemente che la porta 80 si inoltri alla porta 8080.
La vecchia utility è ipfw
stata scoraggiata nelle recenti versioni di Mac OS X ed è ora scomparsa da El Capitan.
Qual è il modo moderno di effettuare il port forwarding a El Capitan?
Voglio semplicemente che la porta 80 si inoltri alla porta 8080.
Risposte:
Per inoltrare tutto il traffico della porta 80 alla porta 8080, è possibile immettere quanto segue dalla riga di comando Terminale.
echo "
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -
Tratto da https://salferrarello.com/mac-pfctl-port-forwarding/
sudo pfctl -F all -f /etc/pf.conf
e per visualizzare le tue attuali regole di port forwarding,sudo pfctl -s nat
pf.conf
file
Il modo moderno di inoltrare i porti a El Capitan sta usando pf
. Nell'esempio seguente tutte le richieste della porta 80 vengono inoltrate alla porta 8080 sullo stesso host. Si prega di adattare i reindirizzamenti alle proprie esigenze.
Creare 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
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"
per
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"
Analizza e testa il tuo file di ancoraggio per assicurarti che non ci siano errori:
sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
Ora modifica /System/Library/LaunchDaemons/com.apple.pfctl.plist da
<array>
<string>pfctl</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
per
<array>
<string>pfctl</string>
<string>-e</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
A tal fine è necessario disabilitare la protezione dell'integrità del sistema. Dopo aver modificato il file riattivabile SIP. Dopo aver riavviato il tuo Mac, pf sarà abilitato (questa è l'opzione -e).
In alternativa, puoi creare il tuo demone di lancio simile alla risposta qui: utilizzando Server 5.0.15 per condividere Internet SENZA condivisione Internet .
Dopo un aggiornamento o aggiornamento del sistema alcuni dei file originali sopra potrebbero essere stati sostituiti e devi riapplicare tutte le modifiche.
Se vuoi inoltrare attraverso diverse interfacce devi abilitarlo in /etc/sysctl.conf:
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
ping
è tuo amico nella diagnosi dei problemi di rete.
Per estendere la soluzione dalla risposta di @ sal-ferrarello, ho creato due script di shell super-base per abilitare o disabilitare il reindirizzamento senza compromettere voci già esistenti in pf
.
I. Per prima cosa scopri quali voci hai già con:
sudo pfctl -s nat
La mia uscita è stata 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 prendi le prime due righe informative.
II. Crea 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
Le prime due righe dopo echo
sono le voci che erano già lì. La terza riga è con un 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 disable.sh
script:
Simile a enable.sh
noi creiamo script, ma senza reindirizzamento 80-> 8080, ma con voci già esistenti:
#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
" | sudo pfctl -ef -
sudo pfctl -s nat