要让云服务器的某个端口对外开放提供服务,需要同时满足三个条件,从上层云计算平台到下层操作系统应用层排列依次如下。
- 云计算平台的安全组开启相应端口。
- 操作系统的防火墙开启相应端口。
- 正确安装应用程序,并设置相应端口。
下面我们逐条进行分析。
第一,朝暮数据的云服务器除了极个别可用区(如约旦)启用了安全组之外,几乎所有云服务器都未启用安全组,也就是在云计算平台层所有端口都是开放的,因此第一个条件完全满足。
第二,部分云服务器操作系统的防火墙默认是开启的,因此需要关闭防火墙或者在防火墙上单独开启相应的端口。推荐开启防火墙,然后单独开启端口的方式,这样安全性更高。
对于CentOS/Fedora操作系统,防火墙为firewalld,相关命令如下。
关闭并禁用firewalld:
systemctl stop firewalld.service
systemctl disable firewalld.service
单独开启某个端口(以10222端口为例):
firewall-cmd --add-port=10222/tcp --permanent
firewall-cmd --reload
对于Ubuntu/Debian操作系统,防火墙为ufw,相关命令如下。
关闭并禁用ufw:
ufw disable
单独开启某个端口(以10222端口为例):
ufw allow 10222/tcp
ufw reload
第三,远程登录后使用"netstat -nlp | grep 端口号"命令,来检测是否正确安装应用程序并设置相应端口。
以10222端口为例,如果执行下面的命令,显示了相应的端口监听记录,说明应用程序以及端口设置都是正确的。如果没有显示,说明应用程序未正确安装。
[root@zhaomu.com ~]# netstat -nlp | grep 10222
tcp 0 0 0.0.0.0:10222 0.0.0.0:* LISTEN 989/sshd
tcp6 0 0 :::10222 :::* LISTEN 989/sshd
最后再次强调,需要以上三个条件同时满足,某个端口才能对外开放提供服务。可以在客户端电脑上通过"telnet IP地址 端口号"命令,检测端口是否正常提供服务。例如:
telnet 58.215.65.1 10222
另外,由于以下端口容易遭受DDoS攻击,部分云服务器默认禁用以下协议及端口,且无法解除。
- 协议:TCP & UDP,端口:17
- 协议:TCP & UDP,端口:19
- 协议:TCP & UDP,端口:1900
- 协议:UDP,端口:53413
- 协议:UDP,端口:11211
感谢您对我司工作的理解和支持!