iptables和容器Docker命令详细解析--看完秒懂

1 篇文章 0 订阅
1 篇文章 0 订阅

iptables的规则表和链


    表(tables)提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。

 


    链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一 条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据 该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定 义的默认策略来处理数据包。

 

目录

iptables的规则表和链

规则表之间的优先顺序

一、表(tables)

二、规则(rules)

1.规则(rules)

2.规则

三、iptables详细命令解析

三、iptables初始默认解析

四、Docker解析

1. Docker在iptables的filter表中的链在Docker 18.05.0(2018.5)及之后的版本中,提供如下4个chain:

 2.Docker中禁止修改iptables过滤表

3.docker帮助命令大全—help


 

 

 

 


规则表之间的优先顺序

规则表之间的优先顺序 raw——mangle——nat——filter。

 

一、表(tables)

mangle 矫正表
nat 地址转化
filter策略表
raw表只使⽤在PREROUTING链和OUTPUT链上,因为优先级最⾼,从⽽可以对收到的数据包在连接跟踪前进⾏处理。
filter表主要⽤于过滤数据包,该表根据系统管理员预定义的⼀组规则过滤符合条件的数据包。对于防⽕墙⽽⾔,主要利⽤在filter 表中指定的规则来实现对数据包的过滤。
nat表主要⽤于⽹络地址转换NAT,该表可以实现⼀对⼀,⼀对多,多对多等NAT ⼯作,iptables就是使⽤该表实现共享上⽹ 的。
mangle表主要⽤于对指定数据包进⾏更改。
规则表之间的优先顺序 raw——mangle——nat——filter。

 

二、规则(rules)

1.规则(rules)

规则(rules)
ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给任何回应信息。
REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息。
SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题。
MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。
DNAT:目标地址转换。
REDIRECT:在本机做端口映射。
LOG:在/var/log/messages文件中记录日志信息

2.规则

1.INPUT——进来的数据包应用此规则链中的策略
2.OUTPUT——外出的数据包应用此规则链中的策略
3.FORWARD——转发数据包时应用此规则链中的策略
4.PREROUTING——对数据包作路由选择前应用此链中的规则
(记住!所有的数据包进来的时侯都先由这个链处理)
5.POSTROUTING——对数据包作路由选择后应用此链中的规则

 

三、iptables详细命令解析

指令用法:
DOCKER 容器
-A 在指定链的末尾添加(append)一条新的规则
-D 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
列如:删除INPUT链的第一条规则
          iptables -D INPUT 1

-I 在指定链中插入(insert)一条新的规则,默认在第一行添加
-R 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
-L 列出(list)指定链中所有的规则进行查看
-E 重命名用户定义的链,不改变链本身
-F 清空(flush)
-N 新建(new-chain)一条用户自己定义的规则链
-X 删除指定表中用户自定义的规则链(delete-chain)
-P 设置指定链的默认策略(policy)
-Z 将所有表的所有链的字节和数据包计数器清零
-n 使用数字形式(numeric)显示输出结果
-v 查看规则表详细信息(verbose)的信息
-V 查看版本(version)
-h 获取帮助(help)
!可以将条件取反
列如:允许防火墙转发除ICMP协议以外的所有数据包
          iptables -A FORWARD -p ! icmp -j ACCEPT

参数

-P匹配协议,! 表示取反
-s匹配源地址
-D匹配目标地址
-I匹配入站网卡接口
-o匹配出站网卡接口
-sport匹配源端口
-dport匹配目标端口
-src-range匹配源地址范围
-dst-range匹配目标地址范围
-limit四配数据表速率
-mac-source匹配源MAC地址
-sports匹配源端口
-dports匹配目标端口
-stste匹配状态(INVALID、ESTABLISHED、NEW、RELATED)
-string匹配应用层字串

 

 

三、iptables初始默认解析

 

iptables默认规则
*filter

#INPUT规则链默认策略是ACCEPT

:INPUT ACCEPT [0:0]

#FORWARD 规则链默认策略是ACCEPT

:FORWARD ACCEPT [0:0]

#OUTPU 规则链默认策略是ACCEPT
:OUTPUT ACCEPT [0:0]

 

# 允许我发出去的数据包入站
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

 

# 允许ICMP协议
-A INPUT -p icmp -j ACCEPT

 

# 允许回环网卡
-A INPUT -i lo -j ACCEPT

 

# 允许ssh连接
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

 

