β

Yosemite 开机启动设置端口转发

Super Rabbit 279 阅读

更新到 10.10 之后之前使用 ipfw 命令被彻底移除了,下面提供一个我为 virtualbox 虚拟机设置的端口转发案例,并开机自动加载。

下面的命令都是在 root 用户下执行,推荐执行 sudo -i 之后完成下面的操作
创建文件 /etc/pf.anchors/vbox,添加如下两行,将本地 80,22 端口转发到 8080,8022 端口

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 22 -> 127.0.0.1 port 8022

以上红色部分需要注意,OS X 默认有个本地网络端口名字叫 lo0 如果你想通过局域网甚至外网访问 80, 22 端口则还需要按照这个格式添加接入网络的端口。

BTW: 因为非 root 用户不能使用低端口,例如 22, 80 于是我为了访问虚拟机的 ssh 以及 http 使用 22 和 80 端口,于是将 virtualbox 的端口转发设置为:

宿主机 虚拟机
8022 22
8080 80

再编辑 /etc/pf.conf 文件,在如下位置添加红色两行

scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr-anchor "vbox"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
load anchor "vbox" from "/etc/pf.anchors/vbox"

现在可以使用命令
pfctl -ef /etc/pf.conf
测试端口转发是否生效
为了实现开机自启动,需要编辑文件 /System/Library/LaunchDaemons/com.apple.pfctl.plist

找到如下位置,添加一行红字所示,之后重启即可自动设置端口转发

<string>pfctl</string>
<string>-e</string>
<string>-f</string>
<string>/etc/pf.conf</string>
作者:Super Rabbit
工欲善其事,必先利其器
原文地址:Yosemite 开机启动设置端口转发, 感谢原作者分享。

发表评论