Linux服务器上常见网络相关问题的故障排除

如果您看到这篇博文,很可能您的 Linux 服务器遇到了某种网络问题。虽然并非有意为之,但有时网络配置错误会导致一些不良后果。

原因可能很简单,比如一个恼人的语法错误,一条防火墙规则可能过于有效地阻止了流量(或者一条配置错误的防火墙规则),或者在极少数情况下——一根不稳定的网线,一旦更换,服务器就可以再次访问。

这些情况都很容易解决,但有一点可以肯定——故障排除是确定根本原因的方法。

关于如何排查Linux服务器上的网络相关问题的实用技巧:

由于服务器通常无法通过 SSH 访问,您需要熟悉带外控制台访问方式:如果您使用的是独立服务器,则需要访问 IPMI 控制台;如果您使用的是 VPS 服务,则需要访问 VNC 控制台。这两种方式的设计初衷都是为了在远程 SSH 访问不可用时,让您能够诊断问题。

第一步:

通过上述任一方法访问服务器后,请尝试输入以下命令检查是否可以访问 Google 的公共 DNS 服务器:

ping 8.8.8.8

当服务器无法连接到此目的地时,这清楚地表明网络配置存在问题。

第二步:

现在,是时候深入了解网络配置了!

首先,尝试通过 ping 命令(从您的本地计算机)ping 服务器的主 IP 和网关——这将确定您的服务器是否具有任何形式的网络连接。

ping {你的服务器主IP地址}

如果您能够成功 ping 通服务器的网关 IP,这是一个好消息,表明网络路由正确,可以开始进一步的故障排除!

登录后,您可以通过执行以下命令查看服务器的网络路由:

路线 -n

这将向您展示网络流量如何到达您的服务器,并证明流量确实到达了您服务器的网关 IP(这是件好事!)。

如果由于某种原因,您发现从本地计算机终端 ping 主服务器 IP 地址失败,则表明主 IP 地址所路由的特定接口存在连接问题。

专业提示:您需要确保网络接口(例如“eth0”)已启用——为此,您可以运行以下命令来检查所有已配置的接口:

IP地址

此命令输出服务器上所有已配置和可用的网络接口,并提供两种相对状态之一:“UP”或“DOWN”。

如果您发现分配给您正在排查故障的 IP 地址的接口显示“DOWN”状态,您可以通过发出以下命令将其打开(并使其“UP”):

ifdown {接口名称} /* 关闭一个接口 */

ifup {接口名称} /* 启动一个接口 */

例如:ifup eth0 /* 启动接口“eth0” */

如果上述命令由于某种原因无法正常工作,很可能是因为您正在排查故障的接口不在 ifdown(和 ifup)脚本能够检测到的状态。在这种情况下,请尝试使用强制标志

ifdown –force {接口名称}

ifup {接口名称}

执行此命令时,将显示错误信息,指出脚本为何未按预期(及成功)运行——最可能的原因是配置文件中存在语法错误:

对于使用CentOS 和 RHEL 服务器的用户,可以通过执行以下命令查看配置文件:

cat /etc/sysconfig/network-scripts/ifcfg-{接口名称}

/* 将接口名称替换为您分配的 IP 接口名称 */

如果您的接口已启动且未显示任何错误,但您仍然无法 ping 通该接口,则需要进一步排查故障。为了避免过于简单,请确保您正在排查故障的 IP 地址确实是 RackNerd 分配给您的地址——如果您对此有任何疑问,请联系 RackNerd 支持团队。

对于使用Ubuntu 和 Debian 服务器的用户,可以通过执行以下命令查看配置文件:

cat /etc/network/interfaces

请注意,对于运行 Ubuntu 18.04 LTS 及更高版本 Ubuntu 和 Debian 服务器的客户端,此命令略有不同,如下所示:

cat /etc/netplan/file.yml

此时,如果您运行的是基于 CentOS 或 RedHat 的服务器,您应该会看到类似于以下内容的网络接口配置:

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
HWADDR=”00:00:c3:b5:f2:af”
IPADDR=”XXXXXX”
NETMASK=”XXXXXX”
DHCPV6C=”no”
IPV6_AUTOCONF=”no”
IPV6INIT=”yes”
IPV6ADDR=”XXXXXX”
GATEWAY=”XXXXXX”
IPV6_DEFAULTGW=”XXXXXX”

同样,如果您使用的是基于 Ubuntu 的服务器(版本低于 18.04 LTS),则您的配置文件可能如下所示:

自动配置 eth0
接口 eth0 inet 静态
地址 10.0.0.1
子网掩码 255.255.255.0
网关 10.0.0.254

如果您使用的是基于 Ubuntu 18.04 LTS(或更高版本)的服务器,您将看到类似如下的输出:

网络:
版本:2
渲染器:networkd
以太网:
enp3s0:
地址:
– 10.10.10.2/24
网关4:10.10.10.1
名称服务器:
地址:[10.10.10.1, 1.1.1.1]

