通过pf基于域名redirect端口

我们在运行pf防火墙的机器(machine1)上有一个面向公众的IP。 我们有一台局域网中的防火墙后面有多台机器。

在局域网中的机器2上,我们有一个在端口443上运行的服务。为了使这个服务在局域网(互联网)之外可用,我们通过在机器1上的pfredirect。

rdr on $ext_if proto tcp from any to $ext_addr port 443 -> SOMEIP port 443 

现在我有一台机器3在局域网中也有一个服务运行在端口443。

我们有像machine2.example.com和machine3.example.com这样的域名,都指向一台机器上面向公众的IP1。

有没有办法使pf“域名意识”,以理清哪些机器与服务上的443路由? 更改LAN中任何机器上的端口不应该是一个选项。

虽然我不认为iptables能够通过域来过滤请求,这听起来像nginx完美工作。 如果您可以将其安装在pfSense上,则可以将其设置为基于各种域/ IPconfiguration的其他服务器的代理。 它甚至可以作为一个负载平衡器,如果需要的话,你将不需要configuration你的防火墙。

或者,您可以在其中一个虚拟机中设置单独的nginx代理服务器。 然后,您的防火墙将所有stream量redirect到80和443端口,然后使用nginx将请求代理到特定的虚拟机。 它也可以在任何现有的虚拟机上进行设置。

根据OpenBSD的PF文档,支持完全限定的域名。

src_addr, dst_addr文档提到了这一点:

加载规则集时将通过DNSparsing的完全限定的域名。 所有得到的IP地址将被replace到规则中

来源: https : //www.openbsd.org/faq/pf/filter.html