iptables常用命令汇总

内容分享8小时前发布
0 0 0

今天分享一下iptables知识点和常用命令。

现在redhat系统默认使用firewalld,ubuntu默认使用ufw防火墙,为什么还要学iptables呢,

还有其他应用场景,比如容器环境,Docker 默认直接管理 iptables 规则来实现网络隔离和端口映射。即便使用 firewalld,Docker 也会绕过它直接插入 iptables 规则(除非做特别配置)

接下来将详细介绍一下iptables:

官网: https://www.netfilter.org/

iptables全称为netfilter/iptables, 是linux平台下自带的的开源包过滤防火墙。

1 iptables结构

四张表作用

filter: 实现对数据包的过滤

nat: 主要修改数据包的地址和端口,实现网络转换功能,例如源地址或目标地址

mangle:对数据包进行修改,例如给数据包打标记MARK

raw:关闭nat表上启用的连接追踪机制

五条链作用

INPUT: 进来的包

OUTPUT: 出去的包

FORWARD: 经过的包

PREROUTING: 路由选择前, 主要用于DNAT

POSTROUTING: 路由选择后, 主要用于SNAT

iptables常用命令汇总

2 Iptables基本语法

2.1 常见语法格式:

iptables常用命令汇总

2.2 常见参数表

常见参数 说明
-t 后接表名,指定对哪张表进行操作。如果不加-t指定表,则默认为filter表
-A 后接链名,指定对哪个链增加一条规则。默认增加在最后一条。
-I(大写i) 后接链名,指定对哪个链插入一条规则。默认插入在最前面,也可以指定插入在某一行。
-D 删除规则,指定删除某一条规则
-L 列表规则。可以与-n结合使用,将规则以数字方法显示
-F 清空规则,删除一个表的所有规则
-p 指定协议(包过滤常见条件)
-s或-d 指定源IP或目标IP(包过滤常见条件)
–dport 指定目标端口(包过滤常见条件)
–sport 指定源端口
-i 接网卡接口, 进入的网卡接口(用于DNAT)
-o 接网卡接口, 出去的网卡接口(用于SNAT)
-j 后接动作
-P 修改默认策略

2.3 常见动作表

-j后接的动作类型 说明
ACCEPT 允许
DROP 丢弃
REJECT 拒绝,REJECT会返回错误信息,DROP不会
SNAT 源地址转换,它与MASQUEREAD的区别是SNAT是接一个固定IP
MASQUEREAD IP地址伪装,使用NAT转换成外网IP,可以PPP拔号(外网IP不固定情况)
DNAT 目标地址转换

3 常用命令

3.1 查看iptables规则

1、查看所有规则

【查】看对应表的所有规则,-t 选项指定要操作的表,省略” -t 表名”时,默认表示操作filter表,-L表示列出规则,即查看规则,格式如下:



iptables -t 表名 -L
 

2、查看指定表的指定链中的规则


iptables -t 表名 -L 链名

3、查看指定表的所有规则,并且显示更详细的信息(-v 更多字段)


iptables -t 表名 -v -L

4、表示查看表的所有规则(-n 不解析IP地址)

表示查看表的所有规则,并且在显示规则时,不对规则中的IP或者端口进行名称反解,-n选项表示不解析IP地址。


iptables -t 表名 -n -L

3.2 iptables规则

【温馨提示】添加规则时,规则的顺序非常重要。

1、指定表的指定链的尾部添加一条规则(-A)

【温馨提示】省略-t选项时,表示默认操作 filter表中的规则



iptables -t 表名 -A 链名 匹配条件 -j 动作
 
iptables -t filter -A INPUT -s 10.0.0.100 -j DROP

2、指定表的指定链的首部添加一条规则(-I)



iptables -t 表名 -I 链名 匹配条件 -j 动作
 
iptables -t filter -I INPUT -s 10.0.0.100 -j ACCEPT

3、在指定表的指定链的指定位置添加一条规则



iptables -t 表名 -I 链名 规则序号 匹配条件 -j 动作
 
iptables -t filter -I INPUT 5 -s 10.0.0.100 -j REJECT

