1. 程式人生 > >MAC OS X Yosemite 10.10.5 轉發80(HTTP)埠的方法

MAC OS X Yosemite 10.10.5 轉發80(HTTP)埠的方法

MAC OS 本質上還是 Unix 系統, Unix 系統大多預設情況下非root使用者是無法使用小於1024的常用埠的.這時候如果你開發中需要在普通使用者下用到80埠, 比如 tomcat, 比如 vitualbox 下構建了一個 http 服務, 若你想直接通過 瀏覽器的 localhost 訪問的話(比用加上莫名其妙的”:埠”的話)你就需要做一些系統埠轉發的工作.

MAC OS 10.10 上 pfctl 就可以做這一件事情, 詳情請參見

man pfctl

或者

man pf.conf

具體操作如下:
首先在 /etc/pf.anchors/ 新建一個 http 檔案內容如下:

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

然後使用 pfctl 命令檢測配置檔案

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

如果沒有報錯(正確的列印了配置資訊, 沒有明顯的出錯資訊), 即修改pf的主配置檔案/etc/pf.conf, 來引入這個轉發規則:

rdr-anchor "com.apple/*"

下, 新增如下 anchor 宣告:

rdr-anchor "http-forwarding"

pf.conf對指令的順序有嚴格要求, 否則會報出 Rules must be in order: options, normalization, queueing, translation, filtering

的錯誤, 所以相同的指令需要放在一起.

再在

load anchor "com.apple" from "/etc/pf.anchors/com.apple"

下, 新增 anchor 引入:

load anchor "http-forwarding" from "/etc/pf.anchors/http"

最後, 匯入並允許執行 pf

sudo pfctl -ef /etc/pf.conf

如果需要開機啟動, 則需要為

/System/Library/LaunchDaemons/com.apple.pfctl.plist

針對 pfctl 的啟動項, 新增一個 -e (允許) 引數, 這樣, pf 規則開機機器可以生效了