如何系统地查找 Linux 中互联网丢失的罪魁祸首?
我知道
为了下载文件/访问网页/使用 ssh/等,需要进行几层通信:应用程序、传输、互联网、链接(维基百科)
我不知道
- 这些层中的每一层(不包括
application
层)如何映射到 Linux 中的程序/组件? - 如何有效地检查每个组件是否正常工作?
- 按什么顺序检查
我的目标是
拥有(合理)简单的系统来追踪问题。在伪代码中它看起来像
for(component in A..Z) // from hardwarefailure,missing drivers to configuration in /etc/network/interfaces
{
if cmd_to_check(component).output == _OK_
then continue // problem is 100% not here, continue with next item
else break // problem is 100% with current component
}
do_adhoc_reseach_on(item)
fix(item)
我想重点讨论一下我的机器,而不是远程或中间服务器的问题
笔记
如果有分歧
- 在分布之间,德比安是首选
- 那么在有线和无线之间金属丝是首选
- 在任何其他方面之间,则优先考虑大多数标准
如果有免费资源则优先
提前感谢任何答案和/或参考
答案1
测试互联网连通性的步骤:
- 测试以太网链路是否正常且具有预期的协商速度和双工:
ethtool eth0
- 测试下一跳(邻居路由器)是否可用:
ping -c 3 next_hop_ip
- 测试知名的远程站点是否可用(例如 ping google DNS):
ping -c 3 8.8.8.8
- 测试 DNS 是否正常工作:
host www.google.com
- 测试网站是否回答:
wget -O - http://www.google.com
- 如果工作站直接连接,即使在工作站上配置了防火墙,您也应该能够使用 arp 看到它们:
sudo arping workstation_ip
- 测试是否可以从服务器访问工作站:
ping workstation_ip
当某一步失败时,在进行下一步之前,尝试找出发生的情况。