Собрана такая схема:
Несколько маршрутизаторов (все Cisco) прикручены по tacacs+ к Cisco Secure ACS Server.
На этих маршрутизаторах висят пользователи на выделенках и по диалапу. Сессии обычно очень долгие - по несколько суток.
В случае некорректной перезагрузки маршрутизатора (например, отключение питания) стоповые записи на ACS-сервер не приходят, и ACS считает, что пользователи в коннекте. Т.е. при попытке повторного коннекта он режектит запросы, поскольку каждому пользователю разрешена только одна сессия.
Попытался побороть это следующим образом:
1. На ACS-сервере включил галку "Single Connect TACACS+ AAA Client" для всех маршрутизаторов. Все маршрутизаторы в одной локалке.
2. На маршрутизаторах сказал: "tacacs-server host ххх.ххх.ххх.ххх single-connection"Про эту фичу у циско написано так:
"Use the single-connection keyword to specify single-connection (only valid with CiscoSecure Release 1.0.1 or later). Rather than have the router open and close a TCP connection to the daemon each time it must communicate, the single-connection option maintains a single open connection between the router and the daemon. This is more efficient because it allows the daemon to handle a higher number of TACACS operations."
http://www.cisco.com/univercd/cc/td/doc/product/software/ios...И в хелпе ACS-а:
"Single Connect TACACS+ AAA Client (Record stop in accounting on failure)Select this option to enable a single-connect TACACS+ AAA client. This allows all TACACS+ sessions between the AAA client and ACS to occur over a single TCP session rather than separate sessions for each request. If this feature is selected and the connection fails, a stop record is sent to the TACACS+ accounting log for each user connected through the AAA client.
Note: If the TCP connection between ACS and the AAA client is unreliable, do not use this feature."
Теперь вижу такую картину: при логине пользователей записывается старт, а через 3 минуты в аккаунтинг записывается "NAS Reset". Хотя связь между маршрутизатором и ACS-сервером не пропадала.
Можно ли как-то это побороть? Т.е. чтобы сессии на ACS-сервере режектились только в случае пропадания коннекта между сервером и маршрутизатором?
Дополненьице:Выяснил, что инициатором разрыва tcp-соединения является маршрутизатор. И рвет он его ровно через 3 минуты.
Router#
*Apr 25 13:32:18.718: tcp0: O CLOSED <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2165126389
OPTS 4 SYN WIN 4128
*Apr 25 13:32:18.718: tcp0: I SYNSENT <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2595112186
OPTS 4 ACK 2165126390 SYN WIN 16384
*Apr 25 13:32:18.722: tcp0: O ESTAB <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2165126390
ACK 2595112187 WIN 4128
*Apr 25 13:32:18.722: tcp0: O ESTAB <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2165126390
DATA 37 ACK 2595112187 WIN 4128
*Apr 25 13:32:18.722: tcp0: I ESTAB <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2595112187
DATA 28 ACK 2165126427 PSH WIN 65498
Router#
*Apr 25 13:32:18.922: tcp0: O ESTAB <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2165126427
ACK 2595112215 WIN 4100
Router#
*Apr 25 13:32:21.842: tcp0: O ESTAB <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2165126427
DATA 25 ACK 2595112215 WIN 4100
*Apr 25 13:32:21.846: tcp0: I ESTAB <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2595112215
DATA 28 ACK 2165126452 PSH WIN 65473
*Apr 25 13:32:22.046: tcp0: O ESTAB <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2165126452
ACK 2595112243 WIN 4072
Router#
*Apr 25 13:32:24.786: tcp0: O ESTAB <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2165126452
DATA 25 ACK 2595112243 WIN 4072
*Apr 25 13:32:24.802: tcp0: I ESTAB <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2595112243
DATA 18 ACK 2165126477 PSH WIN 65448
*Apr 25 13:32:24.802: tcp0: O ESTAB <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2165126477
DATA 64 ACK 2595112261 WIN 4054
*Apr 25 13:32:24.806: tcp0: I ESTAB <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2595112261
DATA 30 ACK 2165126541 PSH WIN 65384
*Apr 25 13:32:24.810: tcp0: O ESTAB <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2165126541
DATA 86 ACK 2595112291 WIN 4024
Router#
*Apr 25 13:32:24.814: tcp0: I ESTAB <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2595112291
DATA 17 ACK 2165126627 PSH WIN 65298
*Apr 25 13:32:25.014: tcp0: O ESTAB <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2165126627
ACK 2595112308 WIN 4007
Router#
*Apr 25 13:35:24.814: tcp0: O FINWAIT1 <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2165126627
ACK 2595112308 FIN PSH WIN 4007
*Apr 25 13:35:24.814: tcp0: I FINWAIT1 <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2595112308
ACK 2165126628 WIN 65298
*Apr 25 13:35:24.830: tcp0: I FINWAIT2 <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2595112308
ACK 2165126628 FIN WIN 65298
*Apr 25 13:35:24.830: tcp0: O TIMEWAIT <ACS-server ip-address>:49 <Router ip-address>:22357 seq 2165126628
ACK 2595112309 WIN 4007Следующее соединение устанавливается уже с другого source-порта.
Можно ли как-то объяснить маршрутизатору, чтобы он держал tcp-соединение постоянно?
Хорошо, раз эти грабли я нашел первым :)Поставлю вопрос по другому:
Может ли каким-либо образом radius или tacacs-сервер (не обязательно ACS) отслеживать пользователей, которые в текущий момент висят на маршрутизаторе? Т.е. как-то синхронизировать аккаунтинговую информацию с состоянием сессий на маршрутизаторе.Подскажите, хотя бы в какую сторону двигаться...