重启后使用ipset的规则

时间:2016-03-08 17:26:38

标签: debian iptables persistent

我正在使用Debian 8,我有ipset v6.23和iptables v1.4.21。我在rules.v4文件中放了一个带ipset的规则,然后用netfilter-persistent服务重启iptables。当我重新启动时,iptables列表为空。 但是,如果在文件中我没有使用ipset规则,重启后iptables列表是正确的。

任何人都可以帮助我吗?

pd:有问题的规则,

SELECT * FROM [TABLE 1] t1
LEFT JOIN [TABLE 2]  t2
ON t1.[Cost Center] = t2.[Cost Center]
WHERE t1.Category = 'bleh'

当我在重启后执行netfilter-persistent状态时出现下一个错误:

iptables -A OUTPUT -p icmp --icmp-type echo-request -m set --match-set test dst -j DROP

2 个答案:

答案 0 :(得分:0)

netfilter-persistent不保存ipset系统中的值。我不认为有正式的debian方法来保存

我建议您放弃使用netfilter-persistent并手动执行配置。

我在/ etc / network / interfaces

中进行设置
compile ('com.firebaseui:firebase-ui:0.6.0') {
    exclude group: 'com.android.support'
    exclude group: 'com.google.firebase'
    exclude group: 'com.google.android.gms'
}

/ var / lib / iptables / default是使用iptables-save命令转储我的iptables设置。

你需要" up ipset create test hash:ip"

如果您在网络上拥有它,您也需要为IPv6做同样的事情。

答案 1 :(得分:0)

问题

netfilter-persistent 不保存和恢复 ipsets 并且不理解它们,因此在由 test 调用的 iptables-restore 命令期间缺少名为 netfilter-persistent 的 ipset 集。文件 rules.v4 中的 ipset 规则对于 iptables-restore 命令来说只是垃圾。

解决方案 #1 – 简单的

我不知道任何处理这种情况的 Debian 软件包。

您可以手动为 ipsets 安装 netfilter-persistent 插件。

下载:

在 Debian 上将文件 10-ipset 复制到 /usr/share/netfilter-persistent/plugins.d/ 并使其可执行 (# chmod +x 10-ipset)。

您的 ipset 规则将进入 /etc/ipset/rules(对于 dungdm93 的插件)或 /etc/iptables/rules.ipset(对于 freeyoung 的版本)。


解决方案 #2 – DIY(未测试)

您当然可以在没有插件的情况下自行保存和恢复 ipset 规则,但是……您知道:-)

保存 ipset 规则(包括 set create 命令)# ipset save >/etc/iptables/rules.ipset。 编辑 /etc/network/interfaces 文件:

    auto eth0
    iface eth0 inet static
    address …
    netmask …
    gateway …
    …
        pre-up ipset restore </etc/iptables/rules.ipset

这应该有效。但它不会在重启时保存您的 ipset 规则。