在 MacOS 上使用 PF 将流量重定向到桥接 IP 和端口

在 MacOS 上使用 PF 将流量重定向到桥接 IP 和端口

我正在尝试将特定端口上的本地主机流量重定向到桥接网络 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.293406bridge100 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

不确定为什么/是否被阻止,但访问 192.168.64.29:9300 可以正常工作

相关内容