原文地址:http://www.excelib.com/article/291/showhtml
前面学生已经给你们介绍了在firewalld中service的概念以及在zone中怎么使用service,可是service自己怎么配置咱们还没讲,本节学生就来给你们介绍service自己的配置。app
service配置文件
service相对于zone来讲结构要简单的多,其总体配置文件结构以下tcp
1 <service [version="string"]>
2 [<short>short description</short>]
3 [<description>description</description>]
4 [<port [port="portid[-portid]"] protocol="protocol"/>]
5 [<module name="helper"/>]
6 [<destination ipv4="address[/mask]" ipv6="address[/mask]"/>]
7 </service>
firewall-cmd分别提供了两个命令来建立和删除serviceui
1 firewall-cmd --permanent --new-service='service'
2 firewall-cmd --permanent --delete-service='service'
不过咱们若是直接编辑xml文件应该更简单,前面学生给你们介绍service概念的时候已经给你们介绍过了操做service配置文件的方法了,大部分服务在“/usr/lib/firewalld/services/”目录下均可以找到,不过咱们不要直接修改而要复制一份到“/etc/firewalld/services/”中而后再进行修改,固然若是想本身建立一个服务也能够直接在“/etc/firewalld/services/”目录中建立,另外,更好的作法是在“/usr/lib/firewalld/services/”中找一个相似的服务复制一份到“/etc/firewalld/services/”目录中,而后修改文件名和其中的内容。this
下面学生对service中的每一个配置项给你们解释一下spa
version
version是service节点的一个可选属性,用于表示service的版本。.net
short
short在zone、icmptype等配置文件中也存在,其做用是简介,主要是让咱们对所配置的内容有所了解,相似于注释的做用。unix
description
做用跟short相同,不过描述信息更加详细。excel
port
服务所对应的端口,这项是service中很是重要的一个配置项,大部分service主要就是对port进行绑定的,当一个service绑定了指定端口以后,该端口接收到的链接就会当成这个service,而后到所对应的zone中去查询规则,从而判断是否能够放行。code
一个service中能够配置多个port节点,这在有的时候是很是有用的,好比
port节点有两可个配置的属性:port和protocol
port属性
port用来配置所使用的端口号,能够是单个端口也能够是一个端口段,好比port=100-105表示100到105之间的端口号,另外,port属性是个可选属性,能够不进行设置。
protocol属性
protocol属性用于指定所对应的协议,若是port属性不为空,那么protocol应该设置为tcp或者udp,若是port属性为空(没设置),那么protocol能够设置为/etc/protocols中所包含的任意协议。
module
module用于设置netfilter的helper。学生前面给你们介绍过,firewalld实际上是基于netfilter进行工做的,netfilter中的helper主要用于链接的跟踪,这样就能够实现“有状态的防火墙”,也就是将相关的链接管理到一块儿。一个典型的例子就是ftp的链接,咱们知道通常来讲ftp使用的是21号端口,不过21号端口主要是用来传输命令的,实际传输文件又会使用一个其余的端口,不过这两个链接还有内在的联系,这种状况就可使用netfilter中的helper来处理,在咱们这里service中就是module节点。咱们看一下firewalld默认给咱们提供的ftp的service配置文件ftp.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <service>
3 <short>FTP</short>
4 <description>FTP is a protocol used for remote file transfer. If you plan to make your FTP server publicly available, enable this option. You need the vsftpd package installed for this option to be useful.</description>
5 <port protocol="tcp" port="21"/>
6 <module name="nf_conntrack_ftp"/>
7 </service>
这里就使用了nf_conntrack_ftp这个helper,关于netfilter中helper的更多详细内容你们能够查看学生在参考文献中给你们列出的两个连接地址。
destination
destination很是简单,他就表示目标地址,也就是根据目标地址来绑定服务,他有两个属性:ipv4和ipv6,分别用于绑定ipv4和ipv6的地址,可使用单个地址也可使用掩码。
另外,在一个service中destination最多只能出现一次。
使用service
编辑完service配置文件后咱们就能够在zone中使用了,具体使用方法学生在前面已经给你们介绍过,这里就再也不重述了。
参考文献
一、http://blog.chinaunix.net/uid-23069658-id-3169450.html 二、http://blog.csdn.net/appletreesujie/article/details/6838218