iptables
规则?我最近在一系列IP中添加了伪装:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
service iptables save
service iptables restart
哪个已经完成了我想要的操作,但是当我使用时: br />
如何查看规则,包括我添加的规则? (系统为CentOS 6)
#1 楼
使用-L
和--list
选项列出当前的防火墙规则时,还需要指定适当的Netfilter表(filter
,nat
,mangle
,raw
或security
之一)。因此,如果您为nat
表添加了规则,则应使用-t
和--table
选项显式指定此表: :iptables --table nat --list
如果未指定特定表,则将
filter
表用作默认表。对于更快的结果,还可以包括
-n
和--numeric
选项,以打印数字IP地址而不是主机名,从而避免等待反向DNS查找。您可以通过以下方法获取更多信息:包括-v
和--verbose
选项。#2 楼
iptables
控制五个不同的表:filter
,nat
,mangle
,raw
和security
。在给定的调用中,iptables
仅显示或修改这些表之一,这些表由选项-t
的参数指定(默认为filter
)。若要查看防火墙的完整状态,需要依次在每个表上调用iptables
。另外,要获得规则的准确表示,您需要传递选项
-v
。否则,输出中将忽略一些重要的条件,例如过滤器规则中的接口(例如,只能用-v
区分“接受所有内容”的规则和“接受环回接口上的所有内容”的规则)。 /> 因此,要完整了解netfilter规则,您需要
iptables -vL -t filter
iptables -vL -t nat
iptables -vL -t mangle
iptables -vL -t raw
iptables -vL -t security
或者,您可以调用
iptables-save
程序,该程序将显示所有所有表中的规则以iptables-restore
可以解析的格式。这种格式也可以被人类合理地读取(这非常类似于对iptables
命令的一系列调用以构建表)。#3 楼
iptables -S
帮了我大忙。似乎列出了所有活动规则,即使关闭服务也是如此。从手册页:
-S,--list-rules [链]
打印选定链中的所有规则。如果未选择任何链,则所有链都将像iptables-save一样打印。与其他所有iptables命令一样,它适用于指定的表(默认为过滤器)。
#4 楼
我要做的是执行iptables-save > iptables_bckp
,这将备份所有层,然后编辑文件并还原iptables iptables-restore < iptables_bckp
。其中之一而不会丢失您过去的iptables。
评论
这是我到目前为止找到的唯一实际可行的答案,它实际上也转储了所有表。
–克里斯·哈灵顿(Chris Harrington)
17年5月28日在0:50
#5 楼
您可以使用:# lsmod | grep ip_tables
ip_tables 13193 4 iptable_raw,iptable_mangle,iptable_nat,iptable_filter
查找所有表并在表中显示特定规则。
评论
查找表名的更好方法是cat / proc / net / ip_tables_names和cat / proc / net / ip6_tables_names
– Paul Tobias
20-2-5在10:43
#6 楼
iptables
命令还要求您指定表,否则默认为过滤表。因此,请尝试:iptables -t nat -L
#7 楼
如果确实有帮助,您可以编写一个bash脚本并将其放在您的路径引用的文件夹中,或者通过〜/ .bashrc文件中的别名引用它。AllRules.sh
#!/bin/bash
echo "Filter table:"
iptables -t filter -vL
echo "Nat table:"
iptables -t nat -vL
echo "Mangle table:"
iptables -t mangle -vL
echo "Raw table:"
iptables -t raw -vL
echo "Security table:"
iptables -t security -vL
echo
echo "All rules in all tables printed"
请记住要给新的bash脚本执行
chmod
的执行权限。 iptables
命令。#8 楼
iptables -vnxL
iptables -vnxL -tnat
还有可能,尽管很少使用:
iptables -vnxL -traw
iptables -vnxL -tmangle
iptables -vnxL -tsecuriy
评论
这是一个非常糟糕的答案,我也注意到/ sbin / service iptables状态给出了类似的输出
–可爱的香肠
16年4月1日在10:08
+1。在手册页上没有关于它的“似乎”信息:“-S,打印所选链中的所有规则。如果未选择任何链,则所有链都像iptables-save一样打印”。这是我通常需要的。
– Mike S
16年5月11日在21:27
我没有发现这种情况。 iptables -S不会显示我所有的nat规则,运行iptables -L -t nat时可以看到这些规则
– Mulllhausen
17年4月8日在1:34
@MikeS在手册页中,两个命令仅在指定的表上运行,默认情况下进行过滤。 “像其他所有iptables命令一样,它适用于指定的表(默认为过滤器)。”对于-S和-L,文档中的措词几乎相同地被复制,它们的区别仅在于输出格式,而不是打印的规则。至少在Ubuntu 16.04上是如此,在我的系统上是iptables v1.6.0。
–斯科特
17-6-18到3:15
在这里同意@mulllhausen。我需要“ sudo iptables --table nat --list”来显示我的nat表规则。 “ -S”标志本身未显示它们。
– Robert Oschler
17年8月18日在19:54