【最新】 ECS阿里云服务器 访问不了公网 ip 的解决办法和原因

(转载请注明出处) OK,直奔主题:
之前买了一个阿里云ECS服务器,这两天项目需求在服务器上搭建了一个SRS服务器,按着正常操作步骤来的,最后在公网却始终访问不到我的阿里云服务器ip。入方向、出方向的端口甚至都全开了还是不能访问,突然想到还有防火墙问题,于是执行:

systemctl stop firewalld.service

关闭了防火墙,ei ~ 成功了!
在这里插入图片描述
这里就顺带给大家 复(yu)习(xi)一下Linux中防火墙的相关命令吧:

firewalld的基本使用
 
# 使最新的防火墙设置规则生效
[root@localhost ~]# firewall-cmd --reload 
 
# 查询ssh协议服务是否被允许
[root@localhost ~]# firewall-cmd --zone=public --query-service=ssh
 
# 查询HTTP协议服务是否被允许
[root@localhost ~]# firewall-cmd --zone=public --query-service=http
 
# 启动
[root@localhost ~]# systemctl start firewalld
 
# 查看状态
[root@localhost ~]# systemctl status firewalld 
 
# 停止
[root@localhost ~]# systemctl disable firewalld
 
# 禁用
[root@localhost ~]# systemctl stop firewalld 
 
#启动服务
[root@localhost ~]# systemctl start firewalld.service
 
# 关闭服务(本文使用的代码)
[root@localhost ~]# systemctl stop firewalld.service
 
# 重启服务
[root@localhost ~]# systemctl restart firewalld.service
 
# 显示一个服务的状态
[root@localhost ~]# systemctl status firewalld.service
 
# 在开机时启用一个服务
[root@localhost ~]# systemctl enable firewalld.service
 
# 在开机时禁用一个服务
[root@localhost ~]# systemctl disable firewalld.service
 
# 查看服务是否开机启动
[root@localhost ~]# systemctl is-enabled firewalld.service
 
# 查看已启动的服务列表
[root@localhost ~]# systemctl list-unit-files|grep enabled
 
# 查看启动失败的服务列表
[root@localhost ~]# systemctl --failed
 
# 查看版本
[root@localhost ~]# firewall-cmd --version
 
# 查看帮助
[root@localhost ~]# firewall-cmd --help
 
# 显示状态
[root@localhost ~]# firewall-cmd --state
 
# 查看所有打开的端口
[root@localhost ~]# firewall-cmd --zone=public --list-ports
 
# 更新防火墙规则
[root@localhost ~]# firewall-cmd --reload
 
# 查看区域信息
[root@localhost ~]# firewall-cmd --get-active-zones
 
# 查看指定接口所属区域
[root@localhost ~]# firewall-cmd --get-zone-of-interface=eth0
 
# 拒绝所有包
[root@localhost ~]# firewall-cmd --panic-on
 
# 取消拒绝状态
[root@localhost ~]# firewall-cmd --panic-off
 
# 查看是否拒绝
[root@localhost ~]# firewall-cmd --query-panic
 
# 端口添加(--permanent永久生效,没有此参数重启后失效)
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
 
# 使最新的防火墙设置规则生效
[root@localhost ~]# firewall-cmd --reload 
 
# 查看80端口
[root@localhost ~]# firewall-cmd --zone=public --query-port=80/tcp
 
# 删除80端口
[root@localhost ~]# firewall-cmd --permanent --zone=public --remove-port=80/tcp
 
# 删除21端口
[root@localhost ~]# firewall-cmd --permanent --zone=public --remove-port=21/tcp
 
# 删除HTTP协议服务
[root@localhost ~]# firewall-cmd --permanent --zone=public --remove-service=http
 
# 增加3306端口到防火墙规则tcp
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=3306/tcp
 
# 增加3306端口到防火墙规则udp
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=3306/udp
 
# 查看当前的区域
[root@localhost ~]# firewall-cmd --get-default-zone
 
# 查看当前的服务
[root@localhost ~]# firewall-cmd --zone=public --list-services
 
# 安装图形化用户接口工具 firewall-config,则以 root 用户身份运行下列命令
[root@localhost ~]# yum install firewall-config
 
# 检查防火墙版本
[root@localhost ~]# firewall-cmd --version
 
# 查看帮助
[root@localhost ~]# firewall-cmd --help
### 如何为阿里云ECS实例分配公网IP地址 对于新创建的 ECS 实例,如果希望其拥有公网 IP 地址以便能够直接访问互联网或被外部网络访问,则可以在创建时指定分配公网 IP。然而,对于已经存在的没有公网 IPECS 实例,可以采用如下方法来为其分配公网 IP。 #### 方法一:使用弹性公网 IP (Elastic IP Address, EIP) 一种常见的做法是给现有的 ECS 实例绑定一个弹性公网 IP。这样做不仅可以让实例获得对外通信的能力,而且当遇到安全威胁或其他需要变更外网出口的情况时,只需重新分配一个新的 EIP 即可,无需更改实际使用的 ECS 资源。操作流程通常涉及以下几个方面: - 登录到阿里云控制台并进入 ECS 管理页面; - 找到目标 ECS 实例,并点击右侧的操作按钮中的“更多 -> 网络安全组 -> 绑定/解绑EIP”选项; - 如果还没有可用的 EIP,可以选择购买新的 EIP 或者从已有的资源池里选取合适的 EIP 进行关联[^4]; ```bash # 使用命令行工具 aliyuncli 来获取当前账户下的所有EIP列表 aliyuncli eip DescribeEipAddresses --RegionId cn-hangzhou ``` #### 方法二:通过 API 接口自动完成 除了手动方式之外,也可以利用阿里云提供的 Java SDK 编程接口自动化这一过程。下面是一个简单的例子展示了如何调用 `AllocatePublicIp` 接口为特定 ID 的 ECS 实例请求分配一个临时性的公网 IP 地址[^1]。 ```java // 创建DefaultAcsClient实例并初始化 IClientProfile profile = DefaultProfile.getProfile("<your-region-id>", "<your-access-key-id>", "<your-access-secret>"); IAcsClient client = new DefaultAcsClient(profile); // 构建请求对象 AllocatePublicIpAddressRequest request = new AllocatePublicIpAddressRequest(); request.setInstanceId("i-instanceid"); try { // 发送请求并处理返回结果 AllocatePublicIpAddressResponse response = client.getAcsResponse(request); } catch (ServerException e) { System.out.println(e.getMessage()); } ``` 需要注意的是,以上提到的方式适用于不同的应用场景需求。如果是长期稳定的连接建议优先考虑使用 EIP 方案;而对于短期测试环境或是偶尔需要短时间开放外网访问权限的情况下,可以直接申请一次性的公网 IP
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值