我已使 TACACS+ 正常运行,现在我正尝试进行设置,以便当 TACACS+ 服务器不可用时,它可以在本地进行故障转移。
我的目标是让它首先检查 TACACS 服务器,如果无法联系则进行故障转移。
据我了解,下面的配置行可以实现这一点,在“group tacacs+”命令之后加上“local”一词来实现这一点:
aaa 身份验证登录 vtymethod 组 tacacs+ 本地
测试:我禁用服务器上的 TACACS 服务并尝试与本地用户进行身份验证,并被告知该用户不在组中(就像被 TACACS 拒绝一样)。
我可以使用以下命令行来实现如上所述的最终目标:
aaa 身份验证登录 vtymethod 本地组 tacacs+
这样它会首先检查用户是否在本地可用...我的理解一直是将它放在最后会允许它进行故障转移,并且希望首先检查 TACACS...
关于我哪里做错了,有什么提示吗?
答案1
实际上,我已经对各种 Cisco 交换机和路由器进行了此操作。以下是 IOS 配置中的相关代码行。
aaa new-model
aaa authentication login default group tacacs+ local
tacacs-server host **redacted**
tacacs-server directed-request
tacacs-server **redacted**
正如您所见,是的,您在“tacacs+”后面跟着“local”。
至于故障转移需要多长时间,当您尝试进行身份验证时,路由器必须至少 15 秒内无法访问 TACACS 源(超时 5 秒并尝试联系服务器 3 次),然后身份验证源才会更改为本地。https://supportforums.cisco.com/discussion/11350726/two-acs-server-failover
答案2
末尾的本地关键字对于故障转移来说是正确的。
问题是,故障转移不是立即发生的,需要长达 30 秒的时间才能完成。
显然,在测试时,我没有等待足够长的时间让它意识到 TACACS 服务器不可用(尽管我本以为该机制更多的是检查 tacacs,它失败了,它就进行故障转移)
答案3
aaa 新款
aaa 身份验证登录 {方法} 组 {服务器} {回退}
是的,回退应该是“本地”以使用本地数据库。tac plus 开发指南可能可以回答您的问题。
配置用户和组 TACACS+
每个用户可以属于一个组(但只能属于一个组)。每个组又可以属于另一个组,依此类推,以此类推。用户和组的声明如下。这里我们声明了两个用户“fred”和“lily”,以及两个组“admin”和“staff”。
Fred 是“admin”组的成员,而“admin”组又是“staff”组的成员。Lily 不属于任何组。
用户 = lily { # 用户 lily 不是任何组的成员 # 并且尚未进行任何其他配置 }
user = fred { # fred 是 admin 组的成员 member = admin }
group = admin { # 群组 admin 是群组 staff 的成员 member = staff }
group = staff { # group staff 不是任何组的成员 } 递归和组 通常,当守护进程查找值(例如密码)时,它会首先查看用户是否有自己的密码。如果没有,它会查看用户是否属于某个组,如果是,则查看该组是否定义了密码。如果没有,则此过程将继续遍历组的层次结构(一个组可以是另一个组的成员),直到找到值或没有其他组。此递归过程用于查找到期日期、pap、arap 和 chap“机密”,以及授权参数(请参阅下文)。
因此,典型的配置技术是将用户放入组中,并在组声明中指定尽可能多的组范围特征。然后,可以根据需要使用单个用户声明覆盖选定用户的组设置。
答案4
据我记得,对于思科来说,本地和本地是两码事。
local 将引用这样调用的对象组。
LOCAL 指的是 Cisco 设备本地存储的实际用户数据库。
因此,您的命令应如下所示;
aaa authentication login vtymethod group tacacs+ LOCAL
抱歉,这似乎仅适用于 ASA 设备......