AR28/AR46系列路由器作为终端接入服务器终端推不出login问题的解决方法
问题现象:
终端上不能显示登陆的login界面(已经配置了终端接入方式为活终端方式,需前置机推出login登录界面),此时ttyd主进程和该终端对应的子进程均存在,路由器和前置机ttyd程序间的tcp连接正常。
问题原因:
应用进程挂死,此时用lsof命令查看和终端相关联的伪终端设备会发现应用进程占用了该设备(lsof /dev/ptyxx),而推出login界面时所执行的agetty需要打开该设备,所以导致agetty无法打开设备从而推不出login界面。
规避措施:
对于VRP3.4,该规避方案实现方式如下:
1、ttyd程序版本要求:
ttyd4.17及更高的版本,如ttyd4.20
2、Suse Linux修改如下:
主要修改前置机上的配置文件ttyd.conf,需要增加下面的配置:
exit 1
killapp 1
配置说明:
exit 1
用户在终端上键入exit ,将会终止终端和Linux之间的tcp连接,缺省为0,不终止该tcp连接。
killapp 1
配置在前置机ttyd.conf文件中,意思是当ttyd子进程退出时会把相应占用ttyp设备的应用进程连带杀掉。
3、路由器配置修改如下:
在终端模板视图下修改配置如下,注意红色部分为需要增加的配置:
rta template template-name
auto-close 5
tcp keepalive 600 18
配置完后执行update changed-config命令使修改生效。
配置说明:
auto-close 5
配置在终端模板下,意思是接口DOWN掉后,在配置时间内(5秒)路由器会把相应终端的TCP连接断掉;当终端设备和路由器之间连接断开后,路由器会在设置的时间后断开与Linux主机的TCP连接。如果在配置时间内,终端设备和路由器之间的连接又恢复正常,则路由器会取消此次终端自动断链操作。
tcp keepalive 600 18
配置在终端模板下,它有两个参数,前一个参数表示多长时间发一次(600秒);后一个参数表示一共发多少次(18次)。tty tcp keepalive命令用来设置TCP的保活时间,undo tty tcp keepalive命令用来恢复TCP的保活时间为缺省值(缺省为1分钟)。
TCP若在保活时间内没有收到对方的数据,则会自动断开连接。上面的配置简单来说:如果终端在3小时(600秒﹡18=3小时)之内没有向Linux主机发送任何数据,也就是说网点营业人员如果3个小时都没有在终端上执行任何操作,那么会自动断开TCP连接。
具体参数可根据实际情况自行调整。
在配置了上述项后,当终端不能推出login界面时可以通过开关一次终端来解决。关闭终端后路由器异步接口会从up状态变为down状态,在down状态下5s以后路由器会断掉路由器和前置机之间的tcp连接,这时子进程会退出,因为配置了killapp=1,所以这时ttyd主进程会根据子进程所对应的tty设备来查找并杀死所有的应用进程。在杀死应用进程后,由于路由器配置了自动建链(没有配置的话,由于ttyd416及后续的版本有定期刷新配置的功能,只要是终端状态正常便可以正常启动子进程推出login)所以会启动起子进程推出login。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作