我有一个设置,通过一个虚拟 IP 路由数百到数千个启用 SSL 的网站,该虚拟 IP 可进行 SSL 卸载和负载平衡。由于 SSL 本身的设计,我需要让每个“SSL 主机”侦听唯一的端口和/或 IP 地址;为了简化 VIP 设置,我只需将每个证书分配给同一 VIP 上的不同端口即可。
从外部来看,我希望它看起来好像每个 IP 上的端口 80 和 443 都打开了。从内部来看,我希望每个外部端口 80 都映射到内部主机的端口 80(使用标准 HTTP 虚拟主机来区分),而每个端口 443 都映射到特定的内部端口。因此,例如:
External IP External Port Internal IP Internal Port
1.2.3.1 80 10.0.0.5 80
1.2.3.1 443 10.0.0.5 20001
1.2.3.2 80 10.0.0.5 80
1.2.3.2 443 10.0.0.5 20002
1.2.3.3 80 10.0.0.5 80
1.2.3.3 443 10.0.0.5 20003
使用 ASA 实现这一点是可行的,但很痛苦。将每个外部 IP 地址映射回同一端口需要对每个外部主机使用唯一的 ACL,即使 ACL 本身相同。我只能通过传统静态映射和基于 ACL 的静态映射的组合来实现它,如下所示:
object-group service webapp_ports tcp
port-object eq www
port-object eq https
object-group network webapp_hosts
network-object host 1.2.3.1
network-object host 1.2.3.2
network-object host 1.2.3.3
access-list policy_nat_http_site1 extended permit tcp host 10.0.0.5 eq www any
access-list policy_nat_http_site2 extended permit tcp host 10.0.0.5 eq www any
access-list policy_nat_http_site3 extended permit tcp host 10.0.0.5 eq www any
access-list acl_outside extended permit tcp any object-group webapp_hosts object-group webapp_ports
static (inside,outside) tcp 1.2.3.1 www access-list policy_nat_http_site1
static (inside,outside) tcp 1.2.3.2 www access-list policy_nat_http_site2
static (inside,outside) tcp 1.2.3.3 www access-list policy_nat_http_site3
static (inside,outside) tcp 1.2.3.1 https 10.0.0.5 20001 netmask 255.255.255.255
static (inside,outside) tcp 1.2.3.2 https 10.0.0.5 20002 netmask 255.255.255.255
static (inside,outside) tcp 1.2.3.3 https 10.0.0.5 20003 netmask 255.255.255.255
access-group acl_outside in interface outside
虽然这种方法可行,但我对设置并不满意,因为每次需要添加新客户时,都需要进行太多调整 - 将新 IP 添加到对象组、全新的访问列表以及将另外两个条目添加到静态映射。有没有更好的方法来处理这个问题?我控制着整个网络堆栈,因此如果这是最合适的更改,那么网络设计也有可能发生变化。
答案1
我很抱歉,但我想不出更好的方法,只能将它们全部放在 ASA 后面的 DMZ 中,并为每个 IP 分配公共 IP(或者,如果您愿意,可以进行一对一映射)。尝试向您的 ISP 索取更多公共 IP。抱歉。