在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
相关推荐
TeleostNaCl3 小时前
SMBJ 简单使用指南 实现在 Java/Android 程序中访问 SMB 服务器
android·java·运维·服务器·经验分享·kotlin
weixin_749949903 小时前
当没办法实现从win复制东西到Linux虚拟机时的解决办法
linux·运维·服务器
时空自由民.3 小时前
SC3336 rgb sensor linux
linux·运维·服务器
Cyan_RA94 小时前
Linux 虚拟机软件 VMware Workstation Pro 安装CentOS的相关说明和操作
linux·运维·服务器·centos·vmware·vmtools
okra-4 小时前
文件测试测试用例
java·服务器·eclipse
一只游鱼4 小时前
Web之防XSS(跨站脚本攻击)
运维·服务器·xxs攻击
IT成长日记4 小时前
【LVS入门宝典】LVS NAT模式实战指南:ip_forward、iptables与SNAT、DNAT规则配置详解
linux·运维·tcp/ip·负载均衡·lvs·nat
浙江赛思电子科技有限公司4 小时前
赛思金融授时服务器 从《捕风追影》纳秒困局到数字安全,赛思以全链路时钟同步方案夯实时序安全底座
服务器·科技·网络协议·安全·金融·信息与通信
码路工人4 小时前
第7章:迈向云原生 - Kubernetes 简介
docker·云原生·容器