多个监狱一个公共ipaddress没有nat

时间:2018-01-11 04:08:29

标签: proxy reverse freebsd haproxy jail

我的问题非常简单。我已经浏览过网络,无法从我所阅读的内容中看出如何实现以下内容。我的问题很简单。以下是可能的,有人可以指点我讨论这个问题吗?我是网络新手。

我运行FreeBSD 11.1-RELEASE专用服务器。我已经构建了几个jails,其中两个将运行Apache 24 / php72。我有多个域名指向相同的公共IP地址。我想将所有端口80和443流量转发到www.mydomain.com到一个被监禁的Web服务器,所有端口80和443流量到dev.mydomain.com到另一个被监禁的Web服务器。我不想在我的Web查询中指定一个不同的端口来路由到开发服务器。 (为什么要使用不同的域名呢?)以便排除NAT端口重定向。

根据我读过的所有内容,我看起来需要实现反向代理。我做了一些研究,根据我的需要,haproxy看起来是最好的(大4)。但是,有关如何为负载平衡之外的其他东西配置haproxy的文档很糟糕。周期。

我是在正确的轨道上吗?

我计划在主机系统上使用ipfw实现,因为我将有单独的jails处理数据库实现,并且我尽量保持与PCI / PII一致。 (抽象和分离服务(www,dns,db)和环境(dev,qa和prd)。

提前感谢您节省了我在这个星球上留下的可测量的时间。

2 个答案:

答案 0 :(得分:1)

如果您有专用服务器,则您拥有IPv6 / 64段的更改为高。这可以简化分配,因为你可以完全忘记NAT。

你确实可以使用类似Cloudflare的CDN,这样你也可以处理IPv4请求,这是一个双赢的场景。

现在,如果您没有IPv6并且主主机上只有IPV4,我会建议PF,例如,取自fabrik.red

> cat /etc/pf.conf
ext_if = "em0"
set skip on lo
scrub in all
nat on $ext_if from lo1:network to any -> ($ext_if)
pass all

稍后在主要主机上,您可以使用HAproxy并使用您的jails作为后端,您也可以使用Nginx,但就个人而言,我更喜欢HAProxy。

您确实可以在像AWS这样的云提供商上执行此操作以查看此流程: enter image description here

FreeBSD和jails的优点在于网络堆栈,您可以完全忘记NAT或端口​​转发。

如果在附图中使用的实例是t2.large,它可以使用3个接口处理多达36个IP,通过(DHCP)分配/请求IP,一旦定义,您只需要使用它们每个监狱。我使用了fabrik.red image,因为允许在root上拥有ZFS,因此你可以轻松处理一个非常小的实例(8gb磁盘)> 30个监狱。这取决于每个用例,但希望可以给你一些想法。

答案 1 :(得分:0)

是的,您需要一个反向代理。将请求转发到主机内部LAN上的jails。

我的建议是使用pf而不是ipfw(除非你非常熟悉ipfw),因为学习曲线不那么大。

您可以使用例如haproxy代替haproxy nginx,有关详细信息,请参阅nginx reverse proxy multiple backends