在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
相关推荐
源代码•宸1 天前
goframe框架签到系统项目(安装 redis )
服务器·数据库·经验分享·redis·后端·缓存·golang
利刃大大1 天前
【JavaSE】十七、UDP套接字编程 && TCP套接字编程
tcp/ip·udp·套接字
qq_348231851 天前
Kubernetes负载均衡方案详解
容器·kubernetes·负载均衡
weixin_46681 天前
Kubernetes Service
云原生·容器·kubernetes
程序媛青青1 天前
MVCC 原理
服务器·数据库·oracle
翼龙云_cloud1 天前
阿里云渠道商:轻量服务器远程协作性能优化指南
运维·服务器·阿里云·性能优化·云计算
菜鸡的升级之路1 天前
服务器卡死排查流程
运维·服务器
恒创科技HK1 天前
租用日本服务器价格便宜的原因
运维·服务器
FreeBuf_1 天前
新型PCPcat恶意软件利用React2Shell漏洞48小时内入侵超5.9万台服务器
运维·服务器
会飞的小蛮猪1 天前
K8s-1.29.2二进制安装-第二章(K8s及ETCD下载及安装)
云原生·容器·kubernetes·etcd