# 拒绝所有其他不符合上述任何一条规则的数据包。并且发送一条host prohibited的消息给被拒绝的主机
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

 

#表示提交前面的规则设置

COMMIT

 

四、Docker解析

Docker与iptables及实现bridge方式网络隔离与通信

原文链接:https://blog.csdn.net/ystyaoshengting/article/details/102651969

容器和虚拟机的区别对比

23b6a94987d54f1c808c8a132750f5bd.jpeg

 a701aa9265034154a445191bdde9c122.jpeg

 

1. Docker在iptables的filter表中的链
在Docker 18.05.0(2018.5)及之后的版本中,提供如下4个chain:

DOCKER
DOCKER-ISOLATION-STAGE-1
DOCKER-ISOLATION-STAGE-2
DOCKER-USER
目前,Docker默认对宿主机的iptables设置规则完整一览,在/etc/sysconfig/iptables文件中

##地址转发表nat中的规则链及默认
*nat
#PREROUTING规则链默认策略是ACCEPT
:PREROUTING ACCEPT [0:0]
#INPUT规则链默认策略是ACCEPT
:INPUT ACCEPT [0:0]
#OUTPUT规则链默认策略是ACCEPT
:OUTPUT ACCEPT [4:272]
#POSTROUTING规则链默认策略是ACCEPT
:POSTROUTING ACCEPT [4:272]
#DOCKER规则链默认策略是ACCEPT
:DOCKER - [0:0]

#规则表中的链及默认策略
*filter
:INPUT DROP [4:160]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [59:48132]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
#在FORWARD规则链中添加的规则
#数据包全部指定到DOCKER-USER链
-A FORWARD -j DOCKER-USER
 

 2.Docker中禁止修改iptables过滤表


dockerd启动时,参数--iptables默认为true,表示允许修改iptables路由表。

要禁用该功能,可以有两个选择:

设置启动参数--iptables=false
修改配置文件/etc/docker/daemon.json,设置"iptables": "false";然后执行systemctl reload docker重新加载

3.docker帮助命令大全—help

命令帮助文档:Reference documentation | Docker Documentation

命令描述
docker attach将本地标准输入、输出和错误流附加到正在运行的容器
docker build从泊坞文件构建映像
docker builder管理生成
docker checkpoint管理检查点
docker commit根据容器的更改创建新映像
docker config管理容器配置
docker container管理容器
docker context管理上下文
docker cp在容器和本地文件系统之间复制文件/文件夹
docker create创建新容器
docker diff检查对容器文件系统上的文件或目录所做的更改
docker events从服务器获取实时事件
docker exec在正在运行的容器中运行命令
docker export将容器的文件系统导出为 tar 存档
docker history显示图像的历史记录
docker image管理图像
docker images列出图像
docker import从压缩包导入内容以创建文件系统映像
docker info显示系统范围的信息
docker inspect返回有关 Docker 对象的低级信息
docker kill终止一个或多个正在运行的容器
docker load从焦油存档或 STDIN 加载映像
docker login登录到泊坞站注册表
docker logout从泊坞站注册表注销
docker logs获取容器的日志
docker manifest管理 Docker 映像清单和清单列表
docker network管理网络
docker node管理群节点
docker pause暂停一个或多个容器中的所有进程
docker plugin管理插件
docker port列出容器的端口映射或特定映射
docker ps列出容器
docker pull从注册表中拉取映像或存储库
docker push将映像或存储库推送到注册表
docker rename重命名容器
docker restart重新启动一个或多个容器
docker rm删除一个或多个容器
docker rmi删除一张或多张图片
docker run在新容器中运行命令
docker save将一个或多个图像保存到 tar 存档(默认情况式传输到 STDOUT)
docker search在泊坞站中心搜索映像
docker secret管理泊坞站机密
docker service管理服务
docker stack管理泊坞站堆栈
docker start启动一个或多个已停止的容器
docker stats显示容器资源使用情况统计信息的实时流
docker stop停止一个或多个正在运行的容器
docker swarm管理蜂群
docker system管理容器
docker tag创建引用SOURCE_IMAGE的标记TARGET_IMAGE
docker top显示容器的运行进程
docker trust管理对 Docker 映像的信任
docker unpause取消暂停一个或多个容器中的所有进程
docker update更新一个或多个容器的配置
docker version显示泊坞版本信息
docker volume管理卷
docker wait阻止直到一个或多个容器停止,然后打印其退出代码

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值