在 macos 中配置端口转发与映射的核心是用 pf 实现系统级映射(如将 80→127.0.0.1:10080)或用 ssh -l 本地转发(如 ssh -l 3307:10.0.0.5:3306 user@jump),vmware fusion 则需编辑 nat.conf 配置 incomingtcp 规则。

在 macOS 中配置端口转发(port forwarding)和端口映射(port mapping),核心是把“外部请求”准确转给“本地或内网的服务”。两者常被混用,但实际场景有侧重:端口转发多指通过中间设备(如跳板机、宿主机)中转流量;端口映射则更常用于 NAT 环境下将主机端口绑定到虚拟机或本地服务。macOS 自带 pf(packet filter)和 SSH 两大主力工具,无需额外安装即可完成绝大多数需求。
用 pf 实现系统级端口映射(推荐用于本地服务暴露)
适合想让本地开发服务(如 Web 服务监听 10080)通过标准端口(如 80 或 443)被访问的场景。绕过 sudo 启动服务的安全风险,也避免修改应用本身配置。
- 在 /etc/pf.anchors/ 下新建映射规则文件,例如 web.forwarding,内容为:
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 10080rdr pass inet proto tcp from any to any port 443 -> 127.0.0.1 port 10443 - 在 /etc/ 下创建加载配置 pf-web.conf,内容为:
rdr-anchor "web.forwarding"load anchor "web.forwarding" from "/etc/pf.anchors/web.forwarding" - 验证并启用:
sudo pfctl -vnf /etc/pf-web.conf(检查语法)sudo pfctl -F all -ef /etc/pf-web.conf(加载生效) - 确认是否运行:
sudo pfctl -s nat,看到rdr-anchor "web.forwarding"即成功
用 SSH 做本地端口转发(适合临时调试与安全穿透)
当你能 SSH 登录某台中转机器(比如公司跳板机、云服务器、甚至本机),而目标服务在内网不可直连时,-L 是最轻量、最安全的选择。
- 命令格式:
ssh -L [本地端口]:[目标IP]:[目标端口] [用户@中转机] - 示例:把本机 3307 映射到内网 MySQL
10.0.0.5:3306,经跳板机jump.example.com:ssh -L 3307:10.0.0.5:3306 user@jump.example.com - 连接后,在本地用
127.0.0.1:3307就能访问远端数据库,所有流量加密传输 - 加
-N -f可后台静默运行;加-g允许其他设备通过本机 IP 访问该端口(需关闭防火墙或放行)
VMware Fusion 虚拟机端口映射(宿主机 ↔ 虚拟机通信)
适用于开发测试环境,比如虚拟机里跑了一个 Web 服务(192.168.123.10:80),希望在 macOS 宿主机浏览器直接用 localhost:8080 访问。
- 确保虚拟机网络模式为 NAT(非桥接或仅主机)
- 编辑 /Library/Preferences/VMware Fusion/vmnet8/nat.conf,在
[incomingtcp]区块下添加:8080 = 192.168.123.10:80 - 重启 VMware 网络服务:
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --stopsudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --start - 验证:宿主机执行
curl http://localhost:8080,应返回虚拟机 Web 页面
注意事项与常见问题
配置后打不开?先看这几点:
- macOS 防火墙可能拦截入站连接 —— 进「系统设置 > 网络 > 防火墙 > 防火墙选项」,勾选「启用防火墙」后,手动添加对应服务或端口(如 8080)
- 目标服务必须已启动并监听 0.0.0.0(而非 127.0.0.1),否则外部无法连接
- 使用 pf 时,若重启后失效,需配置开机自启:写一个 shell 脚本调用
pfctl,再用launchd注册为系统守护进程 - 路由器没有公网 IP?上述方案只解决「本机或局域网内访问」;要从外网访问,还需配合内网穿透工具(如 frp、ngrok)或光猫/路由器端口映射











