PF临时重新路由到不同的IP

我有一个FreeBSD主机,作为内部networking上其他系统的入口点。 因此,我已经configuration好将某些端口(比如端口5000)上的传入stream量redirect到在该机器上运行networking服务的一个jail上的主机本地地址。 这看起来像这样:

 ---port 5000--->[Main host] | |---port 5000--->[Machine A] |~~~~~~~~~~~~~~~~[Machine B] 

redirect由PF规则执行:

 rdr pass on egress proto tcp from any to $IP port 5000 -> $MACHINE_A_IP 

这是我几乎总是想要的状态,这是默认情况下configuration的。 但是,我想暂时将端口5000redirect到机器B,如下所示:

 ---port 5000--->[Main host] | |~~~~~~~~~~~~~~~~[Machine A] |---port 5000--->[Machine B] 

我已经尝试设置PF锚来促进这一点,但是因为我是PF新手,所以很难parsing文档以涵盖这个用例。

如何在主要主机上发布dynamicPF规则以将5000从机器A暂时redirect到机器B?

实现这一点的正确方法是使用表格作为redirect的目标。 您可以使用pfctl来更改表格的内容而无需重新加载pf。 只要知道,现有的防火墙状态将继续转发stream量到旧的主机,直到tcpstreamclosures或udp“stream”超时。