我是一家私立学校的承包商,我的任务是开发一个可用于移动应用程序的公共 API。
他们在学校内托管自己的网站,其网络由运行 CLI 8.2 的 Cisco ASA 5510 控制。
他们为我提供了这个项目的专用刀片服务器和静态 IP,所以我要求系统管理员将 IP 映射到机器,并打开端口 80 和端口 22 访问它。
最后,那个人说他尽了一切努力,但似乎没有用。显然他不是配置思科系统的人,而且我对思科毫无经验,所以我希望这里有人能给我指明正确的方向。
以下是他发给我的“show run”命令的输出:http://pastebin.com/ikdSRg7j。我们试图打开但无法工作的机器以 211 结尾,而他们运行良好的网站是 209。
我知道 ServerFault 上有很多关于 Cisco ASA 端口转发的问题,但即使阅读了 ASA 手册,我对该设备的经验仍然很少,因此答案对我帮助不大。我提前致歉并表示感谢。
答案1
步骤 1:修复此问题...相关acl_out
引用access-group acl_out in interface Outside
! ... more acl lines above
access-list acl_out extended permit tcp any host 222.22.2.215 eq 3389
^^^^^^^
access-list acl-out extended permit tcp any host 222.22.2.210 eq www
access-list acl-out extended permit tcp any host 222.22.2.210 eq ssh
access-list acl-out extended permit tcp any host 222.22.2.211 eq ssh
access-list acl-out extended permit tcp any host 222.22.2.211 eq www
^^^^^^^
acl-out
不是正确名称。您应该使用acl_out
请使用 ASA CLI 将以下行添加到 acl 底部并再次测试:
access-list acl_out extended permit tcp any host 222.22.2.210 eq www
access-list acl_out extended permit tcp any host 222.22.2.210 eq ssh
access-list acl_out extended permit tcp any host 222.22.2.211 eq ssh
access-list acl_out extended permit tcp any host 222.22.2.211 eq www
答案2
原型设置(确保您处于启用模式):
外部接口上应该有一些访问列表,用于控制哪些流量可以进入网络。它可能还不存在,但如果您已经有任何入站规则,它就会存在。
要检查您是否有这样的访问列表,请运行
显示运行访问组
它应该返回类似
接口 Internet 中的访问组 Internet_In
nameif Internet
这意味着(从右到左阅读)到“Internet”接口(如图所示的接口show run int
)的流量,入站流量必须通过访问列表“Internet_In”。
您可以使用以下命令显示此访问列表:
显示运行访问列表 Internet_In 访问列表 Internet_In 扩展允许 tcp 任何主机 ${Public_IP} eq ${Public_Port}
对于每个转发的 IP 和端口组合,第二行通常会出现多次。找出您遗漏了哪些行。如果您根本没有访问组,那么出于安全考虑,您确实应该有一个访问组。通常您只是遗漏了访问列表中的一到三行。
要将行添加到访问列表,请使用 进入配置模式conf t
,然后按照与前面显示的完全相同的格式输入您想要在访问列表中添加的行。
一旦您允许流量进入,如果您正在运行 NAT,ASA 就需要知道流量去往何处。该static
命令将流量通过 NAT 接口向后映射。如果您未在此 ASA 上使用 NAT,则无需担心此映射(show run nat
将显示 NAT 配置)。
要调出现有的静态配置运行:
显示运行静态
如果你已经设置了映射,它应该返回一些内容,例如:
静态(内部,互联网) tcp ${Public_IP} ${Public_Port} ${Priv_IP} ${Priv_Port} netm 255.255.255.255
其中“内部”和“互联网”是nameif
接口,其余部分相当不言自明。再次找出您缺少的行,在配置模式中添加它们。