mac 使用 pf 作端口轉發

曾經的 ipfw 已經被 pf 所替換。安全

你能夠跟着手冊來。app

$ man pfctl
$ man pf.conf

或者手動新建文件 /etc/pf.anchors/http。文件內容以下:tcp

rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr pass on lo0 inet proto tcp from any to any port 443 -> 127.0.0.1 port 4443
rdr pass on en0 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 443 -> 127.0.0.1 port 4443

檢查其正確性。code

$ sudo pfctl -vnf /etc/pf.anchors/http

修改 pf 的主配置文件 /etc/pf.conform

pf.conf 對指令的順序有嚴格要求,相同的指令須要放在一塊兒,不然會報錯 Rules must be in order: options, normalization, queueing, translation, filtering.ip

# 在 rdr-anchor "com.apple/*" 下添加
rdr-anchor "http-forwarding"

# 在 load anchor "com.apple" from "/etc/pf.anchors/com.apple" 下添加
load anchor "http-forwarding" from "/etc/pf.anchors/http"

最後導入並容許運行。string

$ sudo pfctl -ef /etc/pf.conf

我又執行了以下命令強制重啓 pf。it

$ sudo pfctl -E

大功告成。io

新版 Mac OS 10.11 EI Captian 加入了系統完整性保護機制,需重啓到安全模式執行下述命令關閉文件系統保護:class

$ csrutil enable --without fs

而後才能修改 /System/Library/LaunchDaemons/com.apple.pfctl.plist 文件實現開機自啓用配置:

<string>pfctl</string>
<string>-e</string>
<string>-f</string>
<string>/etc/pf.conf</string>

添加了上述 -e 行。

使用下述命令關閉 pf:

$ sudo pfctl -d
相關文章
相關標籤/搜索