首先要说明的是:这个网络不是我设计的。我最近的大部分网络经验都是使用 ASA 的;在那里配置 NAT 和 ACL 非常简单直接。在这种情况下,安装 2911 的工程师之所以选择它,是因为用他的话说,ASA 不支持他想要的功能 - 虽然当我问具体是哪些功能时,我从来没有得到过直接的答案。无论如何,我暂时只能使用 2911,配置 ACL 绝非易事。
我们有一台 Cisco 2911 路由器作为边缘设备。NAT 已设置并正常工作。目前没有将 ACL 应用于外部或内部接口,因此 NAT 只是“工作”。但是,我们需要将其中一台服务器上的 LDAPS 公开到公共接口,并将其限制为特定的源 IP。
此 NAT 规则是比较简单的部分:
ip nat inside source static tcp 192.168.x.x 636 x.x.x.2x 636 extendable
但我们需要将其限制在特定子网内,这样我们就不会将 LDAP 暴露给全世界。这就是我陷入困境的地方。当我将 ACL 应用于接口时,它会终止所有流量,从而有效地关闭接口。
ip access-list extended outside-inside
permit tcp x.x.x.x 0.0.15.255 host 192.168.x.x eq 636
interface GigabitEthernet0/1.10
ip access-group outside-inside in
我的结论是,当没有将 ACL 应用于接口时,路由器会有一些隐式规则,这些规则允许出站流量和相关的入站流量,并允许基于 PAT 规则的流量。通过将 ACL 应用于接口,我实际上是在禁用这些“内置”隐式规则,因此我必须手动创建这些规则以允许出站流量和相关的入站流量。(这根本不是它在 ASA 上的工作方式,而且我参加 CCNA 已经 18 年了,所以...)我尝试了以下方法,但没有成功:
ip access-list extended outside-inside
evaluate ipoutbound
ip access-list extended inside-outside
permit ip any any reflect ipoutbound
interface GigabitEthernet0/1.10
ip access-group inside-outside out
和
ip access-list extended outside-inside
permit ip any any established
但这些根本不起作用并且接口上的流量被停止了。
我尝试阅读 Cisco 的文档,但它当然只展示了一些创建 ACL 的基本语法示例,并没有完全说明这种情况或原因。如果我不对接口应用任何 ACL,那么出站流量就可以正常工作,并且唯一允许的入站流量要么与出站会话相关联,要么与显式 PAT 规则相关联;但这会将 LDAP 暴露给整个互联网,这可不是什么好事。
作为参考,以下标准 acl 也在全球范围内应用。
access-list 10 permit 192.168.x.0 0.0.0.255
那么,利用现有的 NAT/PAT 规则ip nat inside source static tcp 192.168.x.x 636 x.x.x.2x 636 extendable
,如何在不停止所有其他流量的情况下限制对此服务的访问?