Linux服务器网络连接故障排除的完整指南
目录
- 检查网络配置
- 检查网络配置文件
- 检查服务器的 DNS 记录
- 双向测试连接
- 检查防火墙
- 检查丢包和延迟
当 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
和 http://www.devze.comifup
命令重新启动接口来解决持续存在的问题。
确保网络接口(例如 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 lophp 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 nanhttp://www.devze.como /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,则问题可能出在服务器的出站网络配置。
检查防火墙
如果您的服务器网络配置正确但仍然无法连接,则防火墙可能会阻止流量。使python用 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网络连接故障排除的资料请关注编程客栈(www.devze.com)其它相关文章!
精彩评论