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


    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. 1.INPUT——进来的数据包应用此规则链中的策略
    2. 2.OUTPUT——外出的数据包应用此规则链中的策略
    3. 3.FORWARD——转发数据包时应用此规则链中的策略
    4. 4.PREROUTING——对数据包作路由选择前应用此链中的规则
    5. (记住!所有的数据包进来的时侯都先由这个链处理)
    6. 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阻止直到一个或多个容器停止,然后打印其退出代码

     

  • 相关阅读:
    C# 访问 null 字段会抛异常原因探究
    linux安装redis哨兵
    如何在Mac上清理磁盘空间?
    代码随想录 第八章 二叉树:二叉搜索树
    messageBox的入门学习
    Java面试个人简历
    《价值流动-Project To Product》读后感
    使用U3D、pico开发VR(一)——将unity的场景在设备中呈现
    【OS命令注入】常见OS命令执行函数以及OS命令注入利用实例以及靶场实验—基于DVWA靶场
    Java Double doubleValue()方法具有什么功能呢?
  • 原文地址:https://blog.csdn.net/qq_43636320/article/details/126786740