service是firewalld中另一个很是重要的概念。仍是拿门卫的例子来解释。html
在iptables的时代咱们给门卫下达规则时须要告诉他“全部到22号楼的人所有予以放行”、“全部到80号楼的人所有予以放行”等等,ssh
不过到了firewalld的时代就不须要这样了,tcp
而是能够直接下达像“到销售部的所有予以放行”这样的命令,而后门卫再一查发现销售部在80号楼,那么全部到80号楼的人门卫就都会放行了。ide
这里的楼牌号和端口号相对应,部门名和服务名相对应,工具
这样就能够理解service的做用了。this
从端口号改成服务名主要有两个好处:首先是使用服务名配置的语义清晰,不容易出错;其次在对某个服务的端口号进行修改的时候只须要修改相应的service文件就能够了,而不须要再修改防火墙方案——zone。这其实跟DNS将ip地址和域名关联了起来是同样的道理。下面学生再来给你们介绍一下service的配置文件。命令行
service配置文件的命名规则是<服务名>.xml,好比ssh的配置文件是ssh.xml,http的配置文件是http.xml等,他们默认保存在“/usr/lib/firewalld/services/”目录下,code
常见的服务其中均可以找到,server
若是咱们想修改某个服务的配置,那么能够复制一份到“/etc/firewalld/services/”目录下而后进行修改就能够了,要想恢复默认配置直接将咱们本身的配置文件删除就能够了。xml
例:ssh.xml文件
<?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines.
It provides secure encrypted communications.
If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option.
You need the openssh-server package installed for this option to be useful.
</description> <port protocol="tcp" port="22"/> </service>
能够看到这里配置了tcp的22号端口,因此将ssh服务配置到所使用的zone(默认public)中后tcp的22号端口就开放了。
若是想将ssh的端口修改成222,那么只须要将ssh.xml复制一份到“/firewalld/services
”中,而后将端口号修改成222就能够了。
固然直接修改“/usr/lib/firewalld/services/”中的配置文件也能够实现,可是强烈建议不要那么作。
明白原理以后使用起来就能够很是灵活了,
好比咱们将“/etc/firewalld/
services/ssh.xml”文件复制一份到“/etc/firewalld/
services/”中,而后将名字改成abc.xml,
而且将abc这个服务配置到所使用的zone中,这时22端口就会开放。
也就是说在zone中所配置的服务其实跟实际的服务并不存在直接联系,而是和相应配置文件中配置的内容有关系。