当前位置: 代码网 > 服务器>服务器>Linux > Linux服务器网络连接故障排除的完整指南

Linux服务器网络连接故障排除的完整指南

2025年07月02日 Linux 我要评论
当 linux 服务器似乎离线或无法访问时,您应该始终能够通过 upcloud 控制面板的 web 控制台或通过 vnc 连接登录。登录后,使用 ping 和公共 ip 地址(例如 google 的公

当 linux 服务器似乎离线或无法访问时,您应该始终能够通过 upcloud 控制面板的 web 控制台或通过 vnc 连接登录。登录后,使用 ping 和公共 ip 地址(例如 google 的公共 dns 服务器)测试服务器的互联网连接,如果互联网连接正常,这很可能会得到回复。

ping -c 4 8.8.8.8

输出结果应类似以下内容:

ping 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=58 time=1.68 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=58 time=1.70 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=58 time=1.71 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=58 time=1.69 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 1.686/1.699/1.718/0.051 ms

如果服务器无法到达目的地,则可能是配置问题。请按照此处描述的步骤排除 linux 云服务器最常见的网络问题。

检查网络配置

如果您的 linux 服务器无法访问,请首先检查网络接口。使用 ip addr 命令查看所有接口的状态,确保关键连接(如 eth0)已启用。如果发现任何接口被禁用,请使用 ifup 激活它们。通过使用 ifdown --forceifup 命令重新启动接口来解决持续存在的问题。

确保网络接口(例如 eth0)已启用。要查看所有已配置的接口,请使用此命令:

ip addr

命令的输出将显示服务器上每个网络接口的状态,例如,如下所示为“state up”或“state down”:

2: eth0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state up group default qlen 1000

使用以下命令打开任何禁用的接口:

sudo ifup <interface name>

这里的接口名称是 ip addr 命令输出中列出的名称之一,例如 eth0、eth1 或 eth2。

当所有网络接口都已启用后,请再次尝试使用 ping 命令。如果问题仍然存在,请检查网络接口是否已分配 ip,并且它们与 upcloud 控制面板的网络部分:https://upcloud.com/resources/tutorials/troubleshoot-network-connectivity-linux-server/#network-section中的信息匹配。

尝试使用以下命令重新启动任何有问题的接口:

sudo ifdown <interface name>
sudo ifup <interface name>

如果其中任何一个命令失败,则接口可能处于命令脚本未知的状态。请尝试再次使用 --force 参数执行相同的命令以解决此类问题:

sudo ifdown --force <interface name>
sudo ifup <interface name>

如果重新启动网络接口解决了问题,那就太好了!如果不是,请继续进行故障排除。

检查网络配置文件

linux 通常将网络设置存储在特定文件中,并在启动时或使用 ifup 命令时读取它们。要更改网络配置,您需要使用文本编辑器打开正确的文件。在基于 debian 和 ubuntu 的发行版中,可以使用以下命令完成此操作:

sudo nano /etc/network/interfaces

在大多数情况下,接口文件应列出以下接口:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

在 centos 和其他 red hat 变体中,这些配置被拆分为每个网络接口的单独文件,并存储在 /etc/sysconfig/network-scripts/ 中。互联网连接的默认接口通常称为 eth0,它会打开相应的配置文件:

sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0

eth0 的配置文件应如下所示:

device=eth0
bootproto=dhcp
onboot=yes

如果接口配置文件与此处示例不匹配,请编辑特定于您系统的文件以恢复原始功能。要使对这些文件所做的任何更改生效,您必须按照前面使用 ifdownifup 命令所述重新启动应用更改的接口。

检查服务器的 dns 记录

如果您的服务器可以 ping ip 但无法连接到域,则可能是 dns 问题。使用 ping upcloud.com 测试域名解析,并使用 sudo cat /etc/resolv.conf 检查 dns 配置。确保您的 dns 服务器(例如 upcloud 的解析器)在此文件或通过您的网络接口文件正确配置。

ping upcloud.com

如果域没有回复,问题很可能出在服务器如何将域名解析为 ip 地址。检查服务器的 dns 记录:

sudo cat /etc/resolv.conf

列表应至少包含 1 个名称服务器。upcloud 的所有默认 dns 解析器无论可用区如何都具有相同的 ip 地址。dns 服务器由 dhcp 协议自动提供,操作系统中无需手动配置。

upcloud dns 解析器 ipv4 地址为:

  • 94.237.127.9
  • 94.237.40.9

如果您的服务器具有公共 ipv6 地址,您还可以将 ipv6 与以下服务器一起使用:

  • 2a04:3540:53::1
  • 2a04:3544:53::1

如果列表为空,请勿手动编辑,因为如果您安装了名称服务器管理器,您所做的任何更改都将被还原。相反,您可以尝试使用此命令在 ubuntu 和某些 debian 系统上更新它:

sudo resolvconf -u

在未安装 resolvconf 的 debian 服务器上,您可以直接编辑 resolv.conf 文件:

sudo nano /etc/resolv.conf

将以下行添加到文件,保存并退出:

nameserver 94.237.127.9
nameserver 94.237.40.9

对于那些安装了 resolvconf 的用户,如果更新命令后 resolv.conf 仍然为空,您可以将名称服务器添加到您的接口文件。打开它进行编辑:

sudo nano /etc/network/interfaces

在 eth0 部分的末尾添加一个名称服务器:

auto eth0
iface eth0 inet dhcp
dns-nameservers 94.237.127.9

之后,保存文件并退出。您还需要使用以下命令重新启动网络服务:

sudo service networking restart

在 centos 和其他 red hat 变体中,resolv.conf 文件的填充方式略有不同,如果文件为空,您可以在负责公共 ip 的网络接口的网络配置文件中添加最多两个 dns 条目。例如,使用以下命令打开 ifcfg-eth0:

sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0

编辑文件使其看起来像这样:

device=eth0
bootproto=dhcp
onboot=yes
dns1=94.237.127.9
dns2=94.237.40.9

退出编辑器并使用 ifdownifup 命令重新启动您刚刚编辑配置文件的接口。

双向测试连接

尝试通过互联网 ping 您的服务器。在您自己的计算机上打开终端或命令提示符,然后尝试 ping 您的服务器的公共 ip,您可以在 upcloud 控制面板的网络部分:https://upcloud.com/resources/tutorials/troubleshoot-network-connectivity-linux-server/#network-section下找到它。

在您自己的计算机上:ping <server public ip>

通过从您的服务器 ping 另一个站点来测试互联网连接。例如,使用以下命令 ping google 的公共 dns:

ping 8.8.8.8

如果您在您的帐户上部署了第二台服务器,并且问题出在分配了私有 ip 地址的接口上,请尝试使用 upcloud 控制面板中列出的私有 ip 从您的其他服务器 ping 它。

如果 ping 未能收到回复,则问题可能出在服务器的网络配置或防火墙。如果您可以从本地计算机 ping 服务器,但不能从服务器本身 ping,则问题可能出在服务器的出站网络配置。

检查防火墙

如果您的服务器网络配置正确但仍然无法连接,则防火墙可能会阻止流量。使用 sudo iptables -l -n 检查 iptables 规则,或使用 sudo firewall-cmd --list-all 检查 firewalld。使用 sudo systemctl stop firewalldsudo iptables -f 暂时禁用防火墙,以查看是否解决了问题。如果解决了,请重新启用它并添加特定规则以允许必要的流量。

要检查防火墙规则,请使用以下命令:

sudo iptables -l -n

对于 firewalld:

sudo firewall-cmd --list-all

要暂时禁用防火墙(请谨慎使用):

sudo systemctl stop firewalld
# 或者对于 iptables
sudo iptables -f

如果禁用防火墙解决了问题,您需要添加特定规则以允许必要的流量。例如,要允许 http 流量:

sudo iptables -a input -p tcp --dport 80 -j accept

检查丢包和延迟

高丢包或延迟会严重影响网络性能。使用 mtr 诊断网络路径问题,它结合了 pingtraceroute 功能。分析输出以确定数据包在哪里被丢弃或延迟,从而指示路由器或网络段的潜在问题。

要检查丢包和延迟,请使用 mtr

mtr google.com

此命令将显示您的数据包所采用的路径以及每个跃点的延迟和丢包。查找特定跃点处的高丢包或延迟以查明问题区域。

以上就是linux服务器网络连接故障排除的完整指南的详细内容,更多关于linux网络连接故障排除的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com