Puoi solo reindirizzare il traffico in entrata . Qualsiasi traffico in uscita sulla porta 80 non è influenzato dalla regola rdr.
Per reindirizzare il traffico in uscita alla porta 80 devi re-instradarlo prima verso lo0 quindi reindirizzare verso la porta proxy:
L'ordine nel file di configurazione è necessariamente rdr pacchetti incomming , quindi pacchetti di filtri (come pass), ma cronologicamente la seconda regola colpirà per prima (su en0), che attiverà quindi la prima regola (su lo0).
# Step "2". redirect those same packets that were routed to lo0 below
rdr pass log on lo0 proto tcp from any to any port 80 -> 127.0.0.1 port 8080
# Step "1". Route new IPv4 TCP connections leaving en0 to lo0
pass out on en0 route-to lo0 proto tcp from en0 to any port 80 keep state
in pf.conf questo sarebbe simile a questo:
...
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr pass log on lo0 proto tcp from any to any port 80 -> 127.0.0.1 port 8080
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
pass out on en0 route-to lo0 proto tcp from en0 to any port 80 keep state
Nell'esempio precedente presumo che en0 sia la tua sola interfaccia en in uscita.
Scarica il tuo pf.conf corrente e ferma pf: sudo pfctl -d
. Quindi aggiungi le due righe aggiuntive sopra. Dopo aver modificato pf.conf, controlla la sintassi del file con sudo pfctl -vnf /etc/pf.conf
che dovrebbe produrre il seguente output:
pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.
scrub-anchor "/*" all fragment reassemble
nat-anchor "/*" all
rdr-anchor "/*" all
rdr pass log on lo0 proto tcp from any to any port 80 -> 127.0.0.1 port 8080
anchor "/*" all
pass out on en0 route-to lo0 proto tcp from en0 to any port 80 flags S/SA keep state
dummynet-anchor "/*" all
e in caso di successo caricarlo con sudo pfctl -e -f /etc/pf.conf
.
Un sistema appropriato e una configurazione proxy (e applicazioni ben funzionanti) non richiedono tali regole pf!