我以前在 Centos 7 和 Red Hat 上使用 Ubuntu 18.04 时遇到过 iptables 问题,我只需重新启动即可
systemctl restart iptables
但在 Ubuntu 上它不起作用。我在init.d
两个系统下都找不到 iptable。
有人能帮我如何在 Ubuntu 18.04 上重新启动或重新加载它吗?
答案1
编辑:firewalld
默认情况下使用较新版本的 RHEL,Ubuntu 中也可用。
如果您希望您的 Ubuntu 防火墙以与 RedHat/Fedora 类似的方式运行,在 Ubuntu 18.04 20.04 22.04 中,您可能需要这些:
sudo apt install iptables-persistent netfilter-persistent
然后编辑规则/etc/iptables/rules.v[46]
其他可能有用的命令:
netfilter-persistent save
netfilter-persistent start
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
systemctl stop netfilter-persistent
systemctl start netfilter-persistent
systemctl restart netfilter-persistent
如果您发现您的规则在启动时未正确应用,您可以运行以下命令来测试您的配置文件中没有错误:
iptables-restore < /etc/iptables/rules.v4
ip6tables-restore < /etc/iptables/rules.v6
这两个软件包类似,但提供的功能略有不同。如果你只安装iptables-persistent
,你将无法获得 systemd 中正确处理的服务定义文件,例如/lib/systemd/system/netfilter-persistent.service
如果你只安装netfilter-persistent
,你会发现规则在启动时没有正确应用,如 README 中所述
netfilter-persistent and its plugins
------------------------------------
netfilter-persistent does no work on its own. You need the accompanying
plugins (for example, iptables-persistent) to load and save filter rules.
However, commands are run from netfilter-persistent. For example, to save
all filter rules:
netfilter-persistent save
or to load them:
netfilter-persistent start
For more details, see `man netfilter-persistent`.
The system service will try to load rules at startup if enabled, but by
default it will not flush rules at shutdown. This behaviour can be changed
by editing /etc/default/netfilter-persistent.
答案2
在较新的发行版中,您通常有一个前端来配置和管理防火墙。目前最流行的是ufw
和firewalld
,也许还有shorewall
。这些前端还会小心地添加规则iptables
,并且iptables
可以跳过脚本,或者更确切地说应该跳过脚本,因为前端不会iptables
直接获取您使用命令所做的更改。
对于 Ubuntu 18.04,它似乎firewalld
已成为默认ufw
安装但不活动的状态。
root@localhost:~# firewall-cmd --state
running
root@localhost:~# ufw status
Status: inactive
iptables
因此,您应该使用这些前端来创建防火墙配置,而不是创建自己的符合规则。
我不太熟悉,ufw
但你肯定能在这里找到有关 askubuntu 或互联网上其他地方的信息。
firewalld
带有 GUI ( firewall-config
) 和命令行工具firewall-cmd
。
你firewalld
可以选择添加规则而不立即应用它 (永恒的)并仅在防火墙重新加载后应用它。或者你可以将它们添加到你的运行配置,测试它,然后将其添加到您的永久配置中。
要重新加载例如新添加的永恒的配置到您的跑步规则您必须输入如下命令或在 GUI 中执行相应的单击。
firewall-cmd --reload
乍一看,它可能看起来有点复杂,因为firewalld
接下来区域和连锁店概念。但它很好地融入了网络管理器,附带 GUI...
熟悉它的一个好起点是这里。
答案3
您可以使用以下命令检查包的内容:
dpkg -L iptables-persistent
然后你会发现以下命令是正确的:
/etc/init.d/netfilter-persistent restart
答案4
Debian / Ubuntu 没有 iptables 的初始化脚本(与任何 fedora / RHEL / Centos 不同)
你可以写一个脚本或者看看服务器重启时 iptables 会重置
或者使用 UFWhttps://help.ubuntu.com/community/UFW
或者firewalld