4、指定表的指定链的默认策略(默认动作),并非添加规则



iptables -t 表名 -P 链名 动作
 
iptables -t filter -P FORWARD ACCEPT

【温馨提示】上例表示将filter表中FORWARD链的默认策略设置为 ACCEPT

3.3 删除iptables规则

【温馨提示】注意点:如果没有保存规则,删除规则时请慎重。

1、按照规则序号删除规则

按照规则序号删除规则,删除指定表的指定链的指定规则,【-D】选项表示删除对应链中的规则。



iptables -t 表名 -D 链名 规则序号
 
# 删除filter表中INPUT链中序号为3的规则
iptables -t filter -D INPUT 3

2、按照具体的匹配条件与动作删除规则,删除指定表的指定链的指定规则



iptables -t 表名 -D 链名 匹配条件 -j 动作
 
# 删除filter表中INPUT链中源地址为10.0.0.100并且动作为DROP的规则。
iptables -t filter -D INPUT -s 10.0.0.100 -j DROP

3、删除指定表的指定链中的所有规则(-F)

【-F】选项表示清空对应链中的规则,执行时需三思。



iptables -t 表名 -F 链名
 
iptables -t filter -F INPUT

4、删除指定表中的所有规则



iptables -t 表名 -F
 
iptables -t filter -F

3.4 iptables规则

【温馨提示】如果使用-R选项修改规则中的动作,那么必须指明原规则中的原匹配条件,例如源IP,目标IP等。

1、修改指定表中指定链的指定规则(-R)

修改指定表中指定链的指定规则, -R选项表示修改对应链中的规则,使用 -R选项时要同时指定对应的链以及规则对应的序号,并且规则中原本的匹配条件不可省略。



iptables -t 表名 -R 链名 规则序号 规则原本的匹配条件 -j 动作
 
iptables -t filter -R INPUT 3 -s 10.0.0.100 -j ACCEPT

表示修改filter表中INPUT链的第3条规则,将这条规则的动作修改为ACCEPT, -s 10.0.0.100为这条规则中原本的匹配条件,如果省略此匹配条件,修改后的规则中的源地址可能会变为0.0.0.0/0。

其他修改规则的方法:先通过编号删除规则,再在原编号位置添加一条规则。

2、修改指定表的指定链的默认策略(默认动作)



iptables -t 表名 -P 链名 动作
 
iptables -t filter -P FORWARD ACCEPT

3.5 保存iptables规则

保存规则命令如下,表示将iptables规则保存至 /etc/sysconfig/iptables文件中,如果对应的操作没有保存,那么当重启iptables服务以后就不存在了。


service iptables save

或者使用下面方法保存


iptables-save > /etc/sysconfig/iptables

3.6 基本匹配条件

1、用于匹配报文的源地址(-s)



iptables -t filter -I INPUT -s 192.168.1.111,192.168.1.118 -j DROP
iptables -t filter -I INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -t filter -I INPUT ! -s 192.168.1.0/24 -j ACCEPT

2、用于匹配报文的目标地址(-d)



iptables -t filter -I OUTPUT -d 192.168.1.111,192.168.1.118 -j DROP
iptables -t filter -I INPUT -d 192.168.1.0/24 -j ACCEPT
iptables -t filter -I INPUT ! -d 192.168.1.0/24 -j ACCEPT

3、用于匹配报文的协议类型(-p)



iptables -t filter -I INPUT -p tcp -s 10.0.0.100 -j ACCEPT
iptables -t filter -I INPUT ! -p udp -s 10.0.0.100 -j ACCEPT

4、用于匹配报文是从哪个网卡接口流入本机的(-i)



iptables -t filter -I INPUT -p icmp -i eth4 -j DROP
iptables -t filter -I INPUT -p icmp ! -i eth4 -j DROP

iptables实际是很复杂的,四表五链都需要理解一阵子,还要记住参数和动作,需要不断是实际工作中去尝试,由于篇幅问题,还有很多实际的案例没列出来,后续再进行分享,先学习基础的。

© 版权声明

相关文章

暂无评论

none
暂无评论...