Sadece gelen trafiği yönlendirebilirsiniz . 80 numaralı bağlantı noktasına giden herhangi bir trafik, rdr kuralınızdan etkilenmez.
Giden trafiği 80 numaralı bağlantı noktasına yönlendirmek için önce lo0'a yönlendirmeniz, ardından proxy bağlantı noktasına yönlendirmeniz gerekir:
Config dosyasındaki sıra mutlaka gelen paketleri rdr , ardından paketleri (pass gibi) süzün , ancak kronolojik olarak 2. kural ilk (en0) aktif olur, bu durumda ilk kural aktif olur (lo0 üzerinde).
# 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
pf.conf'ta bu şöyle görünür:
...
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
Yukarıdaki örnekte, en0'ın yalnızca giden en arabirim olduğunu varsayıyorum .
Mevcut pf.conf boşaltın ve pf durdurmak: sudo pfctl -d
. Ardından yukarıdaki iki ek satırı ekleyin. Pf.conf dosyasını değiştirdikten sonra sudo pfctl -vnf /etc/pf.conf
, aşağıdaki çıktıya neden olması gereken dosyanın sözdizimini kontrol edin :
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
ve eğer başarılı olursa ile yükleyin sudo pfctl -e -f /etc/pf.conf
.
Uygun bir sistem ve proxy yapılandırması (ve iyi davranış gösteren uygulamalar) bu tür kurallar gerektirmez!