Mac osx 中的 pfctl 端口转发?

cri*_*pto 16 mac port-forwarding command-line iptables

-A PREROUTING -s 10.0.10.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
-A PREROUTING -s 10.0.10.0/24 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8080
-A POSTROUTING -s 10.0.10.0/24 -o eth0 -j MASQUERADE
COMMIT
Run Code Online (Sandbox Code Playgroud)

上面的代码是我用来在linux中转发流量的代码。

现在我需要在 Mac OSX 中做同样的事情。10.8 如果重要。

所以这里是交易。

之前,我使用代理连接到 linux 机器并使用该代理我能够使用 mitmproxy 监控流量

现在,在 mac 上,我使用内置的互联网共享,并想使用 mitmproxy,它只侦听端口 8080 的内容。

bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether ac:de:48:81:1d:4a 
    inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
    Configuration:
        priority 0 hellotime 0 fwddelay 0 maxage 0
        ipfilter disabled flags 0x2
    member: en0 flags=3<LEARNING,DISCOVER>
             port 5 priority 0 path cost 0
Run Code Online (Sandbox Code Playgroud)

以上是我认为需要转发的“共享连接”。

Joh*_*Siu 24

假设您所有的网络流量请求都来自192.168.2.0/24和接口bridge0

将以下规则添加到/etc/pf.conf

rdr pass on bridge0 inet proto tcp from 192.168.2.0/24 to any port http -> 127.0.0.1 port 8080
rdr pass on bridge0 inet proto tcp from 192.168.2.0/24 to any port https -> 127.0.0.1 port 8080
Run Code Online (Sandbox Code Playgroud)

快速提示

  1. 测试 pf.conf 的语法错误

    pfctl -v -n -f /etc/pf.conf
    
    Run Code Online (Sandbox Code Playgroud)
  2. 应用/重新加载规则

    pfctl -f /etc/pf.conf
    
    Run Code Online (Sandbox Code Playgroud)

这是OS X pfctl的备忘单

  • 它说语法错误 (5认同)
  • `pf` 似乎默认没有启用,所以你可能需要添加 `-e` 标志:`pfctl -ef /etc/pf.conf`。 (3认同)