当前位置: 首页 > news >正文

docker compose配置容器只允许指定的外部IP访问

  1. 系统:Ubuntu 22.04
  2. 要求:容器能访问外网,即允许请求http、https,但外部服务只允许指定ip访问容器A
  3. 踩坑:用Ubuntu自带的ufw是不能设置容器的访问规则的,倘若要用ufw的route规则,则需要关闭docker的iptables配置,如果关闭此配置,则容器无法请求外网。docker链是在UFW之前生效的。

步骤:

配置docker的daemon文件

添加:

{..."iptables": true
}

重新加载daemon并重启docker

1. sudo systemctl reload-daemon
2. sudo systemctl restart docker

配置容器的固定ip

在docker-compose.yaml文件中配置容器的固定ip,后续重启也不会改变。

services:contanier:...networks:engine_network:ipv4_address: 172.20.0.3

检查docker是否启用ip_forwad

cat /proc/sys/net/ipv4/ip_forward
如果输出为0,启用:
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf

检查docker 的iptables规则(此为重点!!!!)

注意: docker开启了iptables是默认有自己的规则的,它会绕过ufw,所以配置ufw是无效的。
可以验证下,执行:

sudo iptables -L DOCKER -n -v

一般会看到类似:
Chain DOCKER (8 references)
pkts bytes target prot opt in out source destination
4 240 ACCEPT tcp – !br-ab83bf174013 br-ab83bf174013 0.0.0.0/0 172.20.0.3 tcp dpt:<容器映射ip>
这条规则直接放行了所有ip对与容器A的访问,完全绕过了UFW。

解决方案:

  • 检查是否有DOCKER-USER链
    sudo iptables -L -n | grep "DOCKER"
    
    若没有则创建:
    	sudo iptables -N DOCKER-USER
    
  • 添加白名单规则
     ## 1. 获取容器A的ipCONTAINER_IP=$(docker inspect <容器名称> -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}')echo "容器 IP: $CONTAINER_IP"
    ## 2. 添加白名单:只允许指定IP访问容器A的端口sudo iptables -I DOCKER-USER -p tcp --dport <容器端口> -s <指定IP> -d $CONTAINER_IP -j ACCEPT
    ## 3. 拒绝其它所有访问容器A的端口的请求sudo iptables -A DOCKER-USER -p tcp --dport 11434 -d $OLLAMA_IP -j DROP
    ## 3.或者是提示用户连接被拒绝而不是超时sudo iptables -A DOCKER-USER -p tcp --dport 11434 -d $OLLAMA_IP -j REJECT --reject-with tcp-reset
    
  • 永久保存规则
    ##	1. Ubuntu/debian使用iptables-persistent## 安装(如果未安装)sudo apt install iptables-persistent -y## 保存规则sudo netfilter-persistent save
    ## 2. 或者手动保存sudo iptables-save > /etc/iptables/rules.v4
    
http://www.dtcms.com/a/541576.html

相关文章:

  • 【postgresql在sql的基础上将frvcd按照逗号分割,核查两个表中frvcd数量是否相同】
  • 考研政治(马原)
  • 电商网站开发工作室商务网站模板
  • 金融交易防护:国密 SSL 证书在网银与移动支付中的核心作用
  • 织梦图片瀑布流网站模板摄影作品发布平台
  • spark-RDD期中
  • Linux 网络初识
  • 易天光通信光模块认证全解析:构建全球品质信任网络
  • 计算机网络自顶向下方法12——应用层 对HTTP响应报文优先次序的答疑
  • 上海企业建设网站服务网站的首页标题在哪里设置的
  • 城市建设规划网站无锡网站建设f7wl
  • 算法题 逆波兰表达式/计算器
  • 智能体最佳实践的方法论(四):监控
  • 【java面向对象进阶】------内部类
  • 基于昇腾 NPU 的 Gemma 2 推理实测:性能评测、脚本实现与可视化分析
  • 南京设计公司郑州粒米seo顾问
  • 承接电商网站建设中文网站模板大全
  • 折半查找及其判定树的性质
  • Day 6 PPI与Cox
  • 网站dns刷新庐江县建设局网站
  • 网站的按钮怎么做 视频3g 手机网站建设
  • 豆包凶猛,深度解析字节AI战略
  • 【案例实战】HarmonyOS云开发实战:5分钟快速构建全栈应用
  • 为什么你的React项目到中等规模就开始“烂尾“?问题可能出在文件结构
  • 做思维导图好看的网站企业网络规划开题报告
  • 企业网站建设合同模板wordpress密码可见
  • 基于 Element Plus 的 TableColumnGroup 组件使用说明
  • 学校网站代码这么做3d网站
  • 国外购物网站系统出入东莞最新通知今天
  • 如何删除 AEDT 中的排队模拟?