![ASA5505::访问列表允许端口列表上的公共 IP(非范围)](https://linux22.com/image/564408/ASA5505%3A%3A%E8%AE%BF%E9%97%AE%E5%88%97%E8%A1%A8%E5%85%81%E8%AE%B8%E7%AB%AF%E5%8F%A3%E5%88%97%E8%A1%A8%E4%B8%8A%E7%9A%84%E5%85%AC%E5%85%B1%20IP%EF%BC%88%E9%9D%9E%E8%8C%83%E5%9B%B4%EF%BC%89.png)
这可能是一个常见问题,但无法找到解决方案。
问题在于:在 Web 服务器环境中,有一组需要打开的常用端口,例如:21、25、53、80、110、143、3306 等。
我知道如何创建访问列表以允许外部 IP 访问给定端口,以及如何创建静态规则以将端口流量导向目标内部 IP。但是,当你有 15 个公共 IP 时,执行单个 IP + 单个端口规则是一件非常繁琐的工作,因为所有这些 IP 都需要打开完全相同的 20 多个端口。
有没有办法为每个公共 IP 指定一个端口访问列表和相应的静态规则?基本上,我想用 30 行代码(15 个公共 IP X(1 个访问列表 + 1 个静态))而不是 600 行代码来实现这一点!
非常感谢你的想法(在这种情况下,显然如此);-)
答案1
对象组在这里是您的好朋友。假设最坏的情况是您的公共地址块不连续,并且没有直接子网映射到您的私有子网,并且您的外部访问列表的默认名称为outside_access_in您将需要如下配置...
object-group network my-servers_pub
network-object host 1.1.1.1
network-object host 1.1.1.3
network-object host 1.1.1.5
...etc
...etc
network-object host 1.1.1.13
network-object host 1.1.1.15
object-group service my-tcp-ports tcp
port-object eq 21
port-object eq 25
port-object eq 80
port-object eq 110
port-object eq 143
port-object eq 3306
object-group service my-udp-ports udp
port-object eq 53
static (inside,outside) 1.1.1.1 192.168.1.2
static (inside,outside) 1.1.1.3 192.168.1.4
static (inside,outside) 1.1.1.5 192.168.1.7
...etc
...etc
static (inside,outside) 1.1.1.13 192.168.1.14
static (inside,outside) 1.1.1.15 192.168.1.16
access-list outside_access_in permit tcp any object-group my-servers_pub object-group my-tcp-ports
access-list outside_access_in permit udp any object-group my-servers_pub object-group my-udp-ports
我应该提醒一下,由于思科在 natting 方面做了一些重大改变,此配置需要进行一些调整才能在 ASA 8.3 及更高版本上运行。
如果您足够幸运,拥有连续的公共地址空间和 1:1 主机映射,您可以将对象组和静态数据压缩为子网:
object-group network my-servers_pub
network-object 1.1.1.0 255.255.255.240
static (inside,outside) 1.1.1.0 192.168.1.0 netmask 255.255.255.240
在这种情况下,您甚至不需要外部主机的对象组,但我这样做只是为了保持一致。
答案2
您可以使用static
1 对 1 映射 IP。如下所示:
static (inside,outside) 1.2.3.1 192.168.0.1 netmask 255.255.255.255
static (inside,outside) 1.2.3.2 192.168.0.2 netmask 255.255.255.255
static (inside,outside) 1.2.3.3 192.168.0.3 netmask 255.255.255.255
(如果映射像示例一样有序,则可以将其压缩)
然后有一个访问列表,例如:
access-list Outside_In ext permit tcp any any eq 21
access-list Outside_In ext permit tcp any any eq 25
access-list Outside_In ext permit tcp any any eq 53
access-group Outside_In in int Outside
警告!这将向所有映射 IP 打开所有端口。如果您的所有服务器都需要这些端口,那么配置会快得多。
(显然,更改事物的名称以适合您的网站)
答案3
好的,对于访问列表,您可以使用对象组将它们集中在一起。
object-group network TAG
network-object 192.168.1.2 255.255.255.255
network-object 192.168.1.3 255.255.255.255
network-object 192.168.1.4 255.255.255.255
network-object 192.168.1.5 255.255.255.255
object-group protocol PROTO_TAG
protocol-object tcp 80
access-list NAT_ME permit ip object-group TAG eq object-group PROTO_TAG
static (outside,inside) IP access-list NAT_ME
公平警告,我还没有在任何方面测试过这一点。文档中说应该可以正常工作。