我有一个问题。我有两个 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 的端口。
另一种方法是在您的服务器和防火墙之间使用反向代理。
在这种情况下,您的防火墙会将所有请求重定向到您的反向代理,并且反向代理会将流量重定向到有关主机头的正确服务器。