这是一个我已经困扰了很长时间的问题,但答案似乎很简单(难道不是所有的 IT 问题吗?)。
这就是使用 ASA 在两个直接连接的子网之间传递流量的问题
虽然我知道最佳做法是互联网 -> 防火墙 -> 路由器,但在很多情况下这是不可能的。
例如,我们有一个带有两个接口的 ASA,分别名为 OutsideNetwork (10.19.200.3/24) 和 InternalNetwork (10.19.4.254/24)。您可能希望 Outside 能够到达 10.19.4.1,或者至少 10.19.4.254,但 ping 该接口只会得到坏消息。
命令结果:“ping OutsideNetwork 10.19.4.254”
输入转义序列以中止。
向 10.19.4.254 发送 5 个 100 字节 ICMP 回显,超时为 2 秒:
?????
成功率为 0% (0/5)
自然地,您会认为可以添加静态路由,但无济于事。
[错误] 路由 Outsidenetwork 10.19.4.0 255.255.255.0 10.19.4.254 1
无法添加路由,已连接路由存在
此时,您可能会想知道这是否是 NAT 或访问列表问题。
访问列表 Outsidenetwork_access_in 扩展允许 ip any any
访问列表 Internalnetwork_access_in 扩展允许 ip any any
没有动态 nat(或者静态 nat),并且允许非 natted 流量。
当我尝试 ping 上述地址(来自 Outsidenetwork 的 10.19.4.254)时,我从 0 级日志记录(调试)中收到此错误消息。
路由无法找到从 NP Identity Ifc:10.19.200.3/0 到 Outsidenetwork:10.19.4.1/0 的 icmp 下一跳
这让我设定同安通行证,并在两个接口之间分配相同、较小和较大的安全号码。
我是否忽略了一些显而易见的事情?是否有命令可以设置比连接路由级别更高的静态路由?
答案1
你的问题有几个问题。首先,我不会自然而然地认为我可以从外部网络进入内部网络。ASA 是一个防火墙不是路由器。如果它这样做,它就没有完成它的工作。路由器可以很好地完成这项工作。
第二个主要问题在于您的路由命令。您不需要它。您有 2 个本地连接的网络。防火墙知道如何到达这两个网络。它们是直接连接的。因此,您不需要路由命令来告诉防火墙下一跳是什么。
搞清楚了这些之后,我们来找答案。ASA 要求每个网络都具有从 0 到 100 的安全级别。较高安全级别将能够访问较低安全级别。较低安全级别需要明确授予对较高级别资源的访问权限。因此,让我们从分配适当的安全级别开始:
接口以太网 0/0
nameif 外部
安全级别 0
IP 地址 10.19.200.3 255.255.255.0
接口以太网 0/1
nameif 内部
安全级别 100
IP 地址 10.19.4.254 255.255.255.0
现在您的内部网络可以访问外部网络了。如果您需要允许外部网络访问内部网络,则需要在访问列表中定义该列表,并将其分配给访问组中的接口:
访问列表 outside_access_in 扩展允许 ip any 任何
访问组 outside_access_in 在接口外部
但它仍然不起作用?可能是因为您需要定义从一个网络到另一个网络的静态映射。否则防火墙不知道该怎么做。请记住,这是防火墙,而不是路由器:
静态(内部,外部) 10.19.4.0 10.19.4.0 网络掩码 255.255.255.0
静态(外部,内部) 10.19.200.0 10.19.200.0 网络掩码 255.255.255.0
就是这样...您应该在两个接口之间实现自由流动...这确实违背了防火墙的初衷,但这似乎是您想要的。至少它为您提供了一个起点,您可以从那里限制流量。
答案2
我不太确定 - 但您的设置显然没有任何问题 - 我认为问题出在您尝试进行的测试上。
告诉路由器使用另一个接口作为源地址 ping 一个接口是我不确定是否可行的 - 它可能假设你的意思是你想要流量离开那个接口 - 在这种情况下它是正确的,没有到那个 IP 的路由。
您是否尝试过从外部设备而不是路由器本身测试连通性?
只要您没有设置某些 ACL 或 NAT,并且只要其他设备具有适当的路由来到达该设备,我看不出这不是普通的旧路由的任何理由......