在当今世界,互联网连接可以通过网络使用和传输信息。 以网络为中心的角色工作要求系统管理员了解可能出现的问题并能够对其进行故障排除。
因此,在日常活动需要高效通信的环境中,您必须了解 Linux/Unix 网络工具以及如何使用它们来解决互联网连接问题。 本文将帮助您识别 Linux 中可能存在的网络问题,并提供解决这些问题的方法。
传入和传出连接故障排除
在开始解决问题之前,确定问题出在客户端还是服务器端非常重要。 本节介绍识别 Linux 上的传出和传入连接问题的方法。
识别和排除传出连接问题
作为尝试访问该网站的客户,有时您可能会发现该网站不可用。 问题可能出在名称解析或连接在本地网络之外。
要确定确切原因,您可以先使用 ping 命令发送 ICMP 回显请求并等待响应。
ping <ip_add>
在没有网络连接或 100% 数据包丢失的情况下,另一种可能性是没有任何网络接口。 跑过 ip 命令检查系统上所有可用接口的状态:
ip add show
命令输出将每个网络接口的状态显示为 UP 或 DOWN。 输出中状态为 DOWN 的接口将没有任何分配的 IP 地址,这可能是连接问题的可能原因。
您可以通过运行以下命令更改 Internet 状态来解决问题:
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>
如果 TCP 端口 80 和 443 状态为 HTTP 和 HTTPS 服务启动并运行,则表明该服务正在侦听传入连接。 这种情况需要你检查主配置文件里面的服务是如何配置的: /etc/httpd/conf/httpd.conf.
此外,没有 TCP 端口 80 和 443 表明防火墙正在阻止并过滤它们,而 close Nmap 输出中的状态表示 httpd 服务未运行或未侦听端口。
解决 DNS 服务器问题
如果您可以 ping 网站的 IP 地址并且无法通过浏览器访问,则您的主机名解析存在问题。 通过 Internet 通信的客户端-服务器通过与 DNS 服务器通信来执行主机名到地址的解析。
在 Linux/Unix 操作系统中,您可以通过手动输入 DNS 服务器或在启动接口时请求 DHCP 服务器进行自动分配来配置 DNS 服务器。 在任何一种情况下,DNS 服务器地址都可以在 /etc/resolv.conf 文件。
因此,每当您尝试连接到网站时,它都会在 /etc/hosts 文件并继续在 解析.conf 文件。 它会检查服务器,直到找不到主机以返回“未找到主机”错误。
要调试与 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 地址,您根本无法将条目添加到 解析.conf 文件。 这是因为 NetworkManager 会覆盖文件条目并连接到 DHCP 服务器以进行自动分配。
要解决此问题,请打开要添加的接口文件 对等DNS=否 并将新地址设置为 DNS1=XXXX.
# 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 地址,从而允许您编辑 解析.conf 直接存档。
Linux 中的防火墙故障排除
Linux 中的默认防火墙设置可以阻止 TCP 端口 80 和 443 上的所有传入连接。检查是否存在任何 DROP/REJECT 规则 /etc/sysconfig/iptables 在为 TCP 端口添加任何规则之前文件。 将开放端口的规则移到 DROP/REJECT 上方以解决问题。
此外,您还可以检查防火墙是否将数据包丢弃到/来自任何特定主机。 在 iptables 文件中,查找任何 IP 地址和 DROP/ACCEPT 值,然后是 -s 和 -j 标志。 您可以编辑规则或创建一个特定于主机的新规则并将其置于其他规则之上以使其成为例外。
修复 Linux 上的网络问题
本文涵盖了从初级到高级的技术,用于识别和修复 Linux 中的任何 Internet 连接问题。 在开始排除故障之前,重要的是要确定问题的根本原因并有效地采取措施。
通过了解 Linux 中可用的不同网络工具,您可以了解有关故障排除的更多信息,并更有创意地识别和解决这些问题。