在docker中调整iptbles白名单限制访问机器

本文介绍了如何通过Docker的iptables规则限制外部IP对容器特定端口的访问,创建了一个包含白名单IP和允许访问端口的脚本,以及注意事项,如新容器需添加策略和宿主机服务的限制方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.docker默认的流量走向

内容参考优快云文章的流程图

根据内容大概得知访问容器内的端口是需要通过DOCKER-USER表,因此限制访问容器端口的白名单IP就可以通过在 DOCKER-USER表中添加规则就可以限制其他IP进行访问

2.牛刀小试
[root@localhost docker_iptables]# ls -l                                                             
total 12                                                                                            
-rw-r--r-- 1 root root  197 Aug 18 17:48 iplist_docker                                              
-rw-r--r-- 1 root root 1678 Aug 18 17:40 iptables_docker_user.sh                                    
-rw-r--r-- 1 root root   33 Aug 18 17:35 port_list
  • iplist_docker 存放限制的IP白名单
10.10.8.2/32                                                                                        
10.10.9.2/32
  • port_list 存放允许白名单访问的容器暴露的端口
9092
19848
3306
18848                                                                                               
15672                                                                                               
9090
  • iptables_docker_user.sh 存放生成iptables的脚本命令
iptables -F DOCKER-USER

for i in `cat iplist_docker`;do iptables -D DOCKER-USER -s $i -p tcp --dport 9092 -j ACCEPT ;done
for i in `cat iplist_docker`;do iptables -D DOCKER-USER -s $i -p tcp --dport 19848 -j ACCEPT ;done
for i in `cat iplist_docker`;do iptables -D DOCKER-USER -s $i -p tcp --dport 3306 -j ACCEPT ;done
for i in `cat iplist_docker`;do iptables -D DOCKER-USER -s $i -p tcp --dport 18848 -j ACCEPT ;done
for i in `cat iplist_docker`;do iptables -D DOCKER-USER -s $i -p tcp --dport 15672 -j ACCEPT ;done
for i in `cat iplist_docker`;do iptables -D DOCKER-USER -s $i -p tcp --dport 9090 -j ACCEPT ;done

for i in `cat iplist_docker`;do iptables -I DOCKER-USER -s $i -p tcp --dport 9092 -j ACCEPT ;done
for i in `cat iplist_docker`;do iptables -I DOCKER-USER -s $i -p tcp --dport 19848 -j ACCEPT ;done
for i in `cat iplist_docker`;do iptables -I DOCKER-USER -s $i -p tcp --dport 3306 -j ACCEPT ;done
for i in `cat iplist_docker`;do iptables -I DOCKER-USER -s $i -p tcp --dport 18848 -j ACCEPT ;done
for i in `cat iplist_docker`;do iptables -I DOCKER-USER -s $i -p tcp --dport 15672 -j ACCEPT ;done
for i in `cat iplist_docker`;do iptables -I DOCKER-USER -s $i -p tcp --dport 9090 -j ACCEPT ;done

for i in `cat port_list`;do iptables -D DOCKER-USER -s 0.0.0.0/0 -p tcp --dport $i -j DROP;done
for i in `cat port_list`;do iptables -A DOCKER-USER -s 0.0.0.0/0 -p tcp --dport $i -j DROP;done

  • 执行 iptables_docker_user.sh 脚本可生成的结果
[root@localhost docker_iptables]# iptables -nvL DOCKER-USER
Chain DOCKER-USER (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  *      *       10.10.9.2            0.0.0.0/0            tcp dpt:9092
    0     0 ACCEPT     tcp  --  *      *       10.10.8.2            0.0.0.0/0            tcp dpt:9092
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:9092
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:19848
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3306
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:18848
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:15672
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:9090
3.注意事项

1). 新建容器后DOCKER-USER会新增一条RETURN的策略在表内最底层,需要将新增容器的访问策略添加到脚本内,执行脚本刷新访问策略
2). DOCKER-USER 只能限制IP访问容器暴露的端口,宿主机的服务无法进行限制,需要通过INPUT进行限制

4.参考链接
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值