iptables常用命令

A. 常用命令详解

A.1. 查看当前规则集的命令

查看当前正在使用的规则集是一个十分常用的操作,使用iptables的什么命令还记得吗?我们可是在规则是如何练成的这一章里介绍过啊,虽然到时说得简单了点。再复习一下吧,命令语法如下:

iptables -L

这个命令会尽可能地以易读的形式显示当前正在使用的规则集。比如,它会尽量用文件/etc/services里相应的名字表示端口号,用相应的DNS记录表示IP地址。但后者可能会导致一些问题,例如,它想尽力把LAN的IP地址(如192.168.1.1)解析成相应的名字。但192.168.0.0/16这个网段是私有的,也就是说,它只能用在局域网里,而不能在Internet里使用,所以它不会被Internet上的DNS服务器解析。因此,当解析这个地址时,命令就好像停在那儿了。为了避免这种情况的发生,我们就要使用选项:

iptables -L -n

如果你想看看每个策略或每条规则、每条链的简单流量统计,可以在上面的命令后再加一个verbose标志,如下:

iptables -L -n -v

不要忘了,iptables -L命令还可以查看nat表和mangle表的内容哦(更不要忘了,默认的表是filter),只需要使用-t选项,比如我们只想看nat表的规则,就用下面的命令:

iptables -L -t nat

/proc里,可能还有一些文件你会感兴趣。比如,你可以在连接跟踪记录表里看到当前有哪些连接。这个表包含了当前的所有连接,你还可以通过它了解到每个连接处于什么状态。要注意,这个表是不能编辑的,即使可以,也不应该更改它。可以用下面的命令查看这个表:

cat /proc/net/ip_conntrack | less

此命令会显示当前所有被跟踪的连接,但要读懂那些记录可是有些难度哦。


A.2. 修正和清空iptables的命令

即使你把iptables弄的一塌糊涂,我们也有非常有效的命令来处理,而不必重新启动计算机。我接到过很多关于这个问题的询问,所以我想最好在这儿回答一下。如果你增加的规则有问题,要想删掉它,只要把命令中的-A改为-D即可。这样,iptables就会找到那个错误的规则并删掉它,但如果在你的规则里有好几条同样的规则,它只能删掉找到的第一条。如果你不想这样的事情发生,那就试试用序号来删除。如,你想删除INPUT链的第10条规则,可以使用 iptables -D INPUT 10

还有一种情况,就是要清空整个链,这就要使用选项-F。比如,我们要清空整个 INPUT链,使用的命令就是iptables -F INPUT。但是要注意,选项-F并不改变链的缺省策略。所以,如果被我们清空的那条INPUT链的策略是DROP,它还是会阻塞所有的包。那怎么才能重置策略呢?还记得策略DROP是如何设置的吧,还是用那个方法啊。比如,我们把INPUT链的策略改为ACCEPT,就用iptables -P INPUT ACCEPT

我已经写了一个用来清空并重置iptables的脚本,叫做rc.flush- iptables.txt(附录里有它的代码),在你写自己的防火墙脚本时,很可能会用到。但如果你在mangle表里乱试乱改而导致问题的话,这个脚本就帮不上忙了。因为在脚本rc.firewall.txt里,我没有用到mangle表,所以在 rc.flush-iptables.txt里也就没有添加相应的恢复功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值