在docker中容器使用iptables限制IP访问端口

CentOS或国产麒麟系统firewalld的底层是使用iptables进行数据过滤,建立在iptables之上,这可能会与 Docker 产生冲突。当 firewalld 启动或者重启的时候,将会从iptables 中移除 DOCKER 的规则,从而影响了 Docker 的正常工作。当你使用的是 Systemd 的时候, firewalld 会在 Docker 之前启动,但是如果你在 Docker 启动之后再启动或者重启 firewalld ,你就需要重启 Docker 进程了。

bash 复制代码
# 停止 Docker
sudo systemctl stop docker

# 清除所有 iptables 规则 
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

# 重启 Docker
sudo systemctl start docker


# 第一阶段:只设置允许规则,不拒绝(测试用)
sudo iptables -F DOCKER-USER
sudo iptables -I DOCKER-USER -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -I DOCKER-USER -p tcp --dport 22 -j ACCEPT

# 添加允许规则
sudo iptables -I DOCKER-USER -s 10.15.230.52 -p tcp --dport 9000 -j ACCEPT
sudo iptables -I DOCKER-USER -s 10.15.230.52 -p tcp --dport 9200 -j ACCEPT
sudo iptables -I DOCKER-USER -s 10.15.230.53 -p tcp --dport 9000 -j ACCEPT
sudo iptables -I DOCKER-USER -s 10.15.230.53 -p tcp --dport 9200 -j ACCEPT

# 测试从允许的IP访问
# 查询添加的规则
sudo iptables -L DOCKER-USER -n --line-numbers
# 如果正常,再进行第二阶段

# 第二阶段:添加拒绝规则
sudo iptables -A DOCKER-USER -p tcp --dport 9000 -j DROP
sudo iptables -A DOCKER-USER -p tcp --dport 9200 -j DROP
相关推荐
Titan202414 分钟前
HTTPS基础知识梳理
服务器·网络·c++·网络协议·学习·http·https
智脑API20 分钟前
CCSwitch Claude Code 如何配置 MCP?服务器启动、工具权限与安全测试
运维·服务器·claude·codex·ccswitch
深念Y26 分钟前
Nuxt 项目 Docker 构建:从 pnpm+node 迁移到全 bun
java·前端·docker
DolitD1 小时前
云流技术深度剖析:单服务器下如何实现3D应用的多实例并发?
java·服务器·前端·3d·云原生·云计算
jun_bai1 小时前
Ecplise中发布项目到配置的tomcat中
java·服务器
芦柑4641 小时前
画布和3D导演台工具:短剧分镜从素材整理到空间预演的完整链路
服务器·前端·数据库
闲云野鹤在人间1 小时前
KVM虚拟化实战|CentOS‑Stream8 两种安装方式+模板制作+基础使用
linux·运维·服务器·centos
小张同学a.1 小时前
Docker 容器实战 2—— docker 仓库
linux·运维·服务器·docker·容器
xieliyu.1 小时前
计算机网络‑IP 协议解析:核心特性总结
网络·笔记·网络协议·学习·tcp/ip·计算机网络
Android系统攻城狮1 小时前
Linux PipeWire深度解析之pw_core_get_registry调用流程与实战(九十一)
linux·运维·服务器·音频进阶·pipewire音频实战进阶