如何找出IPTables规则的存储位置?

我在Debian服务器上工作,我试图找出我的IPTable规则存储在哪里。

从互联网上看,我发现通常有两个地方是通常保存。

http://major.io/2009/11/16/automatically-loading-iptables-on-debianubuntu/build议/etc/network/if-up.d/iptables但该文件不存在于该目录中。

http://beginlinux.wordpress.com/2009/05/26/saving-changes-for-iptables/ /etc/sysconfig/iptables但是/etc/sysconfig目录不存在。

据我所知,以前的pipe理员为了安全起见,将公用文件保存到不同的位置并不罕见,而且我想知道是否有一种方法可以让我find保存规则的位置,当iptables-save命令被使用。 该页面还指出,使用位于/etc/init.d/iptables的脚本来恢复文件,但这也不存在。

有关如何进一步了解规则保存位置的任何帮助或build议? 我知道我可以尝试使用grep来find一个可能位于规则中的罕见的string,但我觉得必须有一个更简单,更直接的方法。

更新:

感谢您的帮助。 我尝试使用grep来search/ etc目录,但花了很长时间,我不想冒内存的风险,所以我就停下了。 我想我会尝试使用strace作为一个不太密集的方法。

从通过strace我看到了线(我把IP地址改为1.1.1.1):

 `open("/etc/protocols", O_RDONLY|O_CLOEXEC) = 5 fstat64(5, {st_mode=S_IFREG|0644, st_size=2859, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7747000 read(5, "# Internet (IP) protocols\n#\n# Up"..., 4096) = 2859 close(5) = 0 munmap(0xb7747000, 4096) = 0 write(1, "-A net2fw -s 1.1.1.1/32 -pt"..., 66) = 66` 

我不是100%确定这是干什么的,但是在我看来,这是它使用来自文件/etc/protocols protocol#5的地方:

st 5 ST # ST datagram mode

读取某些文件的文件统计信息,然后将其读取到内存位置0xb7747000 。 我不确定它从哪里读取,但是它closures协议,从内存取消映射,然后将规则写入文件描述符1

我有多接近正确的阅读? 以及如何找出由1代表的文件?

iptables-persistent wheezy包将规则保存在/etc/iptables/rules.v4

你可以在这里查看包的来源: https : //packages.debian.org/search?keywords=iptables-persistent

需要做一些侦察?

  • 运行“strace iptables-save”并查看输出中是否有该命令打开的文件。 忽略库文件,它打开要读取的文件之一将是您正在寻找的规则集。