有没有办法在 RHEL7 中使用firewalld 来保存并运行?

有没有办法在 RHEL7 中使用firewalld 来保存并运行?

我开始使用 RHEL7 并了解一些有关 systemd 带来的变化。

有没有办法/sbin/service iptables save在firewalld 中执行?

$ /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

我从文档中找到最接近的相似之处是--reload

Reload the firewall without loosing state information:
$ firewall-cmd --reload

但它没有明确说明是否保存。

答案1

RHEL 7.0 中的防火墙版本没有“保存”脚本,也无法将正在运行的防火墙配置复制到永久配置。您可以使用防火墙保存防火墙更改,方法是在--permanent命令行中添加进行更改的内容。如果没有它,您所做的任何更改都是临时的,系统重新启动后就会丢失。

例如:

firewall-cmd --add-service=http                 # Running config
firewall-cmd --add-service=http --permanent     # Startup config

更高版本(RHEL 7 之后)的 Firewalld 确实包含一种保存运行配置的方法,现在 Fedora 和在 RHEL 7.1 中。在这种情况下,命令很简单:

firewall-cmd --runtime-to-permanent

答案2

我需要添加 SIP 服务和一些 IP

在目录 /usr/lib/firewalld/services/ 中我添加了sip.xml基于其他 xml 服务文件。

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SIP</short>
  <description>This is SIP, Yo! </description>
  <port protocol="udp" port="5060"/>
</service>

然后我将 SIP 服务添加到防火墙

# firewall-cmd --add-service=sip --permanent 

然后我在 /etc/firewalld/zones/public.xml 中将 IP 添加到服务中

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description></description>
  <service name="dhcpv6-client"/>
  <service name="http"/>
  <service name="ssh"/>
  <service name="https"/>

  <rule family="ipv4">
    <source address="x.x.x.x/32"/>
    <service name="sip"/>
    <accept/>
  </rule>

</zone>

如果添加日志级别,您还可以添加 LOG

  <rule family="ipv4">
    <source address="x.x.x.x/32"/>
    <service name="sip" 
    <log prefix="sip" level="info"/>
    <accept/>
  </rule>

在向区域添加规则后,执行

# firewall-cmd --reload

检查你的 iptables - 你应该一切就绪。

相关内容