在 Ubuntu 上重新加载/重启 Iptables

在 Ubuntu 上重新加载/重启 Iptables

我以前在 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

在较新的发行版中,您通常有一个前端来配置和管理防火墙。目前最流行的是ufwfirewalld,也许还有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

如何在 ubuntu 16.04 中用 firewalld 替换 iptables?

相关内容