在科服工作时,经常会遇到前来解决网络连接问题的同学。通常来说,上不了网的原因多种多样,但是排查的思路是可以归纳出来的。在这里我简单介绍一些调试的方法。
整体思路
调试问题时,我们应该运用控制变量法,从硬件开关到软件配置,一点点地排查问题。
检查过程
硬件检查
一般来说,我们要先检查一下网络硬件是否出了问题,因为硬件问题相对较为容易发现和确诊。硬件问题的表现主要在以下几种情况:
- 搜不到 WIFI 信号
- 右下角托盘上网络连接为红叉
- 网络连接中找不到可用的适配器
排查时,我们要检查:
1. 确保网线插好/ WIFI 硬件开关已打开
虽然这个问题是最简单的,但是往往也是最容易被忽略的。对于一部分比较老的笔记本电脑,往往在硬件层面设置了开关,调试设置之前一定要确保开关是打开的。
对于网线,虽然一般没有开关,但是容易出现接触不良的情况。插上网线后,网口边一般会有指示灯提示状态,在调试前也需要检查一下:
- 长亮的绿灯为连接状态指示灯,不亮表示未连接成功。
- 不停闪烁的黄灯为信号指示灯,不亮或者不闪烁表示无信号传输。
2. 确保已正确安装了网络适配器驱动
虽然现在 Win10 的年代很多驱动程序都被集成在系统中了,但是对于一些比较冷门的硬件,或者安装了 Win7 的电脑,还是会常常出现缺失驱动的情况。
驱动程序可以在设备管理器
中检查。设备管理器
有几种打开的方式:
- 对于 Win10 系统,按
Win
+X
或在开始菜单右键
,呼出快捷方式菜单,点击设备管理器(M)
。 - 传统的打开方式为,
右键
“我的电脑”,打开“属性”,在左侧可以找到设备管理器。 - 最快的打开方式为,
Win
+R
呼出运行,输入devmgmt.msc
即可启动。这个指令也很好记,就是 Device Management 的缩写。
打开设备管理器后,找到网络适配器
一栏,检查里面是否有无线/有线适配器,以及是否有硬件图标存在黄色叹号
。如果有,右键有问题的项目,选择更新驱动程序。如果自动更新驱动程序,则需尝试驱动精灵/人生等软件或者在笔记本官网上手动下载对应驱动。
3. 确保网络适配器已被正确启用
如果硬件没有问题,我们应该能在控制面板
的网络连接
中看到相应的网络适配器。网络连接
的打开方式如下:
- Win10 1803 之前的系统可以通过
控制面板
-网络和Internet
-网络和共享中心
-更改适配器设置
找到对应界面。 - 新版系统中逐渐用设置中心取代控制面板,所以不太容易找到控制面板的入口。不过对于适配器设置,可以通过
设置
-网络和Internet
-状态
-更改适配器选项
找到。 - 最快的方式:
Win
+R
呼出运行,输入ncpa.cpl
即可启动。ncpa 是 Network Control Panel Application 的缩写。
网络配置检查
如果以上硬件检查没有问题,但依然连不上网络的话,就要面临繁复的网络配置检查了。这一部分问题千奇百怪,这篇文章中肯定不能涵盖所有种情况,所以只挑比较常见、比较有代表性的几处影响网络连接的问题。
网络本身的连接性
我把这一条写在最前面是因为,有的时候,我们不能确定到底是电脑出的问题还是网络本身的问题,这个问题常常被忽略。不过这个问题也比较好排查,我们只需运用控制变量法,换台设备连接或换个网络环境测试。对于无线网,我们可以用手机开个热点测试一下电脑网络连接性。
IP 检查
查看本机 IP
无论是哪种网络环境,成功连接后机器都会被分配到一个 IP 地址。这个地址可能是公网的也可能是局域网的,但是一定得是有效的。IP 的检查也有几种方法:
- 在网络适配器界面,
双击
你想查看的网络适配器,点击详细信息
。 - 运行
CMD
,输入指令ipconfig
。
通常,如果机器没有正确的获取到 IP 地址,会得到一个169.254.x.x
的 IP 地址。也就是说,如果我们看到本机的 IP 地址为 169 开头,就说明 IP 地址出了问题,需要进一步检查。
手动设置 IP
如果我们发现机器的 IP 地址网段明显不对,例如明明是清华校园网环境(59.66 开头)却获得了局域网 IP(通常 192.168 开头),则需要检查是不是机器设置了手动获取 IP。
在网络适配器界面,右键
网络适配器,点击属性
,双击Internet 协议版本 4 (TCP/IPv4)
。
在这里能看到对于 IP 的设定,没有特殊情况的话,我们设置为“自动获取”。
连接性检查
有的时候,连不上网只体现在打不开网页,而其他端口的服务可以正常访问,我们需要做连接性检查:
- Ping 连通性测试:
C:\Users\admin>ping www.baidu.com 正在 Ping www.a.shifen.com [111.13.100.92] 具有 32 字节的数据: 来自 111.13.100.92 的回复: 字节=32 时间=3ms TTL=55 来自 111.13.100.92 的回复: 字节=32 时间=3ms TTL=55 来自 111.13.100.92 的回复: 字节=32 时间=3ms TTL=55 来自 111.13.100.92 的回复: 字节=32 时间=3ms TTL=55 111.13.100.92 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位): 最短 = 3ms,最长 = 3ms,平均 = 3ms
如果连接没有问题,应该能 ping 通网址,没有丢包。
- 域名解析测试:
C:\Users\admin>nslookup www.baidu.com 服务器: 166.111.8.28 Address: 166.111.8.28 非权威应答: 名称: www.a.shifen.com Addresses: 111.13.100.91 111.13.100.92 Aliases: www.baidu.com
在这里能看到域名是否解析正确,如果发现域名解析不正常,则有可能是连接不上 dns 服务器。
代理设置检查
如果机器能获取正确的 IP,但仍然连不上网,一种常见的问题便是代理设置。例如我们在关机时没有退出代理程序,下次开机时也没有运行代理程序,程序就不能执行删除代理设置的操作,也就会残留下无效的代理设置导致无法上网。
代理设置我们要到以下三个地方进行检查:
- 1)
设置
-网络和 Internet
-代理
,关闭界面下所有开关。 - 2) 在传统 IE 浏览器的 Internet 选项中检查:
Win
+R
呼出运行,输入inetcpl.cpl
。在连接
标签下,删除所有虚拟专用网络
,并取消勾选局域网设置
中的所有选项。 - 3) 检查
hosts
文件,这个文件内是对网址域名的手动解析设置。如果怀疑是该文件造成无法上网,可以把文件内容清空或者全部注释掉。
修改hosts
由于 hosts 文件是系统文件,我们需要较高权限才能修改。下面介绍几种修改 hosts 的方法:
通过管理员权限的记事本打开
按Win
+X
,选择Windows PowerShell(管理员)
。输入下列命令之一:
# 通过记事本打开
notepad C:\Windows\System32\drivers\etc\hosts
# 通过vscode打开,好处是可以批量注释
code C:\Windows\System32\drivers\etc\hosts
这样我们就获得了一个管理员权限的记事本窗口并打开了 hosts 文件,在窗口中直接编辑,之后可以直接保存。
通过文件替换
由于资源管理器的文件操作可以申请获取管理员权限,我们可以进行如下操作:
- 访问
C:\Windows\System32\drivers\etc\
- 将
hosts
文件重命名为hosts.bak
- 在外界保存一个 hosts 文件并命名为
hosts
,然后复制到该目录下
通过工具
dism++等系统工具提供了修改 hosts 文件的功能,不过有些杀鸡用牛刀,在这里不展开讲。
网络重置
如果不知道哪里出的问题,重置是最好的解决方法。
设置
-网络和 Internet
-状态
,点击网络重置
。