使用IPFW将端口80请求redirect到本地Web服务器

我build立了一个freebsd路由器,并且希望我的networking上的某些IP被转发到我们的本地networking服务器,如果他们发出80端口请求的话。 一个例子是被禁止的用户试图上网,但是他的所有请求都被转发到通知他被禁止的网页。 据我所知,我可以使用IPFW,也可以使用NATD。

如果有人能告诉我如何做到这一点,我将不胜感激。

如果你不想打扰natd,你需要使用IPFIREWALL_FORWARD选项编译内核。 你可以检查你当前的内核发行'sysctl kern.conftxt | grep IPFIREWALL_FORWARD“。 如果这个选项不存在,你需要重build你的内核(或者坚持pf)。

如果你有这样的内核,你只需要添加这个规则:

ipfw add allow tcp from any to 192.168.0.0/24 via internal_if0 ipfw add fwd localhost,80 tcp from any to any 80 via internal_if0 

FreeBSD现在有3个(sic!)不同的防火墙, ipfw2只是其中的一个,另外两个是Darren Reed的ipfilter和OpenBSD的PF 。 他们都有内置的NAT,支持从“盒子”端口redirect,例如,见PF的方式 。 那么为什么不使用它们呢?