我有一个安装了 VMWare Fusion 的 MacOS X (Lion)。在 Fusion 中,我有两个客人:一个 Linux 和一个 MS Windows XP。两个来宾网络配置为通过 vmnet8 接口使用 NAT。默认情况下,这两个盒子都可以正常访问互联网。
我的目标是强制所有离开 XP 客户端的 HTTP (tcp/80) 流量重定向到代理端口 (tcp/8080) 上的 Linux 客户端。XP 客户端必须不知道重定向,因此 XP 浏览器中的显式代理配置不是一个选项。
我已经在运行 virtualbox 的 linux 主机上尝试过这个设置。iptables nat 规则做得很好。但是我完全不知道如何在基于 pf 的 Mac 中做到这一点。
我一直在尝试只用一行配置一个互补的 pf.conf (proxy.conf) 文件:
rdr on vmnet8 proto tcp from 192.168.190.138 to any port 80 -> 192.168.190.134 port 8080
关于 IP:192.168.190.138 是 XP 来宾 IP,192.168.190.134 是 linux 来宾。
然后我运行以下 pfctl 命令:
$sudo pfctl -vf ~/proxy.conf
No ALTQ support in kernel
ALTQ related functions disabled
rdr on vmnet8 inet proto tcp from 192.168.190.138 to any port = 80 -> 192.168.190.134 port 8080
接着:
$ sudo pfctl -e
No ALTQ support in kernel
ALTQ related functions disabled
pfctl: pf already enabled
当我尝试在 XP guest 上打开网页时,pf 不会将流量重定向到 linux 框。由于某种原因,pf 规则没有按预期工作。大概是因为少了点什么……