当 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 --force
和 ifup
命令重新启动接口来解决持续存在的问题。
确保网络接口(例如 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
如果接口配置文件与此处示例不匹配,请编辑特定于您系统的文件以恢复原始功能。要使对这些文件所做的任何更改生效,您必须按照前面使用 ifdown
和 ifup
命令所述重新启动应用更改的接口。
检查服务器的 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
退出编辑器并使用 ifdown
和 ifup
命令重新启动您刚刚编辑配置文件的接口。
双向测试连接
尝试通过互联网 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 firewalld
或 sudo 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
诊断网络路径问题,它结合了 ping
和 traceroute
功能。分析输出以确定数据包在哪里被丢弃或延迟,从而指示路由器或网络段的潜在问题。
要检查丢包和延迟,请使用 mtr
:
mtr google.com
此命令将显示您的数据包所采用的路径以及每个跃点的延迟和丢包。查找特定跃点处的高丢包或延迟以查明问题区域。
以上就是linux服务器网络连接故障排除的完整指南的详细内容,更多关于linux网络连接故障排除的资料请关注代码网其它相关文章!
发表评论