文章归档友情连接

Yosemite 开机启动设置端口转发

分类:服务器技术  作者:rming  时间:2015-02-10

        Yosemite 下 ,vagrant无法直接端口映射到宿主机的80端口(及时卸载了系统的nginx),下面是一个通过端口有转发,为 virtualbox 虚拟机设置的端口转发,并开机自动加载,实现访问本地80端口,进行web开发调试。

        下面的命令都是在 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

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

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

宿主机 虚拟机
8022 22
8080 80

        再编辑 /etc/pf.conf 文件,在如下位置添加rdr-anchor "vbox" load anchor "vbox" from "/etc/pf.anchors/vbox"两行

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>-e</string>即可,之后重启即可自动设置端口转发

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

原文地址Yosemite 开机启动设置端口转发



提交评论