当然,你可以选择使用iptables来进行端口开放的操作,但是很多阿里云服务器用户会遇到
-bash: /etc/rc.d/init.d/iptables: No such file or directory
这样致命的错误,这是由于安全组,阿里云亘古不变的安全组开放端口问题。firewalld跟iptables比起来至少有两大好处:
1.firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效。
2.firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和 iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结 构以及使用方法不一样罢了。
firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效。
firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。
firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和 iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结 构以及使用方法不一样罢了。
一、防火墙(firewall)常用命令
开启防火墙:(如报错,参考第三项)
systemctl start firewalld.service
重启防火墙:
systemctl restart firewalld.service
关闭防火墙:
systemctl stop firewalld.service
查看防火墙状态:
systemctl status firewalld #方式一
firewall-cmd --state #方式二
设置firewall开机启动
systemctl enable firewalld
禁止firewall开机启动:
systemctl disable firewalld.service
二、端口开放命令
每次增删端口号都要
重新启动防火墙
才会生效!
查看监听(Listen)的端口
netstat -lntp
检查端口被哪个进程占用
netstat -lnp|grep 8080
开放端口:
firewall-cmd --zone=public --add-port=80/tcp --permanent
#--zone #作用域
#--add-port=80/tcp #添加端口,格式为:端口/通讯协议
#--permanent #永久生效,没有此参数重启后失效
添加区间端口
firewall-cmd --zone=public --add-port=1000-2000/udp --permanent
firewall-cmd --zone=public --add-port=1000-2000/tcp --perman
关闭端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
查看端口号是否开启,运行命令:
firewall-cmd --query-port=6379/tcp
查看已经开放的端口:
firewall-cmd --list-ports
三、 可能会遇到的错误
1.Failed to start firewalld.service: Unit is masked.
(已解决)
firewalld服务被锁定,解决方案如下:
systemctl unmask firewalld #取消服务的锁定
如需锁定服务:
systemctl mask firewalld #锁定服务
2. -bash: /etc/rc.d/init.d/iptables: No such file or directory
(已解决)
阿里云服务器ECS处于安全考虑默认自带安全组(仅开放了22号和3389号端口),Tomcat的默认端口号为8080,所以想使用Tomcat不开放8080端口是不行的。很多用户通过修改iptables来开放8080号端口,结果失败,这是由于安全组,阿里云亘古不变的安全组开放端口问题。
因此,ALIYUN ESC用户不必尝试这个方法了!
!
我们使用iptables来操作服务器端口会遇到这样致命的错误
目前,搜索很多博客,转载尝试比较多的是这一篇:
/etc/rc.d/init.d/iptables: No such file or directory 错误原因