You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在macOS上将指定端口的入站流量转发至不同IP和端口?

解决iMac端口转发到Raspberry Pi的问题

我来帮你搞定这个端口转发的事儿!你之前用nat规则没生效是因为方向错了——Mac上的pf防火墙要实现入站端口转发,核心得用rdr(重定向)规则,配合正确的nat规则来处理回包路由。

正确的pf.conf规则配置

首先打开你的/etc/pf.conf文件,替换或添加以下规则:

# 1. 启用端口重定向:把en0接口上发往10.5.6.4:8086的TCP流量转发到Pi的22端口
rdr pass on en0 inet proto tcp from any to 10.5.6.4 port 8086 -> 192.168.2.21 port 22

# 2. 配置NAT让Pi的回包能正确返回外部网络(如果Pi需要访问外网的话,这条也很重要)
nat pass on en0 from 192.168.2.0/24 to any -> (en0)

加载规则并验证

完成配置后,按以下步骤生效规则:

  • 先启用pf防火墙(如果没开的话):sudo pfctl -e
  • 加载修改后的配置文件:sudo pfctl -f /etc/pf.conf
  • 验证重定向规则是否成功加载:sudo pfctl -s rdr,你应该能看到刚才添加的8086→22的规则

排查常见问题

如果还是没生效,可以从这几个方向检查:

  • 确认en0是iMac对外的网络接口:用ipconfig getifaddr en0看返回的是不是10.5.6.4,如果不是,把规则里的en0换成正确的接口名(比如en1
  • 检查Mac系统防火墙是否拦截了8086端口:打开「系统偏好设置」→「安全性与隐私」→「防火墙」,确保没有阻止入站的8086端口流量
  • 抓包验证流量走向:在iMac上执行sudo tcpdump -i en0 port 8086,然后从外部机器访问10.5.6.4:8086,看是否有流量进入;再切换到内网接口(比如连接Pi的接口)执行sudo tcpdump -i [内网接口名] port 22,确认流量是否转发到了Pi

内容的提问来源于stack exchange,提问作者jebug29

火山引擎 最新活动