最近遇到了一个比较棘手的问题,用户远程桌面无法连接,我的博文中之前也写到了一篇远程桌面排错,但是这次的和之前的大不相同
= = 原因排查步骤
1)首先当然是查看报错,这个是我自己机器上截图的,报错信息都一样
2)首先查看服务器是否开启了远程访问
3)查看目标是否可以ping通
4)查看服务是否正常启动
5)如果要正常远程到目标必须可以telnet到目标的远程端口,默认为3389,这个端口不通,我们之前已经将防火墙关闭了
6)本机上telnet 127.0.0.1 3389,这么做的话可以排除外界因素的干扰,当然还是不通
7)然后我在本机使用netstat -ano 命令查看监听的端口是否有3389,并没有找到3389端口,5800和5900端口是VNC服务器的端口,也是一款远程软件,还好有它不然都没法排错
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 924
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:1311 0.0.0.0:0 LISTENING 2260
TCP 0.0.0.0:5800 0.0.0.0:0 LISTENING 2344
TCP 0.0.0.0:5900 0.0.0.0:0 LISTENING 2344
TCP 0.0.0.0:9083 0.0.0.0:0 LISTENING 1488
TCP 0.0.0.0:9527 0.0.0.0:0 LISTENING 1740
TCP 0.0.0.0:49152 0.0.0.0:0 LISTENING 636
TCP 0.0.0.0:49153 0.0.0.0:0 LISTENING 248
TCP 0.0.0.0:49154 0.0.0.0:0 LISTENING 532
TCP 0.0.0.0:49183 0.0.0.0:0 LISTENING 744
TCP 0.0.0.0:49214 0.0.0.0:0 LISTENING 736
TCP 0.0.0.0:49219 0.0.0.0:0 LISTENING 4200
TCP 10.124.84.165:3181 0.0.0.0:0 LISTENING 2036
TCP 10.124.84.165:5900 10.124.84.17:61778 ESTABLISHED 2344
TCP 10.124.84.165:49155 10.124.84.62:135 TIME_WAIT 0
TCP 10.124.84.165:49156 10.124.84.62:49159 TIME_WAIT 0
TCP 10.124.84.165:49162 10.124.84.61:135 TIME_WAIT 0
TCP 10.124.84.165:49163 10.124.84.61:49155 TIME_WAIT 0
TCP 10.124.84.165:49184 10.124.84.62:49155 TIME_WAIT 0
TCP 10.124.84.165:49188 9.9.200.232:80 CLOSE_WAIT 2028
TCP 10.124.84.165:49190 9.9.200.232:37527 ESTABLISHED 1836
TCP 10.124.84.165:49192 10.124.84.62:135 TIME_WAIT 0
TCP 10.124.84.165:49193 10.124.84.62:49155 TIME_WAIT 0
TCP 10.124.84.165:49220 10.124.84.62:135 ESTABLISHED 532
TCP 10.124.84.165:49221 10.124.84.62:49155 ESTABLISHED 532
TCP 10.124.84.165:49237 10.124.84.87:8014 ESTABLISHED 4040
TCP 10.124.84.165:49238 10.124.84.16:3183 ESTABLISHED 2036
TCP 10.124.84.165:49246 10.124.84.62:135 TIME_WAIT 0
TCP 10.124.84.165:49247 10.124.84.62:49155 ESTABLISHED 744
TCP 10.124.84.165:49265 9.9.200.232:80 CLOSE_WAIT 5260
TCP 10.124.84.165:49270 9.9.200.232:80 TIME_WAIT 0
TCP 10.124.84.165:49271 10.124.84.16:2059 TIME_WAIT 0
TCP 10.124.84.165:49273 9.9.200.232:80 TIME_WAIT 0
TCP 10.124.84.165:49278 10.124.84.102:445 ESTABLISHED 4
TCP 10.124.84.165:49282 111.108.54.16:80 SYN_SENT 12
TCP 127.0.0.1:36600 0.0.0.0:0 LISTENING 1836
TCP [::]:80 [::]:0 LISTENING 4
TCP [::]:135 [::]:0 LISTENING 924
TCP [::]:445 [::]:0 LISTENING 4
TCP [::]:1311 [::]:0 LISTENING 2260
TCP [::]:9527 [::]:0 LISTENING 1740
TCP [::]:49152 [::]:0 LISTENING 636
TCP [::]:49153 [::]:0 LISTENING 248
TCP [::]:49154 [::]:0 LISTENING 532
TCP [::]:49183 [::]:0 LISTENING 744
TCP [::]:49214 [::]:0 LISTENING 736
TCP [::]:49219 [::]:0 LISTENING 4200
UDP 0.0.0.0:123 *:* 540
UDP 0.0.0.0:500 *:* 532
UDP 0.0.0.0:4500 *:* 532
UDP 0.0.0.0:5355 *:* 12
UDP 0.0.0.0:9528 *:* 1740
UDP 0.0.0.0:36599 *:* 2028
UDP 0.0.0.0:58868 *:* 2028
UDP 0.0.0.0:58869 *:* 2028
UDP 0.0.0.0:58870 *:* 2028
UDP 10.124.84.165:3001 *:* 1740
UDP 127.0.0.1:51709 *:* 4040
UDP 127.0.0.1:52623 *:* 1488
UDP 127.0.0.1:52685 *:* 280
UDP 127.0.0.1:58867 *:* 1836
UDP 127.0.0.1:59657 *:* 744
UDP 127.0.0.1:59660 *:* 12
UDP [::]:123 *:* 540
UDP [::]:500 *:* 532
UDP [::]:4500 *:* 532
UDP [::]:5355 *:* 12
UDP [::]:9528 *:* 1740
8)端口都找不到,是不是有人修改了默认的3389端口,在注册表如下路径
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber查看值是否为3389,我这里并没有修改,但是我考虑可能是端口被占用?
9)我就修改端口试试看吧,修改端口的话需要修改两个值,修改完之后重启RDS服务即可
基数调整为十进制然后填入3390
重新启动服务后就会生效
= = 考虑第三方因素
1)之前同事处理过一个问题,就是因为其他服务占用了3389端口后,修改端口就可以访问了,但是我处理的这台服务器有一个不同点就是他本地都监听不到端口
2)修改端口后依旧是之前的问题,之后听客户说他们有一块心跳网卡,之前远程还是正常的,可能是心跳网卡有关系,将心跳网卡禁用后,我重启了服务器,好像和它没什么关系
3)考虑第三方服务造成了服务故障?cmd中输入msconfig,这个操作需要重启,我还关闭了杀毒软件
4)可能是RDS组件无法使用3389端口?,我就下载了一些RDS组件的更新,系统是08R2企业版,前三个正常安装,后面的不适用,没有什么影响,安装完成后重启
升级RDS相关的组件:
Package: Winscard.dll
-----------------------------------------------------------
KB Article Number (s) : 2531912
Language: All (Global)
Platform: x64
Package: Mstsc.exe
-----------------------------------------------------------
KB Article Number (s) : 2870165
Language: All (Global)
Platform: x64
Location: ( http://hotfixv4.microsoft.com/Windows%207/Windows%20Server2008%20R2%20SP1/sp2/Fix451420/7600/free/465746_intl_x64_zip.exe )
Package: mstscax.dll
-----------------------------------------------------------
KB Article Number (s) : 2925429
Language: All (Global)
Platform: x64
Location: ( http://hotfixv4.microsoft.com/Windows%207/Windows%20Server2008%20R2%20SP1/sp2/Fix495746/7600/free/474212_intl_x64_zip.exe )
Package:Win32k.sys
-----------------------------------------------------------
KB ArticleNumber (s) : 2866519
Language:All (Global)
Platform:x64
Package:termsrv.dll
-----------------------------------------------------------
KBArticle Number (s) : 2878424
Language:All (Global)
Platform:x64
Package:Winscard.dll
-----------------------------------------------------------
KBArticle Number (s) : 2833914
Language:All (Global)
Platform:x64
5)到事件查看器的以下路径:Application and services log\Microsoft\Windows\Remote desktop service或者terminal service,然后我就发现了这条日志,提示RDS服务启动失败
7)将RDS服务启动类型设置为自动,然后检查服务器是否安装了KB2621440 和 KB2667402,这两个更新也是和RDS服务有关的,我检查到服务器是将所有更新都安装了的,如果想检查是否安装了哪个更新可以在cmd中中输入 systeminfo > c:\xx.txt 然后点击文本文档查找KB号即可
补丁下载地址https://technet.microsoft.com/zh-cn/library/security/ms12-020.aspx
这个补丁是Windows 7 和 Server2008 可用的,在下方按照系统版本进行下载
8)基本寻常的方法都试过了,对比有问题和没有问题的服务器,然后将没有问题的服务器RDS文件替换到有问题的服务器,文件在Windows\System32目录下,repcorekmts.dll \ rdpwsx.dll \ rdrmenmptylst.exe(然后重新启动服务器,结果为False)
= = 终极大招
1)一个问题不会无缘无故的出现,最后我只能怀疑是有人动了注册表中的值,最快捷最方便的解决方法便是将没问题的服务器注册表值导入到有问题服务器的注册表中
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server下的两个值导出
注意,这项操作两台服务器都要进行,有问题的服务器最好将注册表项进行备份
2)然后把导出来的注册表值在问题服务器上运行,就会进行导入操作,如果你是导出的Terminal Server这个项,是不可以进行导入的
3)在导入完成后,要想让注册表生效最好是重启一下服务器
4)重启完成后,我已经可以telnet到3389端口了,这是一个好消息,然而问题并没有解决
5)客户端在mstsc时出现了闪退的现象,和我之前的远程桌面排错服务有点相似
6)报错图如下,看下方,远程许可服务器是可用的
7)造成此现象的原因,这台服务器导入的注册表值中没有配置远程桌面主机服务,我将此服务器上的远程桌面服务删除,然后添加,这样注册表中才会存在远程桌面主机服务的值,此时就可以进行远程桌面连接了
8)重新安装远程桌面服务
每个人的环境不同,如果你的环境没有远程桌面许可服务器的话不要安装此角色
问题处理完成,如果在导出注册表项,准备导入后出现错误,可能是导出的值损坏了,重新导出导入即可
最后在链接一个别人的博文,其中也写到了一篇远程桌面排错的
http://renzhiyuan.blog.51cto.com/10433137/1830685