Shorewall 将 443 端口转发至两台服务器

Shorewall 将 443 端口转发至两台服务器

我有一个问题。我有两个 Web 服务器。一个是 Webmail,另一个是标准 Web 服务器。我需要将 443 端口转发到它们两个。我已将 proxyarp 添加到 shorewall,并在规则文件中添加了如下规则:

WEBMAIL:
    DNAT    net                     loc:INTIP1:443     tcp     443     # scalix web

WEB:
    DNAT    net                     loc:INTIP2:80     tcp     80      -       EXTIP
    DNAT    net                     loc:INTIP2:443    tcp     443     -       EXTIP

但这不起作用。如果我打开重定向到端口 80 上的 EXTIP 的 Web 服务器,一切都会正常工作,但如果我尝试使用 HTTPS 打开它,它会将我重定向到 scalix web https。有人能帮我解决如何转发端口以便它们都可以使用它吗?

或者因为端口相同所以无法做到?我是否需要更改 scalix web 或 webserver 中的 SSL 端口才能使其正常工作?

答案1

发生这种情况的原因是,您对 Webmail 和 Web 使用了相同的目标 IP 地址 ( INTIP) 和相同的目标端口 (443),并且 Webmail 规则首先匹配。

我建议对 Webmail 使用不同的目标 IP 地址,例如:

# 10.10.10.10 is the NATed ip
# 192.168.1.10 is the real ip of the Webmail server

WEBMAIL:
    DNAT     net    loc:192.168.1.10:443   tcp     443      -      10.10.10.10

10.10.10.10用网络中任何未使用但可路由的 IP替换。


编辑

根据我们的一些评论,您希望能够从互联网和局域网访问您的服务器。

在这种情况下,对我来说,最可靠的方法是拥有一个辅助公共 IP 地址,以便您可以将第一个 NAT 到您的 Webmail,将第二个 NAT 到您的 Web 服务器:

WEBMAIL:
    DNAT    net             loc:INTIP1:443     tcp     443     -       EXTIP1

WEB:
    DNAT    net             loc:INTIP2:80      tcp     80      -       EXTIP2
    DNAT    net             loc:INTIP2:443     tcp     443     -       EXTIP2

在我的公司,我们有一系列/24可用的公共 IP,但我想并不是每个人都这么幸运;)


如果辅助 IP 地址是一个问题,您可以使用 Web 服务器(或 Webmail)的端口转发,例如将端口 8443 转发到端口 443:

WEB:
    DNAT    net             loc:INTIP2:443    tcp     8443    -       EXTIP

但是,正如您所说,您也可以更改 Web 服务器或 Webmail 的端口。


另一种方法是在您的服务器和防火墙之间使用反向代理。

在这种情况下,您的防火墙会将所有请求重定向到您的反向代理,并且反向代理会将流量重定向到有关主机头的正确服务器。

相关内容