在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
相关推荐
一叶之秋141212 小时前
通信之道:解锁Linux进程间通信的无限可能(三)
linux·运维·服务器
光泽雨12 小时前
c#MVVM中的消息通知机制
服务器·c#
小小码农Come on13 小时前
QPainter双缓冲区实现一个简单画图软件
linux·服务器·前端
郝学胜-神的一滴13 小时前
深入理解 epoll_wait:高性能 IO 多路复用核心解密
linux·服务器·开发语言·c++·网络协议
小陈99cyh13 小时前
最新ubuntu22.04服务器上安装vmware虚拟机,附vmware的安装包
linux·运维·服务器·vmware
卵男(章鱼)13 小时前
系统终端命令对比大全(Linux发行/macOS/Windows)
linux·运维·服务器·windows·macos
草明13 小时前
Linux主流发行版全面修复Spectre/Meltdown后续漏洞
linux·运维·服务器
HABuo13 小时前
【linux网络(一)】初识网络, 理解协议&四层网络模型&网络传输流程
linux·运维·服务器·网络·c++·ubuntu·centos
Achou.Wang13 小时前
go语言中类型别名和定义类型之间的区别
服务器·golang
cui_ruicheng13 小时前
Linux文件系统(三):VFS 结构与软硬链接详解
linux·运维·服务器