文章目录

  • 前言
  • 第一步 配置阿里云安全组
  • 第二步 打开防火墙
  • 第三步 配置防火墙开放端口
  • 第四步 配置防火墙端口转发
  • 第五步 防火墙重新加载配置

前言

最近碰到一个问题,某客户需要从我们的阿里云服务器上下载文件,我们阿里云服务器上提供下载的服务是ftp,端口是默认的21端口,但是客户那边死活下不下来。测试一通后发现,客户那边似乎是禁止了对外网21端口的访问,但是可以访问外网的其他端口。于是想到了用端口转发的方式,尝试在云端做11121端口转发到21端口,该客户访问云端的11121端口下载文件,不影响正在使用ftp服务的其他人。


其实Linux系统的iptables和firewalld防火墙都具备端口转发的功能,但是由于阿里云本来就有安全组的配置,我们服务器上的防火墙就没有启动了。

第一步 配置阿里云安全组

通过阿里云控制台,把11121端口加到安全组中,这一步的作用是允许访问云端的11121端口。没有这一步的话,其他机器是连接不到云端的11121端口的。只配11121是因为其他正在用的端口是以前就已经配置过了。
控制台–>实例–>安全组,然后选择具体的安全组进去,
阿里云服务器配置端口转发-编程知识网
进去之后手动添加–>添加端口–>添加源–>保存
阿里云服务器配置端口转发-编程知识网
这样,阿里云的安全组就配置完成了。

第二步 打开防火墙

云服务器操作系统是CentOS7,自带的防火墙服务是firewalld,直接用

systemctl start firewalld

命令就可以了,当然,得有超级用户权限,用root用户操作。
阿里云服务器配置端口转发-编程知识网
使用 systemctl status firewalld 查看防火墙状态,上图中绿字active (running)就是防火墙正在运行了。

第三步 配置防火墙开放端口

我这里防火墙打开的时候默认ssh服务是允许的,还需要将云服务器对外提供服务的端口都开放,我们对外开放的端口只有21、80、8080和8090。使用命令:

firewall-cmd --add-port=21/tcp --permanent
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --add-port=8090/tcp --permanent

依次将用到的端口开放,–permanent的作用是使策略永久生效,没有此参数重启后失效。
阿里云服务器配置端口转发-编程知识网

第四步 配置防火墙端口转发

以下命令将11121端口的流量转到21端口:

firewall-cmd --add-forward-port=port=11121:proto=tcp:toport=21 --permanent

如下图:
阿里云服务器配置端口转发-编程知识网

第五步 防火墙重新加载配置

以下命令重新加载防火墙配置:

firewall-cmd --reload

当然也可以systemctl restart firewall,直接重启防火墙。
至此全部配置完成,以下命令

firewall-cmd --list-all

查看状态:
阿里云服务器配置端口转发-编程知识网
参考文章:
https://blog.csdn.net/GMingZhou/article/details/78090963
https://wangchujiang.com/linux-command/c/firewall-cmd.html