在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
相关推荐
嵌入式郑工9 小时前
LINUX驱动开发: 设备和驱动是怎么匹配的?
linux·运维·服务器
马拉萨的春天9 小时前
RTC、UDP、TCP和HTTP以及直播等区别
tcp/ip·udp·实时音视频
rain bye bye10 小时前
calibre LVS 跑不起来 就将setup 的LVS Option connect下的 connect all nets by name 打开。
服务器·数据库·lvs
郭式云源生法则10 小时前
归档及压缩、重定向与管道操作和综合使用,find精确查找、find处理查找结果、vim高级使用、vimdiff多文件使用
linux·运维·服务器
伊成11 小时前
细说Docker命令
docker·容器·eureka
小池先生11 小时前
服务请求出现偶发超时问题,经查服务本身没问题,问题出现在nginx转发。
运维·服务器·nginx
java_logo11 小时前
vllm-openai Docker 部署手册
运维·人工智能·docker·ai·容器
asdfg125896312 小时前
如何判断一个地址是否可以用作主机 IP 地址?
服务器·网络·tcp/ip
jiyuzzz12 小时前
Docker部署WordPress及相关配置
运维·docker·容器
Micro麦可乐12 小时前
Centos Stream 9 中Docker安装出现 download.docker.com:443 的问题解决
linux·docker·centos·podman