我们有一个具有三个接口的 Cisco ASA 5505(版本 8.2(2)):
外部:IP 地址 11.11.11.11,这是默认路由 内部:IP 地址 10.1.1.1,这是本地子网 newlink:22.22.22.22,这是一个新的互联网连接。
我们需要将 VPN 用户从 11.11.11.11 地址移动到 22.22.22.22 地址,并且我们在 ASA 上使用 SSH 来测试和整理路由。
我们遇到的问题是这样的:
如果我们将特定 IP 定义为在 newlink 接口的静态路由上,那么它可以通过 SSH 连接到 22.22.22.22。如果我们不定义静态路由,则流量会到达 ASA,但返回流量不会通过新链路返回;大概它是通过外部接口发送的,因为这是默认路由。我们不能为每个远程端点定义一个静态路由,因为有拨号 VPN 用户,他们显然改变了很多 IP
我们需要做的是配置 ASA,因此如果新链路接口上出现连接,则该连接的传出数据包将通过新链路接口,而不是默认路由。使用 iptables,这应该可以通过标记连接并进行标记路由来实现,但 Cisco ASA 的等价物是什么?
如我所见,这个问题已有 3 年历史,但我决定给出一个答案,因为它可能对有一天访问此页面的人有用。
这个问题是关于PBR(基于策略的路由),也称为基于源地址的路由。问题是,这些东西是“官方”不被 ASA 支持的。但是,NAT 有一个技巧可以用来实现类似的结果。它被称为身份NAT,也称为同地址转换。
在这种情况下,这将如下所示:
sysopt noproxyarp newlink
静态(新链接,新链接) 0.0.0.0 0.0.0.0 网络掩码 0.0.0.0
这就是说:当任何 IP (0.0.0.0/0) 出现在接口newlink上时,将其放回接口newlink上,同时将其转换为自身 (0.0.0.0)。所以没有真正发生 NAT,但我们说的是输出接口。之所以会发生这种路由表覆盖,是因为在使用身份 NAT 时,NAT 进程会根据“已转换”接口执行一些部分路由。需要sysopt noproxyarp newlink命令,否则 ASA 将开始响应到达“newlink”接口的任何目标地址的 ARP 请求 (proxy-ARP)。所有这些都是8.3 之前的ASA 操作系统语法。
8.3 后的语法是这样的:
sysopt noproxyarp newlink
nat (newlink,newlink) 源 静态 任何 任何
这在 Cisco ASA 上似乎是不可能的。从好的方面来说,我得到了“风滚草”徽章,因为一周内没人知道如何做到这一点。:-)