iptables规则的查看、添加、删除和修改

iptables规则管理
本文介绍iptables的基本操作,包括查看、添加、删除和修改规则的方法。涵盖了常用命令及其参数,如-nvL、-A、-I、-D和-R,并通过实例演示了如何应用这些命令。

这里只列出比较常用的查看、添加、删除和修改参数,对于其中的默认策略(policy)的定义、以及其他各种规则如何定制这里暂不讨论。

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。

<think> 嗯,用户正在询问如何使用iptables添加删除secmark。secmark是Linux内核中与安全标记相关的功能,通常用于实现强制访问控制(MAC)如SELinux。让我仔细分析一下。 首先回顾用户提供的引用内容: 引用[1]展示了基础iptables规则查看方式,引用[2]详细说明了iptables语法结构,引用[3]给出了mangle表的标记操作示例,引用[4]则提到-v参数可查看详细规则信息。这些引用虽然没直接说明secmark,但提供了重要背景知识。 用户的核心需求很明确:需要操作secmark而非普通mark。这需要特别注意两点区别:一是secmark针对整个连接而非单个包,二是必须配合CONNMARK使用。根据Linux网络文档,secmark操作通常涉及以下步骤: 1. 在mangle表添加规则设置初始secmark 2. 通过CONNMARK保存到连接追踪 3. 在后续规则中恢复标记 添加secmark时,典型的命令结构应为: ```bash iptables -t mangle -A INPUT -p tcp --dport 80 -j SECMARK --selctx system_u:object_r:httpd_packet_t:s0 ``` 这里关键点是使用-SECMARK而非-SETMARK,且必须指定SELinux安全上下文。 删除操作更复杂些,需要先定位规则位置。可以通过: ```bash iptables -t mangle -L -v --line-numbers ``` 查看规则编号,然后用: ```bash iptables -t mangle -D INPUT [规则编号] ``` 精确删除。特别注意secmark往往关联CONNMARK规则,需同步清理。 用户可能遇到的难点包括:混淆secmark与普通mark的区别,忽略CONNMARK的配套操作,或误删关联规则。考虑在回答中强调这些易错点。 最后需要提醒用户,secmark的实际效果取决于SELinux策略是否启用。如果用户系统未加载相应策略,标记可能不会生效。建议补充验证方法: ```bash conntrack -L ``` 观察连接的安全上下文是否正确应用。 </think> 根据引用内容iptables机制,secmark操作需在**mangle表**中实现,主要通过以下步骤完成: --- ### **一、添加secmark规则** 1. **设置初始secmark**:标记匹配的数据包 ```bash iptables -t mangle -A INPUT -p tcp --dport 80 -j SECMARK --selctx "system_u:object_r:httpd_packet_t:s0" ``` - `-t mangle`:指定操作mangle表(secmark必需) - `--selctx`:定义SELinux安全上下文(需符合策略格式) 2. **保存标记到连接**:将secmark关联到连接追踪 ```bash iptables -t mangle -A INPUT -j CONNMARK --save-mark ``` 3. **恢复标记到后续包**:确保同连接包继承标记 ```bash iptables -t mangle -A INPUT -j CONNMARK --restore-mark ``` --- ### **二、删除secmark规则** 1. **查看规则位置** ```bash iptables -t mangle -L -v --line-numbers # 显示规则序号[^4] ``` 2. **按序号删除规则** ```bash iptables -t mangle -D INPUT 2 # 删除INPUT链第2条规则[^2] ``` 3. **清空整个链**(慎用) ```bash iptables -t mangle -F INPUT # 清空INPUT链所有规则[^2] ``` --- ### **关键说明** 1. **依赖关系** - secmark需SELinux支持,标记格式必须符合已加载策略 - `CONNMARK`配套操作确保标记在连接级别生效[^3] 2. **验证命令** ```bash iptables -t mangle -L -v # 查看计数器验证规则匹配 conntrack -L # 检查连接的安全上下文 ``` > ⚠️ 注意:修改策略后需重新加载规则 `iptables-restore < /etc/sysconfig/iptables` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值