Mac OS X版本:OS X El Capitan 10.11
Mac OS 的防火牆軟體在10.10已經將IPFW取消,改用OpenBSD的PF,有關PF的User guide 可參考:https://www.openbsd.org/faq/pf/,或在此下載PDF說明。
PF 原則上在Mac OS X都會自動啟動,如果不讓PF於開機時啟動,可以執行下面的指令:
# rcctl disable pf
重啟Mac即可生效。
下面二個指令可啟動與關閉PF功能:
# pfctl -e
# pfctl -d
PF於系統開機時(Booting),會讀取pf.conf這個設定檔(位於 /etc/pf.conf),透過rc的scripts來載入的。主要也是透過pfctl這個指令來執行設置。其他常用的pfctl指令如下:
# pfctl -f /etc/pf.conf 載入pf.conf這個設定檔
# pfctl -nf /etc/pf.conf 解析/etc/pf.conf這個設定檔,但不載入
# pfctl -sr 顯示目前防火牆的設置
# pfctl -ss 顯示現在連線狀態
# pfctl -si 顯示過濾狀態以及統計
# pfctl -sa 顯示所有狀態訊息
其他完整的指令可按下這裡進行詳閱
以下僅針對pf.conf有關NAT與Port Forwarding的防火牆設置的簡單說明:
順序很重要,Port Forwarding的指令必須在NAT之前,否則會出現錯誤訊息
Port forwarding:
若要將ppp連線或對外接口的特定port轉換到內網某個特定IP的特定port,例如:tcp 9922轉換到內網192.168.1.5的ssh (port 22)則設定為:
rdr on ppp0 proto tcp from any to 222.3.15.2port 9922 -> 192.168.1.5 port 22
外網的IP為222.3.15.2,當外面連接這個地址port 9922則轉到192.168.1.5 port 22這個位址:
若
rdr on ppp0 proto tcp from any to 222.3.15.2 port 1935 -> 192.168.1.18
則連接到外網222.3.15.2的port 1935則轉到192.168.1.18的相同位址(port 1935)。
NAT讓內網可以透過這台MAC連上Internet
nat on ppp0 from 192.168.1.0/24 to any -> 222.3.15.2
pass from 192.168.1.0/24 to any keep state
222.3.15.2為外網IP,以上定義內網192.168.1.0/24皆可轉為222.3.15.2外網IP直接連上Internet