![在 MacOS 上使用 PF 将流量重定向到桥接 IP 和端口](https://linux22.com/image/775100/%E5%9C%A8%20MacOS%20%E4%B8%8A%E4%BD%BF%E7%94%A8%20PF%20%E5%B0%86%E6%B5%81%E9%87%8F%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E6%A1%A5%E6%8E%A5%20IP%20%E5%92%8C%E7%AB%AF%E5%8F%A3.png)
我正在尝试将特定端口上的本地主机流量重定向到桥接网络 IP
我正在使用以下
echo "
rdr pass inet proto tcp from any to any port 9300 -> 192.168.64.29 port 9300
rdr pass inet proto tcp from any to any port 3406 -> 192.168.64.29 port 3406
rdr pass inet proto tcp from any to any port 1234 -> 127.0.0.1 port 8000
" | sudo pfctl -ef -
对于 1234 -> 8000 来说,它工作正常
我在端口 8000 上运行了一个简单的 Python 服务器
python -m http.server 8000 --bind 127.0.0.1
访问 http://localhost:1234/ 可以很好地加载在 8000 上运行的服务器
输出sudo pfctl -s states
ALL tcp 127.0.0.1:8000 <- 127.0.0.1:58791 FIN_WAIT_2:FIN_WAIT_2
ALL tcp 127.0.0.1:8000 <- 127.0.0.1:58792 FIN_WAIT_2:FIN_WAIT_2
但类似的规则重定向127.0.0.1:9300 -> 192.168.64.29:9300
并且127.0.0.1:3406 -> 192.168.64.29:3406
不起作用
我可以在 输出SYN_SENT
的输出中看到sudo pfctl -s states
ALL tcp 127.0.0.1:8000 <- 127.0.0.1:58791 FIN_WAIT_2:FIN_WAIT_2
ALL tcp 127.0.0.1:8000 <- 127.0.0.1:58792 FIN_WAIT_2:FIN_WAIT_2
ALL tcp 192.168.64.29:9300 <- 127.0.0.1:9300 <- 127.0.0.1:58796 CLOSED:SYN_SENT
ALL tcp 192.168.64.29:9300 <- 127.0.0.1:9300 <- 127.0.0.1:58797 CLOSED:SYN_SENT
我在一些帖子中看到我需要启用转发功能,但这似乎不起作用
sudo sysctl -w net.inet.ip.forwarding=1
我在 IP 上打开了端口 9300 和192.168.64.29
3406bridge100
inet 192.168.64.1 netmask 0xffffff00 broadcast 192.168.64.255
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3406 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:9300 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::2375 :::* LISTEN -
tcp6 0 0 :::3406 :::* LISTEN -
tcp6 0 0 :::9300 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
SYN_SENT:CLOSED
- 显示 SYN_SENT 的一方已发送 TCP SYN 数据包,但尚未收到来自远端的响应。这通常是由于数据包未到达目的地或在途中被阻止。
- https://docs.netgate.com/pfsense/en/latest/monitoring/status/firewall-states-gui.html?highlight=syn_sent
不确定为什么/是否被阻止,但访问 192.168.64.29:9300 可以正常工作