Docker容器必备技能 -- iptables

Iptables

介绍

linux的包过滤功能,即linux防火墙,它由netfilter 和 iptables 两个组件组成。
netfilter 组件也称为内核空间,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间,它使插入、修改和除去信息包过滤表中的规则变得容易(服务于四层或四层以下)。

四表五链(只介绍常用的filter和nat)

 

 

filter表

filter表主要是过滤数据包的,IPTABLES几乎所有的数据包过滤都在此表中实现的,filter表也是IPTABLES中默认的表,此表中还包含三个链如下:

1 INPUT链
2   过滤所有的目标地址是本机的数据包
3 FORWORD链
4   过滤所有从本机路过的数据包
5 OUTPUT链
6   过滤所有从本机出去的数据包

 

 nat表

nat表主要是用于做网络地址转换的(NAT),在iptables中可以做SNAT(源地址转换),DNAT(目标地址转换),PANT(即跟SNAT差不多,不一样的是SNAT的源地址是固定的,而PNAT的源地址是不固定的,当使用ppp或pppoe的方式连接互联网的时候一般适应这个) nat表中包含两个链如下:

1 PREROUTING链
2   在数据包到达防火墙的时候改变目标地址 DNAT应用于此链.
3 OUTPUT链
4   可以改变本地产生的数据包的目标地址
5 POSTROUTING链
6    在数据包离开防火墙的时候改变源地址,SNAT应用于次链

 

 注意:防火墙的默认规则是最后匹配

 

iptables工作流程图

 

 

常用命令

查看

iptables -L -n # 查看默认filter表规则详情

iptables -t filter -L -n --line-number| grep -C 10 INPUT

 

添加(所有操作目前只在内存里面,重启就丢失)

# -A 规则添加到末尾
iptables -t filter -A INPUT -p tcp --dprot 180 -j DROP

# -I 默认每次插到首行
iptables -t filter -I INPUT -p tcp --dport 800 -j DROP
# -I INPUT 8 也可以指定插到第几行
iptables -t filter -I INPUT -p tcp --dport 800 -j DROP

# -i 流量的入口 -s 源地址
iptables -t filter -A INPUT -i eth0 -s 10.0.0.104 -j DROP

# ! -s 排除某ip
iptables -t filter -A INPUT -p tcp -i eth0 ! -s 10.0.0.1 -j DROP

# 排除指定网段
iptables -t filter -A INPUT -i eth0 -p tcp ! -s 10.0.0.0/24 -j DROP

 

删除

iptables -F # 清空所有规则,但不包括默认规则

iptables -t filter -D INPUT -p tcp --dport 180 -j DROP

iptables -t filter -D INPUT

 

 默认规则的配置(最后匹配)

iptables -P INPUT DROP

 

posted @ 2020-03-19 15:18  Wshile  阅读(2453)  评论(0编辑  收藏  举报