# Linux云服务器无法访问公网怎么办？
#### 问题描述
从Linux云服务器访问外部网络，遇到网络不通的情形，即访问公网不通，可参考本节内容进行排查。
#### 排查思路
以下排查思路根据原因的出现概率进行排序，建议您从高频率原因往低频率原因排查，从而帮助您快速找到问题的原因。
如果解决完某个可能原因仍未解决问题，请继续排查其他可能原因。
图1Linux实例访问公网不通排查思路   
![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000001210424363.png "点击放大")
表1Linux实例访问公网不通排查思路 
| 可能原因                        | 处理措施                                                                                                                                  |
|:---|:---|
| 资源状态异常：资源冻结；未开机；未绑定弹性公网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](https://support.huaweicloud.com/usermanual-eip/eip_0008.html)。
  
 
 #### 检查云服务器负载是否过高
当云服务器出现网络断开的情况，则可能是云服务器的带宽和CPU利用率过高导致。
如果您已经通过云监控服务[创建过告警任务](https://support.huaweicloud.com/usermanual-ces/zh-cn_topic_0084572213.html)，当CPU或带宽利用率高时，系统会自动发送告警给您。
Linux弹性云服务器带宽流量过高或CPU利用率高，请参考[Linux云服务器卡顿怎么办？](https://support.huaweicloud.com/ecs_faq/zh-cn_topic_0167429329.html)进行排查。
 #### 检查弹性公网IP的带宽是否超限
弹性云服务器绑定了弹性公网IP时，通过带宽提供公网和弹性云服务器间的访问流量。
如果出现访问公网不通，请排查弹性公网IP带宽是否超过带宽最大上限。
排查带宽超限的方法请参考[如何排查带宽超过限制？](https://support.huaweicloud.com/vpc_faq/faq_bandwidth_0002.html)
扩大带宽的操作请参考[修改弹性公网IP的带宽](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0093492521.html)。
 #### 检查DNS配置
使用公共镜像创建的ECS服务器默认使用内网DNS进行解析。内网DNS不影响ECS服务器对公网域名的访问。同时，还可以不经Internet，直接通过内网DNS访问其他云上服务内部地址，如OBS，访问时延小，性能高。
Linux操作系统执行如下命令查看DNS配置。
**cat /etc/resolv.conf**
回显信息如[图2]所示说明使用内网DNS进行解析。
图2DNS配置   
![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0254373609.png "点击放大")
若ECS服务器当前DNS不是内网DNS，要使用内网DNS进行解析，需要切换DNS服务器为内网DNS。
详细操作请参考[怎样配置弹性云服务器的DNS和NTP信息？](https://support.huaweicloud.com/ecs_faq/zh-cn_topic_0074825901.html)。
 #### 检查hosts文件
如果DNS配置正确，但仍无法访问公网，请继续检查云服务器中hosts文件中是否存在错误的映射关系，如果存在需要注释掉错误的解析。
Linux操作系统请执行以下命令查看hosts文件中的配置信息。
**vim /etc/hosts**
如果存在错误的域名映射关系请注释掉后保存hosts文件。
 #### 检查Network或NetworkManager是否正常运行
Network与NetworkManager是两种网络管理工具，如果两种都配置会发生冲突，仅使用其中一个即可。
以CentOS 7操作系统为例介绍，推荐使用NetworkManager。
1. 执行以下命令检查Network或NetworkManager的运行状态。 **systemctl status network**
   **systemctl status NetworkManager**
   在检查结果中：
   - 若Network和NetworkManager的"Active"的取值均为"active (running)"，执行步骤[2]后，结束操作。
   
   - 若Network的"Active"的取值为"active (running)"，NetworkManager的"Active"的取值为"inactive (dead)"，执行步骤[2]。
   
   - 若Network的"Active"的取值为"inactive (dead)"，NetworkManager的"Active"的取值为"active (running)"，结束操作。
    

2. 执行以下命令关闭Network。
   **systemctl stop network**
   **systemctl disable network**
   

3. 执行以下命令开启NetworkManager。 **systemctl start NetworkManager**
   **systemctl enable NetworkManager**
   
 
 #### 检查云服务器安全组
检查弹性云服务器安全组是否有配置错误，安全组出方向规则为白名单（允许），放通出方向网络流量。
例如[图3]所示，配置出方向允许所有访问。
可参考[修改安全组规则配置](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0030878383.html)，开放允许访问的协议或端口。
图3出方向允许所有访问   
![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0267163709.png "点击放大")
 #### 检查网络ACL规则
VPC默认没有网络ACL，如果关联了网络ACL，请检查" 网络ACL"规则。
1. 查看云服务器对应的子网是否关联了网络ACL。 如显示具体的网络ACL名称说明已关联网络ACL。
   图4网络ACL   
   ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0277156221.png "点击放大") 
2. 单击网络ACL名称查看网络ACL的状态。
   图5网络ACL开启状态   
   ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0277156223.png "点击放大") 
3. 将网络ACL与子网取消关联。
   在网络ACL详情页面，单击"关联子网 \> 取消关联"。
   图6取消关联网络ACL   
   ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0277155892.png "点击放大")
   ![](https://support.huaweicloud.com/ecs_faq/public_sys-resources/note_3.0-zh-cn.png)
   需要注意"网络ACL"的默认规则是丢弃所有出入方向的包，若关闭"网络ACL"后，其默认规则仍然生效。
   
4. 重试访问公网。
 
 #### 检查是否为国际链路问题
云服务器可能会出现访问中国大陆外（包括中国港澳台及其他国家、地区）网站不通或卡顿的问题。这是由于访问中国大陆外DNS服务器速度慢，导致的访问卡顿。
![](https://support.huaweicloud.com/ecs_faq/public_sys-resources/note_3.0-zh-cn.png)
如果您有访问中国大陆外网站的需求，建议您购买中国大陆外的弹性云服务器。您可以在购买弹性云服务器时通过选择对应的中国大陆外区域来购买相应区域的弹性云服务器。
如果需优化国际链路的访问速度，请参考[弹性云服务器访问中国大陆外网站时加载缓慢怎么办？](https://support.huaweicloud.com/trouble-ecs/zh-cn_topic_0138914423.html)
 #### 检查弹性公网IP是否被封堵
IP 封堵是指将所有流量指向 NULL。若被封堵，则无法访问公网。
一般情况下，客户被封堵的EIP，若无继续攻击，会在24小时后自动解封。
建议后期使用[DDoS高防服务](https://www.huaweicloud.com/product/aad.html)，防止再次被攻击。
 #### 检查是否可以正常获取私有IP地址
NetworkManager未开启自启动导致dhclient进程未运行、或网卡设备未纳入NetworkManager都可能导致私有IP地址丢失。请按照以下操作步骤进行排查。
以CentOS 7操作系统为例：
1. 执行以下命令，确认dhclient是否运行。 **ps -ef \|grep dhclient \|grep -v grep**
   
2. 如果未找到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管理。 **nmcli device status**
     如果显示该网卡为的STATE为unmanaged，则该网卡设备未被NetworkManager管理，执行以下命令进行恢复。
     **nmcli device set eth0 managed yes**
     
    
3. 执行以下命令重启NetworkManager。 **systemctl restart NetworkManager**
   
4. 执行以下命令查看ip是否已经获取。 **ip add**
   
 
 #### 检查网卡配置
1. 执行以下命令，打开/etc/sysconfig/network-scripts/ifcfg-eth0中的配置。 **vi /etc/sysconfig/network-scripts/ifcfg-eth0**
   
2. 修改/etc/sysconfig/network-scripts/ifcfg-eth0中的配置。 以CentOS 7操作系统为例：
   ```
   DEVICE="eth0"
   BOOTPROTO="dhcp"
   ONBOOT="yes"
   TYPE="Ethernet"
   PERSISTENT_DHCLIENT="yes"
   ```
   
3. 执行以下命令，重启网络服务。 **service network restart**
   
 
 #### 检查防火墙配置
检查防火墙的状态是否打开，以CentOS 7操作系统为例。
更多操作系统的防火墙配置操作请参考[防火墙配置](https://support.huaweicloud.com/trouble-ecs/ecs_trouble_0402.html)。
**firewall-cmd --state**
回显信息：
```
[root@ecs-centos7 ~]# firewall-cmd --state 
running
```
您可以执行以下命令关闭防火墙
**systemctl stop firewalld.service**
![](https://support.huaweicloud.com/ecs_faq/public_sys-resources/caution_3.0-zh-cn.png)
防火墙开启和设置安全组是对云服务器的双重保护，如果选择关闭防火墙，建议安全组谨慎开放端口。
