如何排除 Linux 中的 Internet 连接故障
安装了Linux但无法上网?请按照此故障排除指南修复 Linux 桌面上的网络问题。
在当今世界,互联网连接使得能够通过网络使用和传输信息。担任以网络为中心的角色需要系统管理员了解可能出现的问题并能够解决这些问题。
因此,在日常活动需要高效通信的环境中,您必须了解 Linux/Unix 网络工具以及如何使用它们来解决互联网连接问题。本文将帮助您识别 Linux 中可能出现的网络问题并提供解决这些问题的方法。
对传入和传出连接进行故障排除
在开始解决问题之前,确定问题是在客户端还是服务器端非常重要。本节介绍识别 Linux 上的传出和传入连接问题的方法。
识别传出连接问题并对其进行故障排除
作为尝试访问该网站的客户,有时您可能会发现该网站不可用。问题可能出在名称解析或本地网络外部的连接上。
要确定确切的原因,您可以首先使用 ping 命令发送 ICMP 回显请求并等待响应。
ping <ip_add>
如果没有网络连接或 100% 数据包丢失,另一种可能是没有任何网络接口。运行 ip 命令来检查系统上所有可用接口的状态:
ip add show
命令输出显示每个网络接口的状态为 UP 或 DOWN。输出中处于 DOWN 状态的接口不会有任何分配的 IP 地址,这可能是导致连接问题的原因。
您可以通过运行以下命令更改互联网状态来解决该问题:
sudo ifup <interface_name>
现在,如果接口可用但服务器仍然无法访问,请使用 ping 命令查找路由器的 IP 地址并检查是否可达:
ping <router's_ip_add>
如果路由器物理断开或关闭,数据包将无法到达路由器。如果连接成功,请 ping 路由器以外的任何系统,这种情况下网站不可用可能是由于 DNS 服务问题。
如果服务器可达,但连接速度较慢,您可以通过运行traceroute命令来确定根本原因,因为它会显示数据包到达每个中间节点所需的时间。
traceroute <ip_add>
排查传入连接问题
大多数组织将Linux系统配置为服务器,并且具有高可用性要求。例如,托管网站的 Apache 服务器可能无法访问客户端,从而导致传入网络问题。网站主机名注册到公共 DNS 服务器,该服务器将其名称解析为 IP 地址。
如果名称-地址解析工作正常,您可以从 Linux 客户端 ping 服务器以从外部检查其可用性。同样,从 Linux 客户端,您可以使用 nmap 命令检查 httpd 服务是否正在运行。
Nmap 是网络管理员用来检查网络上运行的服务的最强大、最通用的工具。然而,它也是一个可以向入侵者提供系统相关信息的破解者。
您可以运行该工具来检查您的服务器端口是否可用于外部连接。使用主机名或 IP 地址扫描系统中正在运行的服务/端口:
nmap <hostname/ip_add>
如果 HTTP 和 HTTPS 服务的 TCP 端口 80 和 443 状态已启动并正在运行,则表明该服务正在侦听传入连接。这种情况需要您检查主配置文件中的服务配置方式:/etc/httpd/conf/httpd.conf。
此外,TCP 端口 80 和 443 的缺失表明防火墙正在阻止这些端口并过滤它们,而 Nmap 输出中的关闭状态意味着 httpd 服务未运行或侦听该端口。
解决 DNS 服务器问题
如果您可以 ping 通网站的 IP 地址,但无法通过浏览器访问该地址,则说明主机名解析存在问题。通过互联网进行通信的客户端-服务器通过与 DNS 服务器通信来执行主机名到地址的解析。
在 Linux/Unix 操作系统中,您可以通过手动输入 DNS 服务器或在启动接口时请求 DHCP 服务器自动分配来配置 DNS 服务器。无论哪种情况,DNS 服务器地址都可以在 /etc/resolv.conf 文件中找到。
因此,每当您尝试连接到某个网站时,它都会在 /etc/hosts 文件中查找主机,然后在 resolv.conf< 中逐一搜索 DNS 服务器地址。 文件。它会检查服务器,直到找不到主机并返回“找不到主机”错误。
要调试与 DNS 相关的问题,请首先使用 ping 命令检查 DNS 服务器是否可达,如下所示:
ping -c <dns_server_address>
使用 dig 或 host 命令检查服务器是否正在工作或正在执行名称到 IP 地址的解析,如下所示:
dig @X.X.X.X www.google.com
host www.google.com X.X.X.X
如果启用了 NetworkManager 服务并且发现了错误的 DNS 服务器 IP 地址,则您根本无法向 resolv.conf 文件添加条目。这是因为 NetworkManager 会覆盖文件条目并连接到 DHCP 服务器进行自动分配。
要解决此问题,请打开接口文件以添加 PEERDNS=no 并将新地址设置为 DNS1=X.X.X.X。
# On CentOS/Fedora/RHEL
sudo vim /etc/sysconfig/network-scripts/<interface_name>
# On Ubuntu/Debian
sudo vim /etc/network/interfaces
打开文件后,添加以下行:
PEERDNS=no
DNS1=X.X.X.X
上述命令片段将阻止 DHCP 覆盖 DNS 地址,从而允许您直接编辑 resolv.conf 文件。
Linux 中的防火墙故障排除
Linux 中的默认防火墙设置可以阻止 TCP 端口 80 和 443 上的所有传入连接。在为 TCP 端口添加任何规则之前,请检查 /etc/sysconfig/iptables 文件中是否有任何 DROP/REJECT 规则。将开放端口的规则移至 DROP/REJECT 之上以解决该问题。
此外,您还可以检查防火墙是否丢弃发往或来自任何特定主机的数据包。在 iptables 文件中,查找后跟 -s 和 -j 标志的任何 IP 地址和 DROP/ACCEPT 值。您可以编辑规则或创建特定于主机的新规则并将其放置在其他规则之上以使其成为例外。
修复 Linux 上的网络问题
本文涵盖了从初级到高级的技术,用于识别和修复 Linux 中的任何互联网连接问题。在开始排除故障之前,确定问题的根本原因并采取有效的措施非常重要。
通过了解 Linux 中可用的不同网络工具,您可以了解有关故障排除的更多信息,并在识别和解决问题方面更具创造性。