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中所配置的服務其實跟實際的服務並不存在直接聯繫,而是和相應配置文件中配置的內容有關係。