MAC Yosemite 下的端口映射

   MAC上非root用户不允许使用80之类的端口,对于习惯了使用80端口的人来说,这是件挺痛苦的事情,但装个apache、nginx感觉又有些重,所以想使用类似于iptables之类的防火墙工具做下端口转发。

   网上搜索了下,都说用ipfw来配置端口映射,但那是在OSX 10.9及之前的版本,在优胜美地之后,MAC移除了IPFW,所以在Yosemite及更新的版本中需要通过PF进行配置。知道通过什么工具配置了,接下来的操作就简单了。我把我的配置方式记录如下,供有需要的人参考。

    编辑 /etc/pf.conf 文件,添加以下内容

rdr-anchor "local80"
load anchor "local80" from "/etc/pf.anchors/net.xxxxx.local”

   注意,由于pf配置文件有顺序要求,所以最终的配置文件可能如下:

scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr-anchor "local80"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
load anchor "local80" from "/etc/pf.anchors/net.xxxxx.local”

   新建如下文件: /private/etc/pf.anchors/net.xxxxx.local ,文件内容如下 (下述配置会将80端口请求转发到7777端口):

rdr pass on lo0 inet proto tcp from any to self port 80 -> 127.0.0.1 port 7777

    然后重启reload配置文件就可以实现端口的转发了。reload 命令:

pfctl -f /etc/pf.conf
pfctl -e


另外,可以参考如下网页:

 http://www.papercut.com/kb/Main/MacPortForwarding

 http://www.server110.com/linux/201309/1918.html