需要说明的是:您看到的某些配置条目可能会有所不同,具体取决于相应的 IP 地址分配是配置为 DHCP 还是静态配置。

在基于 CentOS 和 RedHat 的安装中,这与BOOTPROTO有关。在 Ubuntu 和 Debian 的安装中,这与inet static有关。

需要注意的是,GRUB 配置文件决定了服务器重启期间设备是否需要处于“UP”状态。在 CentOS 和 Red Hat 系统中,这与ONBOOT相关。在 Ubuntu 和 Debian 系统中,这通常表示为auto

补充说明(对于运行 Ubuntu 服务器版本高于 18.04 的用户):您的网络配置由systemd服务(而不是Network Manager)管理——在这种情况下,重启时要加载的网络计划直接在您的 grub 配置文件中指定。

完成更改后,您现在可以执行以下命令来重启网络服务:

在 Ubuntu 和 Debian 18.04 LTS 版本之前的系统中:

服务重启网络

在安装了 Ubuntu 18.04 LTS 以上版本的服务器上:

网络计划应用

在基于 CentOS 和 RedHat 的服务器上:

服务重启网络

或者:

ifdown {接口名称}
ifup {接口名称}

专业提示:如果您通过 SSH 登录服务器,请避免执行网络重启操作(以及 ifup 和 ifdown 脚本) 。如果网络配置存在错误,则可能会(而且很可能会)中断您当前的 SSH 会话。

补充提示:您可以通过以下日志文​​件了解网络相关错误信息,您可以访问这些日志文件(与操作系统版本无关):

/var/log/messages(使用相应的接口进行 grep 搜索)
dmesg(使用相应的接口进行 grep 搜索)

例如: grep eth0 /var/log/messages
grep eth0 dmesg

如果上述方法无效,则需要探索和排查其他可能的情况:

常见情况:防火墙规则配置错误可能导致连接被阻止。

您可以使用以下工具来检查与服务器的连接被阻止的位置:

在 Ubuntu 系统上安装(请将公网 IP 地址替换为您的服务器 IP 地址)

mtr {public_IP}

在 Debian 系统上安装(将公网 IP 地址替换为您的服务器 IP 地址)

traceroute {public_IP}

在基于 CentOS 和 RedHat 的服务器上(将公网 IP 地址替换为您服务器的 IP 地址)

traceroute {公网 IP}

选择,

跟踪路径 {公网 IP}

这些命令将通过网络发送到指定目标,并显示每个响应节点的延迟。如果跟踪未到达服务器的 IP 地址或网关,则可能表明服务器上运行着防火墙(阻止了连接)。

要诊断是否属于这种情况,您可以通过在 Linux 系统中运行以下命令来验证 iptables 规则:

iptables -L -n

有时,服务器防火墙会阻止 ICMP 协议,导致服务器无法响应 ping 请求。此外,某些策略可能更加严格,会阻止常规连接和/或特定 IP 地址。要确定问题是否与防火墙规则有关,您可以尝试停止防火墙(iptables 或 UFW)——很多时候,这样做就能让您如愿连接到服务器(因此问题确实与防火墙规则有关)。

故障排除的第一步是暂时停止防火墙,以确定它是否是问题的根本原因。

要在基于 CentOS 或 RedHat 的服务器上停止 iptables:

停止 iptables 服务

要在基于 Ubuntu 或 Debian 的服务器上停止 UFW:

ufw 禁用

关闭防火墙后,检查服务器是否恢复 ping 通。如果恢复正常,则在重新启用 iptables 或 ufw 之前,需要检查防火墙规则。

此文章对您是否有帮助? 0 用户发现这个很有用

相关文章

Linux服务器常用命令大全

掌握常用Linux命令是服务器管理的基础。 文件与目录操作: ls -la - 列出所有文件详情 cd /path - 切换目录 pwd - 显示当前目录 mkdir dir -...

Linux服务器防火墙配置详细教程

防火墙是服务器安全的第一道防线,正确配置至关重要。 Linux防火墙(firewalld): 查看状态:systemctl status firewalld 启动防火墙:systemctl...

Linux云服务器僵尸进程处理的步骤和方法

在日常使用 Linux 云服务器的过程中,很多站长都会在某一次排查性能问题时,通过 top 或 ps 命令看到状态为 Z...

Nginx配置错误导致云服务器端口占用怎么办?

在部署或修改Nginx配置的过程中,很多用户常常忽略一个关键细节:端口的唯一性和正确性。如果Nginx配置文件中出现错误绑定端口、重复监听或错误格式,很可能会导致端口冲突,进而出现Nginx启动...

为 Linux 服务器设置双因素身份验证

为什么要在Linux服务器上使用双因素身份验证? 尽管 SSH 密钥安全性很高,但并非万无一失,尤其是在私钥泄露或存储不当的情况下。双因素身份验证 (2FA)...