<div dir="ltr"><div><div><div>I have a switch that I recently upgraded to IOS XE 16 (Everest) from 3.x.x. It is the only switch that will not authenticate to tacacs. It does allow local authentication and I do see traffic during those exchanges. tac_plus.conf is setup to do file authentication from /etc/passwd . <br><br></div>This is the debug log I pulled during the failure:<br></div><div><br></div>Reading config<br>Version F4.0.4.28 Initialized 1<br>tac_plus server F4.0.4.28 starting<br>socket FD 4 AF 2<br>socket FD 5 AF 10<br>uid=0 euid=0 gid=0 egid=0 s=37962240<br>connect from cidf-06a.nyed.circ2.dcn [10.99.99.166]<br>cfg_get_hvalue: name=10.99.99.166 attr=key <br>cfg_get_hvalue: no host named 10.99.99.166<br>cfg_get_phvalue: returns NULL<br>cfg_get_hvalue: name=cidf-06a.nyed.circ2.dcn attr=prompt <br>cfg_get_hvalue: no host named cidf-06a.nyed.circ2.dcn<br>cfg_get_phvalue: returns NULL<br>cfg_get_value: name=rancid isuser=1 attr=login rec=1<br>cfg_get_value: recurse group = rancid<br>cfg_get_pvalue: returns NULL<br>cfg_get_value: name=rancid isuser=1 attr=login rec=1<br>cfg_get_value: recurse group = rancid<br>cfg_get_pvalue: returns NULL<br>cfg_get_value: name=rancid isuser=1 attr=nopassword rec=1<br>cfg_get_value: recurse group = rancid<br>cfg_get_intvalue: returns 0<br>cfg_get_value: name=rancid isuser=1 attr=login rec=1<br>cfg_get_value: recurse group = rancid<br>cfg_get_pvalue: returns NULL<br>cfg_get_hvalue: name=10.99.99.166 attr=key <br>cfg_get_hvalue: no host named 10.99.99.166<br>cfg_get_phvalue: returns NULL<br>cfg_get_hvalue: name=cidf-06a.nyed.circ2.dcn attr=prompt <br>cfg_get_hvalue: no host named cidf-06a.nyed.circ2.dcn<br>cfg_get_phvalue: returns NULL<br>cidf-06a.nyed.circ2.dcn tty2: fd 6 eof (connection closed)<br>Read -1 bytes from cidf-06a.nyed.circ2.dcn tty2, expecting 12<br>cidf-06a.nyed.circ2.dcn tty2: Null reply packet, expecting CONTINUE<br>connect from cidf-06a.nyed.circ2.dcn [10.99.99.166]<br>cfg_get_hvalue: name=10.99.99.166 attr=key <br>cfg_get_hvalue: no host named 10.99.99.166<br>cfg_get_phvalue: returns NULL<br>cfg_get_hvalue: name=cidf-06a.nyed.circ2.dcn attr=prompt <br>cfg_get_hvalue: no host named cidf-06a.nyed.circ2.dcn<br>cfg_get_phvalue: returns NULL<br>cfg_get_value: name=rancid isuser=1 attr=login rec=1<br>cfg_get_value: recurse group = rancid<br>cfg_get_pvalue: returns NULL<br>cfg_get_value: name=rancid isuser=1 attr=login rec=1<br>cfg_get_value: recurse group = rancid<br>cfg_get_pvalue: returns NULL<br>cfg_get_value: name=rancid isuser=1 attr=nopassword rec=1<br>cfg_get_value: recurse group = rancid<br>cfg_get_intvalue: returns 0<br>cfg_get_value: name=rancid isuser=1 attr=login rec=1<br>cfg_get_value: recurse group = rancid<br>cfg_get_pvalue: returns NULL<br>cfg_get_hvalue: name=10.99.99.166 attr=key <br>cfg_get_hvalue: no host named 10.99.99.166<br>cfg_get_phvalue: returns NULL<br>cfg_get_hvalue: name=cidf-06a.nyed.circ2.dcn attr=prompt <br>cfg_get_hvalue: no host named cidf-06a.nyed.circ2.dcn<br>cfg_get_phvalue: returns NULL<br>cidf-06a.nyed.circ2.dcn tty2: fd 6 eof (connection closed)<br>Read -1 bytes from cidf-06a.nyed.circ2.dcn tty2, expecting 12<br>cidf-06a.nyed.circ2.dcn tty2: Null reply packet, expecting CONTINUE<br>connect from cidf-06a.nyed.circ2.dcn [10.99.99.166]<br>cfg_get_hvalue: name=10.99.99.166 attr=key <br>cfg_get_hvalue: no host named 10.99.99.166<br>cfg_get_phvalue: returns NULL<br>cfg_get_hvalue: name=cidf-06a.nyed.circ2.dcn attr=prompt <br>cfg_get_hvalue: no host named cidf-06a.nyed.circ2.dcn<br>cfg_get_phvalue: returns NULL<br>cfg_get_value: name=rancid isuser=1 attr=login rec=1<br>cfg_get_value: recurse group = rancid<br>cfg_get_pvalue: returns NULL<br>cfg_get_value: name=rancid isuser=1 attr=login rec=1<br>cfg_get_value: recurse group = rancid<br>cfg_get_pvalue: returns NULL<br>cfg_get_value: name=rancid isuser=1 attr=nopassword rec=1<br>cfg_get_value: recurse group = rancid<br>cfg_get_intvalue: returns 0<br>cfg_get_value: name=rancid isuser=1 attr=login rec=1<br>cfg_get_value: recurse group = rancid<br>cfg_get_pvalue: returns NULL<br>cfg_get_hvalue: name=10.99.99.166 attr=key <br>cfg_get_hvalue: no host named 10.99.99.166<br>cfg_get_phvalue: returns NULL<br>cfg_get_hvalue: name=cidf-06a.nyed.circ2.dcn attr=prompt <br>cfg_get_hvalue: no host named cidf-06a.nyed.circ2.dcn<br>cfg_get_phvalue: returns NULL<br>cidf-06a.nyed.circ2.dcn tty2: fd 6 eof (connection closed)<br>Read -1 bytes from cidf-06a.nyed.circ2.dcn tty2, expecting 12<br>cidf-06a.nyed.circ2.dcn tty2: Null reply packet, expecting CONTINUE<br>connect from cidf-06a.nyed.circ2.dcn [10.99.99.166]<br><br></div>//successful connection//<br><div><br>cfg_get_hvalue: name=10.99.99.166 attr=key <br>cfg_get_hvalue: no host named 10.99.99.166<br>cfg_get_phvalue: returns NULL<br>cfg_get_hvalue: name=cidf-06a.nyed.circ2.dcn attr=prompt <br>cfg_get_hvalue: no host named cidf-06a.nyed.circ2.dcn<br>cfg_get_phvalue: returns NULL<br>cfg_get_value: name=root isuser=1 attr=login rec=1<br>cfg_get_value: recurse group = admins<br>cfg_get_pvalue: returns NULL<br>cfg_get_value: name=root isuser=1 attr=login rec=1<br>cfg_get_value: recurse group = admins<br>cfg_get_pvalue: returns NULL<br>cfg_get_value: name=root isuser=1 attr=nopassword rec=1<br>cfg_get_value: recurse group = admins<br>cfg_get_intvalue: returns 0<br>cfg_get_value: name=root isuser=1 attr=login rec=1<br>cfg_get_value: recurse group = admins<br>cfg_get_pvalue: returns NULL<br>cfg_get_hvalue: name=10.99.99.166 attr=key <br>cfg_get_hvalue: no host named 10.99.99.166<br>cfg_get_phvalue: returns NULL<br>cfg_get_hvalue: name=cidf-06a.nyed.circ2.dcn attr=prompt <br>cfg_get_hvalue: no host named cidf-06a.nyed.circ2.dcn<br>cfg_get_phvalue: returns NULL<br>cidf-06a.nyed.circ2.dcn tty2: fd 6 eof (connection closed)<br>Read -1 bytes from cidf-06a.nyed.circ2.dcn tty2, expecting 12<br>cidf-06a.nyed.circ2.dcn tty2: Null reply packet, expecting CONTINUE<br>connect from cidf-06a.nyed.circ2.dcn [10.99.99.166]<br>cfg_get_hvalue: name=10.99.99.166 attr=key <br>cfg_get_hvalue: no host named 10.99.99.166<br>cfg_get_phvalue: returns NULL<br>cfg_get_hvalue: name=cidf-06a.nyed.circ2.dcn attr=prompt <br>cfg_get_hvalue: no host named cidf-06a.nyed.circ2.dcn<br>cfg_get_phvalue: returns NULL<br>cfg_get_value: name=root isuser=1 attr=acl rec=1<br>cfg_get_value: recurse group = admins<br>cfg_get_pvalue: returns NULL<br>cfg_get_value: name=root isuser=1 attr=before rec=1<br>cfg_get_value: recurse group = admins<br>cfg_get_pvalue: returns NULL<br>cfg_get_svc_node: username=root N_svc_exec proto= svcname= rec=1<br>cfg_get_svc_node: recurse group = admins<br>cfg_get_svc_node: found N_svc_exec proto= svcname=<br>cfg_get_svc_node: username=root N_svc_exec proto= svcname= rec=1<br>cfg_get_svc_node: recurse group = admins<br>cfg_get_svc_node: found N_svc_exec proto= svcname=<br>cfg_get_value: name=root isuser=1 attr=after rec=1<br>cfg_get_value: recurse group = admins<br>cfg_get_pvalue: returns NULL<br>cfg_get_hvalue: name=10.99.99.166 attr=key <br>cfg_get_hvalue: no host named 10.99.99.166<br>cfg_get_phvalue: returns NULL<br>cfg_get_hvalue: name=cidf-06a.nyed.circ2.dcn attr=prompt <br>cfg_get_hvalue: no host named cidf-06a.nyed.circ2.dcn<br>cfg_get_phvalue: returns NULL<br><br><div><br><br></div>Debug from the Switch:<br><br>Nov 20 15:43:09.239: TPLUS: Client is not responding Forcefully closing the socket<br>Nov 20 15:43:09.240: TPLUS: Details of client session <br>Nov 20 15:43:09.240:  Client PID : 502 <br>Nov 20 15:43:09.240:  Allocator PC : 0<br>Nov 20 15:43:09.240:  Transaction Type : Authentication <br>Nov 20 15:43:09.240:  Transaction Status : GET_PASSWORD <br>Nov 20 15:43:09.240:  Service : none <br>Nov 20 15:43:09.240:  Protocol : none <br>Nov 20 15:47:59.067: TPLUS(00000FCA) login timer stopped<br>Nov 20 15:47:59.067: TPLUS(00000FCA)/0/None: Started 120 sec timeout<br>Nov 20 15:48:02.055: TPLUS(00000FCA) login timer stopped<br>Nov 20 15:48:02.055: TPLUS(00000FCA)/1/None: Started 120 sec timeout<br>Nov 20 15:48:10.509: TPLUS: Ignore unknown socket 0<br>Nov 20 15:48:10.511: TPLUS: Ignore unknown socket 1<br>Nov 20 15:48:17.445: TPLUS(00000FCA)/1/IDLE/FF97E186F0: AAA id is not matching between  1 (00000000)<br>Nov 20 15:48:17.445: TPLUS(00000FCA) login timer stopped<br>Nov 20 15:48:17.445: TPLUS(00000000)/1/None: Timer Stoped <br>Nov 20 15:48:19.462: TPLUS(00000FCA) login timer stopped<br>Nov 20 15:48:19.462: TPLUS(00000FCA)/0/None: Started 120 sec timeout<br>Nov 20 15:48:50.072: TPLUS(00000FCB) login timer stopped<br>Nov 20 15:48:50.073: TPLUS: Invalid Client information received as input<br>Nov 20 15:48:59.169: TPLUS(00000FCB) login timer stopped<br>Nov 20 15:48:59.170: TPLUS: Invalid Client information received as input<br>Nov 20 15:49:19.976: TPLUS(00000FCC) login timer stopped<br>Nov 20 15:49:19.977: TPLUS: Invalid Client information received as input<br>Nov 20 15:49:27.798: TPLUS(00000FCC) login timer stopped<br>Nov 20 15:49:27.799: TPLUS: Invalid Client information received as input<br></div><div><br></div><div>Tac_plus.conf:</div><div><br>key = stuffgoeshere<br>default authentication = file /etc/passwd<br>accounting file = /var/log/tac\_plus.acct<br><br>user = $enable$ {<br>    login = cleartext "blahblahblah"<br>}<br><br>user = rancid {<br>    member = rancid<br>}<br><br>user = root {<br>    member = admins<br>}<br><br>group = admins {<br>    default service = permit<br>    service = exec {<br>        priv-lvl = 15<br>    }<br>}<br><br>group = rancid {<br>        default service = deny<br>        service = exec {<br>            priv-lvl = 15<br>        }<br>        cmd = write {<br>                permit .*<br>                }<br>        cmd = dir {<br>                permit .*<br>                }<br>        cmd = copy {<br>                permit running-config<br>                }<br>        cmd = show {<br>                permit .*<br>                }<br>        cmd = terminal {<br>                permit length<br>                }<br>        cmd=enable {<br>                permit .*<br>                }<br>        cmd=exit {<br>                permit .*<br>                }<br>        cmd = admin {<br>              permit .*<br>              }<br>        cmd = more {<br>              permit .*<br>                }<br>}<br></div><div><br></div><div><br></div><div>do_auth.conf</div><div>[users]<br><br>root =<br>   vdxgroup<br><br>admin = <br>   vdxgroup<br><br>rancid =<br>   vdxgroup<br><br><br><br>[vdxgroup]<br>host_allow =<br>.*<br>device_permit =<br>.*<br>command_permit =<br>    .*<br>av_pairs =<br>    priv-lvl=15<br>    <br>    shell:roles="network-admin"</div><div><br></div><div><br></div><div><br></div><div><br></div><div>Thanks in Advance.<br></div><div><br></div></div>