CentOS7:Unit iptables.service not loaded

     今天新租了几台云服务器,配置好环境,先搭建一波Zookeeper集群,像以前搭的机器一样,先关一下防火墙 service iptables stop ,突然报错:Unit iptables.service not loaded.……
在这里插入图片描述
     看到这个报错,瞬间想到了可能是版本问题导致的命令更换,之前一直用的是CentOS6,本次租借的service版本是7,经查证,确实是这个问题。在CentOS7中,防火墙的管理是由firewalld.service来控制的,iptables是版本7以下的管理方式。
**

(一)解决方法

**
【以下命令很多是手写的,所以可能有的空格遗漏,请注意】
针对这个问题,解决方法分为两种:
第一种,按照新的管理机制去进行管理
     区别于iptables service(静态管理防火墙的模式),firewalld.service是一种动态防火墙的管理服务,通过端口的设定可以控制数据的进出、端口的使用。具体操作步骤如下:
开放单一端口:
     firewall-cmd --zone=public --add-port=80/tcp --permanent (–permanent永久生效,确保重启后仍然是有效的)
开放范围端口(如500-1000):
     firewall-cmd --zone=public --add-port=500-1000/tcp –permanent
     注:这里采用的是tcp协议,但也可以采用udp协议

补充:(按需进入)
重新载入
     firewall-cmd –reload(重新加载防火墙,中断用户的连接,将临时配置清掉,加载配置文件中的永久配置)
     firewall–complete-reload(重新加载防火墙,不中断用户的连接,在防火墙出严重故障时使用)
     firewall–panic-on (紧急模式,强制关闭所有网络连接,–panic-off是关闭紧急模式)
查看
     firewall-cmd --zone=public --query-port=80/tcp
删除
     firewall-cmd --zone=public --remove-port=80/tcp --permanent

第二种,还原到旧的操作指令
很多人比较习惯原来的操作命令,第二种方法可以实现。
首先,禁用和注销firewalld防火墙服务:
     systemctl stop firewalld
     systemctl mask firewalld
在这里插入图片描述
其次,安装iptables-services包
     yum install iptables-services
在这里插入图片描述
然后,设置为在服务器启动时自动开启服务
     systemctl enable iptables
在这里插入图片描述
之后,你就按照需要操作防火墙了
     systemctl [stop|start|restart] iptables
     或者
     service [stop|start|restart] iptables
在这里插入图片描述
最后,不要忘记保存一下设置
     service iptables save

PS:如果不放心可以查看一下状态
     service iptables status
在这里插入图片描述
主要看Active的状态就行。

(二)相关说明

     这一部分主要是讲解第一部分解决方法的原理,如果单纯只是想解决手头的问题可以只看第一部分,想扩展一点东西可以看一下这一部分。
1)为什么要关闭防火墙
     本篇博文产生于zookeeper集群搭建时,关闭防火墙报错。防火墙的设立可以给予系统和数据以保护作用,但有时防火墙的存在也会影响我们正常的开发,比如会影响zookeeper这样集群性质的端口通信、数据包接收或是一些基于端口的开发等等。
2)CentOS、RHEL和Fedora
     这三者都是Linux系统的一种,在系统包装方面各自有各自的特点。之所以要提及这三个linux的发行版本是因为在CentOS 7、RHEL7和Eedora中,防火墙的管理都是由firewalld进行管理的。关于Linux系统(内核)和Linux的发行系统的联系和区分请参照我的另外一篇博文。
3)firewalld与iptables的区别
     这部分是我参照了几篇博文结合自己的理解写的,肯定会有些不到位的地方。
     Firewalld(动态防火墙)是CentOS 7开始引进的一种新的防火墙管理机制。但是其核心仍然是基于iptables,底层也是借助于这个为入口的,只不过是其并未安装iptables.service服务,所以我们在解决第一部分问题的还原方法时直接采用的是禁用firewalled服务,然后安装一下iptables的服务就可以采用旧的操作指令来操作防火墙了。
     其实firewalld管理防火墙相对于传统的iptables,最大的特点就是变静态为动态,加入了zone这样一个机制。传统情况下,我们如果业务更替有设立不同防火墙规则的需求时,需要频繁的去手动的设置防火墙的策略规则,体现为先清空旧的规则,再重新加载新的规则;而firewalld动态特点的一个直接体现就是不需要手动去改防火墙的规则,只需要将新的规则替换到运行的iptables中就行(firewall底层仍然是以iptables作为规则管理入口),如何添加呢,这就要提及zone(区域)这样的一个新机制,zone默认是public,但其共有9种类别,每一类别代表了对数据包默认行为的不同(和权限修饰符有类似),不同的zone的设置就可以帮助我们设定不同端口的防火墙策略,这样我们在有更换防火墙策略需求时就可以快速简单的进行设置。
(理论参照:
“https://blog.51cto.com/11638832/2092203”、“https://blog.csdn.net/u013485530/article/details/80906564”)
4)systemctl mask
     之所以补充这一点是因为我在运行systemctl mask firewald时,对mask的作用有点模糊,通过查阅相关资料得到如下总结:
systemctl mask 是注销服务的意思。
注销服务意味着:
     该服务在系统重启的时候不会启动
     该服务无法进行做systemctl start/stop操作
     该服务无法进行systemctl enable/disable操作
5)常用的一些命令
有篇博文已经写的很详细了(https://blog.csdn.net/s_p_j/article/details/80979450)

     其实还想说很多,比如linux内核版本与发行版本、NetFilter和iptables框架、这些不同机制下的防火墙的底层实现流程等等,没有止境,及时刹住……

  • 13
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值