码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • docker重启iptables策略失效


    docker重启iptables策略失效

    失效原因

    默认情况下, docker启动后参数中如果加了端口映射, 就会自动将端口开放给所有网络设备访问,并且这种情况下即使在本机的系统防火墙中加规则也无效, 因为docker会自动添加一个优先级最高的针对这个映射端口全开放规则。

    所以在iptables表中添加INPUT链策略限制无效。

    解决方法

    失败

    网上有很多说法是,在docker启动时添加"–iptables=false"参数来禁止docker对本机防火墙的操作。

    # 给docker的启动服务添加"--iptables=false"参数, 禁止docker去操作防火墙
    sed -i  's:^ExecStart=/usr/bin/dockerd.*:ExecStart=/usr/bin/dockerd --iptables=false:g' /lib/systemd/system/docker.service
    systemctl daemon-reload
    systemctl restart docker
    #重启docker后需要重启容器镜像
    docker restart $(docker ps -aq)
    

    这样的操作,确实可以实现当docker启动时阻止docker对防火墙的操作,从而使iptables中的INPUT链策略不失效。

    但是会有新的问题,当访问服务器的web服务时会报502错误
    在这里插入图片描述

    排查原因

    发现iptables中的docker链策略全没了,没有了策略也就阻碍了容器之间的通信,所以看到了上面502的报错。

    [root@gatling01v ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     tcp  --  x.x.x.x              0.0.0.0/0            tcp dpt:22
    ACCEPT     tcp  --  x.x.x.x              0.0.0.0/0            tcp dpt:443
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination         
    [root@gatling01v ~]# iptables -t nat -L
    Chain PREROUTING (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain POSTROUTING (policy ACCEPT)
    target     prot opt source               destination 
    
    成功解决

    如果想着对服务端口进行限制指定IP访问,就必须将策略添加到DOCKER-USER链中。

    示例:只允许1.1.1.1的主机访问本机的443端口

    iptables -I DOCKER  -i eth0 -p tcp --dport 443 -j DROP
    iptables -I DOCKER -i eth0 -s 1.1.1.1 -p tcp --dport 443 -j ACCEPT
    

    如果是多个IP,可以简单写个脚本添加策略:

    #!/bin/bash
    
    nic="eth0"
    
    ips="
    1.1.1.1
    2.2.2.2
    3.3.3.3
    "
    
    iptables -I DOCKER  -i ${nic} -p tcp --dport 443 -j DROP
    
    for ip  in ${ips}
    do
      iptables -I DOCKER -i ${nic}  -s ${ip} -p tcp --dport 443 -j ACCEPT
    done
    
    vim p.sh        #写入脚本
    chmod u+x p.sh  #添加执行权限
    ./p.sh          #执行脚本
    service iptables save  #保存策略
    systemctl restart iptables  #重启iptables使策略生效
    systemctl enable iptables.service  #设置iptables开机自启
    

    测试后发现策略生效。

    参考文章

    【iptables&docker】对运行docker的服务器开启iptables策略

    Linux系统安装docker后,firewall规则无效不起作用

    Docker and iptables

    iptables匹配端口范围,映射,网络状态

    iptables阻止了应用连到 容器化的MySQL

    iptables限制docker端口禁止对某台主机进行提供服务

    iptables限制Docker IP和端口访问

    使用iptables为docker容器配置防火墙策略

    Linux运维实战总结

  • 相关阅读:
    你写过的最蠢的代码是?——全栈开发篇
    [附源码]Java计算机毕业设计SSM高铁乘坐舒适性在线调查及评价系统
    python列出本地文件路径
    这么简单,还不会使用java8 stream流的map()方法吗?
    1067 试密码
    STM32CubeIDE(stm32f767)添加DSP库
    万字C语言之分支语句和循环语句
    什么是域名?如何注册域名?
    Windows开启路由转发功能
    GCC编译
  • 原文地址:https://blog.csdn.net/qq_43665434/article/details/127069813
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号