我开始使用 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 - 你应该一切就绪。