Mac OSX中的pfctl端口转发?


16
-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

上面的代码是我在Linux中用于转发流量的代码。

现在,我需要在Mac OSX中执行相同的操作。10.8如果重要的话。

所以这里是交易。

以前,我使用代理连接到Linux计算机,使用该代理,我可以使用mitmproxy监视流量

现在,在Mac上,Im使用内置的Internet共享,并希望使用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

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

Answers:


23

假设您所有的网络流量请求都来自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

快速提示

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

    pfctl -v -n -f /etc/pf.conf
    
  2. 套用/重新载入规则

    pfctl -f /etc/pf.conf
    

这是OS X pfctl 的备忘单


3
pf似乎没有默认启用,因此您可能必须添加-e标志:pfctl -ef /etc/pf.conf
Webthusiast 2014年

4
它说语法错误
Hitesh Joshi 2014年

@HiteshJoshi:我遇到了同样的问题。对我而言,使用“ rdr-anchor”和“ dummynet-anchor”在两行之间移动可修复此问题。
阿尔宾
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.