Linux云服务器无法访问公网怎么办?
问题描述
从Linux云服务器访问外部网络,遇到网络不通的情形,即访问公网不通,可参考本节内容进行排查。
排查思路
以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。
如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。
可能原因 |
处理措施 |
---|---|
资源状态异常:资源冻结;未开机;未绑定弹性公网IP。 |
云服务器状态为“运行中”,且绑定弹性公网IP才可以访问公网,详细操作请参考检查资源状态是否正常。 |
云服务器负载过高。 |
云服务器的带宽和CPU利用率过高导致网络断开,详细操作请参考检查云服务器负载是否过高。 |
弹性公网IP的带宽超限。 |
请扩大带宽后重试,详细操作请参考检查弹性公网IP的带宽是否超限。 |
DNS配置不正确。 |
请切换DNS服务器为内网DNS,详细操作请参考检查DNS配置。 |
hosts文件中添加了指定解析。 |
检查hosts文件中是否存在错误的映射关系,详细操作请参考检查hosts文件。 |
同时运行了Network或NetworkManager。 |
两者并存导致网络配置冲突,请使用其中之一,详细操作请参考检查Network或NetworkManager是否正常运行。 |
安全组配置不正确。 |
检查安全组是否放通出方向网络流量,详细操作请参考检查云服务器安全组。 |
检查网络ACL规则。 |
请取消关联的网络ACL后重试,详细操作请参考检查网络ACL规则。 |
国际链路问题。 |
请优化链路后重试,详细操作请参考检查是否为国际链路问题。 (适用于访问中国大陆外,包括中国港澳台及其他国家、地区的网站的场景) |
弹性公网IP被封堵。 |
IP若被封堵,则无法访问公网,详细操作请参考检查弹性公网IP是否被封堵。 |
私有IP丢失。 |
dhclient进程未运行可能导致私有IP丢失,详细操作请参考检查是否可以正常获取私有IP地址。 |
网卡配置不正确。 |
检查网卡配置、DNS配置是否正确,详细操作请参考检查网卡配置。 |
云服务器开启了防火墙。 |
测试防火墙关闭后是否可以正常访问,请参考检查防火墙配置。 |
检查资源状态是否正常
- 请在控制台检查云服务器资源状态是否为“运行中”。
- 检查云服务器是否已绑定弹性公网IP。
绑定弹性公网IP才可以实现访问公网,请检查弹性云服务器是否绑定了弹性公网IP。
绑定弹性公网IP请参考绑定弹性公网IP。
检查云服务器负载是否过高
当云服务器出现网络断开的情况,则可能是云服务器的带宽和CPU利用率过高导致。
如果您已经通过云监控服务创建过告警任务,当CPU或带宽利用率高时,系统会自动发送告警给您。
Linux弹性云服务器带宽流量过高或CPU利用率高,请参考Linux云服务器卡顿怎么办?进行排查。
检查弹性公网IP的带宽是否超限
弹性云服务器绑定了弹性公网IP时,通过带宽提供公网和弹性云服务器间的访问流量。
如果出现访问公网不通,请排查弹性公网IP带宽是否超过带宽最大上限。
排查带宽超限的方法请参考如何排查带宽超过限制?
扩大带宽的操作请参考修改弹性公网IP的带宽。
检查DNS配置
使用公共镜像创建的ECS服务器默认使用内网DNS进行解析。内网DNS不影响ECS服务器对公网域名的访问。同时,还可以不经Internet,直接通过内网DNS访问其他云上服务内部地址,如OBS,访问时延小,性能高。
Linux操作系统执行如下命令查看DNS配置。
cat /etc/resolv.conf
回显信息如图2所示说明使用内网DNS进行解析。
若ECS服务器当前DNS不是内网DNS,要使用内网DNS进行解析,需要切换DNS服务器为内网DNS。
详细操作请参考怎样配置弹性云服务器的DNS和NTP信息?。
检查hosts文件
如果DNS配置正确,但仍无法访问公网,请继续检查云服务器中hosts文件中是否存在错误的映射关系,如果存在需要注释掉错误的解析。
Linux操作系统请执行以下命令查看hosts文件中的配置信息。
vim /etc/hosts
如果存在错误的域名映射关系请注释掉后保存hosts文件。
检查Network或NetworkManager是否正常运行
Network与NetworkManager是两种网络管理工具,如果两种都配置会发生冲突,仅使用其中一个即可。
以CentOS 7操作系统为例,推荐使用NetworkManager。
检查云服务器安全组
检查弹性云服务器安全组是否有配置错误,安全组出方向规则为白名单(允许),放通出方向网络流量。
例如图3所示,配置出方向允许所有访问。
可参考修改安全组规则配置,开放允许访问的协议或端口。
检查是否为国际链路问题
云服务器可能会出现访问中国大陆外(包括中国港澳台及其他国家、地区)网站不通或卡顿的问题。这是由于访问中国大陆外DNS服务器速度慢,导致的访问卡顿。
如果您有访问中国大陆外网站的需求,建议您购买中国大陆外的弹性云服务器。您可以在购买弹性云服务器时通过选择对应的中国大陆外区域来购买相应区域的弹性云服务器。
如果需优化国际链路的访问速度,请参考弹性云服务器访问中国大陆外网站时加载缓慢怎么办?
检查弹性公网IP是否被封堵
IP 封堵是指将所有流量指向 NULL。若被封堵,则无法访问公网。
一般情况下,客户被封堵的EIP,若无继续攻击,会在24小时后自动解封。
建议后期使用DDoS高防服务,防止再次被攻击。
检查是否可以正常获取私有IP地址
NetworkManager未开启自启动导致dhclient进程未运行、或网卡设备未纳入NetworkManager都可能导致私有IP地址丢失。请按照以下操作步骤进行排查。
以CentOS 7操作系统为例:
- 执行以下命令,确认dhclient是否运行。
- 如果未找到dhclient进行,则确认dhclient进程未运行,执行以下命令,继续排查NetworkManager是否运行。
systemctl status NetworkManager
- 如果NetworkManager的状态为Active: inactive (dead),则NetworkManager未启动,执行以下命令,检查该服务是否开机自启。
systemctl is-enabled NetworkManager
结果为disabled则确认为NetworkManager为设置开机自启导致,执行以下命令进行恢复。
systemctl enable NetworkManager && systemctl start NetworkManager
- 如果NetworkManager的状态为Active: active (running),执行以下命令查看网卡设备是否被NetworkManager管理。
如果显示该网卡为的STATE为unmanaged,则该网卡设备未被NetworkManager管理,执行以下命令进行恢复。
nmcli device set eth0 managed yes
- 如果NetworkManager的状态为Active: inactive (dead),则NetworkManager未启动,执行以下命令,检查该服务是否开机自启。
- 执行以下命令重启NetworkManager。
- 执行以下命令查看ip是否已经获取。
检查防火墙配置
检查防火墙的状态是否打开,以CentOS 7操作系统为例。
更多操作系统的防火墙配置操作请参考防火墙配置。
firewall-cmd --state
回显信息:
[root@ecs-centos7 ~]# firewall-cmd --state running
您可以执行以下命令关闭防火墙
systemctl stop firewalld.service
防火墙开启和设置安全组是对云服务器的双重保护,如果选择关闭防火墙,建议安全组谨慎开放端口。