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应用于次链
扫描二维码关注公众号,回复: 9962800 查看本文章

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

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

猜你喜欢

转载自www.cnblogs.com/Wshile/p/12524525.html