iptables规则的查看、添加、插入、删除和修改以及删除已有的规则

列出比较常用的参数,详细的请查看man iptables

1、查看
iptables -nvL –line-number

-L 查看当前表的所有规则,默认查看的是filter表,如果要查看NAT表,可以加上-t NAT参数
-n 不对ip地址进行反查,加上这个参数显示速度会快很多
-v 输出详细信息,包含通过该规则的数据包数量,总字节数及相应的网络接口
–line-number 显示规则的序列号,这个参数在删除或修改规则时会用到

2、添加
添加规则有两个参数:-A和-I。其中-A是添加到规则的末尾;-I可以插入到指定位置,没有指定位置的话默认插入到规则的首部。

当前规则:

[root@test ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    DROP       all  --  192.168.1.1          0.0.0.0/0
2    DROP       all  --  192.168.1.2          0.0.0.0/0
3    DROP       all  --  192.168.1.4          0.0.0.0/0

添加一条规则到尾部:

[root@test ~]# iptables -A INPUT -s 192.168.1.5 -j DROP

再插入一条规则到第三行,将行数直接写到规则链的后面:

[root@test ~]# iptables -I INPUT 3 -s 192.168.1.3 -j DROP

查看:

[root@test ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    DROP       all  --  192.168.1.1          0.0.0.0/0
2    DROP       all  --  192.168.1.2          0.0.0.0/0
3    DROP       all  --  192.168.1.3          0.0.0.0/0
4    DROP       all  --  192.168.1.4          0.0.0.0/0
5    DROP       all  --  192.168.1.5          0.0.0.0/0

可以看到192.168.1.3插入到第三行,而原来的第三行192.168.1.4变成了第四行。

3、删除
删除用-D参数

删除之前添加的规则(iptables -A INPUT -s 192.168.1.5 -j DROP):

[root@test ~]# iptables -D INPUT -s 192.168.1.5 -j DROP

有时候要删除的规则太长,删除时要写一大串,既浪费时间又容易写错,这时我们可以先使用–line-number找出该条规则的行号,再通过行号删除规则。

[root@test ~]# iptables -nv --line-number
iptables v1.4.7: no command specified
Try `iptables -h' or 'iptables --help' for more information.
[root@test ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    DROP       all  --  192.168.1.1          0.0.0.0/0
2    DROP       all  --  192.168.1.2          0.0.0.0/0
3    DROP       all  --  192.168.1.3          0.0.0.0/0

删除第二行规则

[root@test ~]# iptables -D INPUT 2

4、修改
修改使用-R参数

先看下当前规则:

[root@test ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    DROP       all  --  192.168.1.1          0.0.0.0/0
2    DROP       all  --  192.168.1.2          0.0.0.0/0
3    DROP       all  --  192.168.1.5          0.0.0.0/0

将第三条规则改为ACCEPT:

[root@test ~]# iptables -R INPUT 3 -j ACCEPT

再查看下:

[root@test ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    DROP       all  --  192.168.1.1          0.0.0.0/0
2    DROP       all  --  192.168.1.2          0.0.0.0/0
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0

第三条规则的target已改为ACCEPT。

iptables规则的删除-怎么删除一条已有的iptables规则

语法是: iptables -D chain rulenum [options]
    其中: chain 是链的意思,就是INPUT FORWARD 之类的定语
    rulenum 是该条规则的编号。从1开始。可以使用iptables -L INPUT --line-numbers列出指定的链的规则的编号来。
 
    所以,例如上面要删除一个INPUT链的规则的话可以这样:
    iptables -D INPUT 3
    意思是删除第3条规则。
 
    还有第二种方法
    第二种办法是 -A 命令的映射,不过用-D替换-A。当你的链中规则很复杂,而你不想计算它们的编号的时候这就十分有用了。
    也就是说,你如何一开始时用iptables -A.... 语句定义了一个规则,那么删除此条规则时直接用 -D 来代替- A, 其余的都不变即可,而不需要什么编号了。
 
    ======================
 
    说一下上面的 --line-numbers 选项,如下面的命令:
iptables -L INPUT --line-numbers  列出INPUT 链所有的规则
num  target    prot opt source              destination        
1    REJECT    tcp  --  anywhere            anywhere            tcp dpt:microsoft-ds reject-with icmp-port-unreachable 
2    REJECT    tcp  --  anywhere            anywhere            tcp dpt:135 reject-with icmp-port-unreachable 
3    REJECT    tcp  --  anywhere            anywhere            tcp dpt:netbios-ssn reject-with icmp-port-unreachable 
4    REJECT    udp  --  anywhere            anywhere            udp dpt:microsoft-ds reject-with icmp-port-unreachable 
5    REJECT    udp  --  anywhere            anywhere            udp dpt:135 reject-with icmp-port-unreachable 
...
...
    删除指定的第4行规则:iptables -D INPUT 4
[root@tp ~]# iptables -F        清除预设表filter中的所有规则链的规则
[root@tp ~]# iptables -X        清除预设表filter中使用者自定链中的规则

<think>好的,用户想删除iptables中的特定规则'-A INPUT -p tcp --dport 16060 -j DROP'。首先,我需要回忆一下iptables删除规则的方法。通常有两种方式:通过规则编号或者通过完全匹配规则命令。 记得用户可以使用iptables -L --line-numbers来查看所有规则及其编号,然后根据链编号用-D选项删除。例如,如果该规则在INPUT链的第3位,就执行iptables -D INPUT 3。但用户需要先确认规则的具体位置。 另外,也可以通过完全复制规则命令来删除,使用iptables -D INPUT -p tcp --dport 16060 -j DROP。过这里要注意,必须完全匹配原规则的参数,否则可能无法正确删除。比如原规则如果有其他选项,比如--syn,或者协议类型,用户也必须加上,否则iptables会识别。 但根据用户提供的规则,看起来是比较简单的,可能可以直接用第二种方法。过需要提醒用户检查是否存在其他类似规则,避免误删。比如如果有多个针对16060端口的规则,可能需要用编号来准确删除。 还要注意,iptables的配置在重启后可能会丢失,除非用户保存了规则。所以删除后,建议用户使用iptables-save或者相应的保存命令,如service iptables save(取决于发行版)来持久化更改。 另外,引用中的内容可能有帮助,比如引用[3]提到用-R来替换规则,但这里用户是要删除。引用[4]提到规则是过滤器,所以删除后相应的端口过滤就会失效,用户需要确认删除后的效果是否符合预期。 总结步骤应该是:先列出规则找编号,再根据编号删除,或者直接匹配规则删除。同时提醒保存设置。可能还需要注意链的名称是否正确,用户提供的规则是在INPUT链,所以需要确认是否在正确的表中,比如filter表,但默认是filter,所以可能需要指定-t filter。 需要确保用户命令正确,比如大小写,参数顺序等,比如--dport-j的位置。另外,如果用户之前添加了多条相同的规则,可能需要多次删除,或者通过编号一次性删除。 最后,生成相关问题的时候,可以考虑iptables的其他操作,如插入规则、保存配置,或者同表的应用,比如nat表等。</think>### 从iptables删除指定规则的方法 要删除添加iptables规则 `-A INPUT -p tcp --dport 16060 -j DROP`,可通过以下两种方式实现: --- #### **方法1:通过规则编号删除** 1. **查看规则编号** 使用 `--line-numbers` 参数列出所有规则并显示编号: ```bash iptables -L INPUT --line-numbers ``` 输出示例: ``` Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- anywhere anywhere tcp dpt:22 2 DROP tcp -- anywhere anywhere tcp dpt:16060 ``` 2. **根据编号删除规则** 假设目标规则编号为 `2`,执行以下命令: ```bash iptables -D INPUT 2 ``` --- #### **方法2:通过规则内容匹配删除** 直接使用与添加规则时相同的语法,将 `-A` 替换为 `-D`: ```bash iptables -D INPUT -p tcp --dport 16060 -j DROP ``` **注意**:必须完全匹配原规则参数(包括协议、端口、动作等),否则删除失败[^4]。 --- #### **验证删除结果** ```bash iptables -L INPUT ``` 确认规则列表中再包含 `tcp dpt:16060` 的条目。 --- #### **保存配置(可选)** 若需永久生效,需保存规则(具体命令因系统而异): - CentOS 6/7: ```bash service iptables save ``` - Ubuntu/Debian: ```bash iptables-save > /etc/iptables/rules.v4 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值