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

二手交易网网站建设目标设计公司企业官网

二手交易网网站建设目标,设计公司企业官网,外贸公司网站建设,做的比较好的手机网站一、需求背景 某项目组采用容器化部署架构,通过docker-compose对服务进行编排管理。为确保核心服务安全性,需对以下三个暴露的宿主机端口实施IP白名单访问控制: 服务名称宿主机IP宿主机端口容器内部端口apollo-configservice172.22.33.2041…

一、需求背景

某项目组采用容器化部署架构,通过docker-compose对服务进行编排管理。为确保核心服务安全性,需对以下三个暴露的宿主机端口实施IP白名单访问控制:

服务名称宿主机IP宿主机端口容器内部端口
apollo-configservice172.22.33.204100028080
apollo-adminservice172.22.33.204100038090
apollo-portal172.22.33.204100048070
  • 允许访问的IP白名单地址 172.16.200.200,允许访问apollo 全资源
  • apollo docker-compose 文件
version: '3'services:apollo-configservice:container_name: apollo-configserviceimage: docker.cnb.cool/srebro/apollo:apollo-configservice-2.3.0volumes:- ./logs:/opt/logs- /etc/localtime:/etc/localtime:roports:- "10002:8080"environment:- SPRING_DATASOURCE_URL=jdbc:mysql://172.22.33.201:3306/ApolloConfigDB?characterEncoding=utf8- SPRING_DATASOURCE_USERNAME=srebro- SPRING_DATASOURCE_PASSWORD=srebro@2025- EUREKA_INSTANCE_HOME_PAGE_URL=http://172.22.33.204:10002- EUREKA_INSTANCE_IP_ADDRESS=172.22.33.204- TZ=Asia/Shanghairestart: alwaysnetworks:- srebroapollo-adminservice:depends_on:- apollo-configservicecontainer_name: apollo-adminserviceimage: docker.cnb.cool/srebro/apollo:apollo-adminservice-2.3.0volumes:- ./logs:/opt/logs- /etc/localtime:/etc/localtime:roports:- "10003:8090"environment:- SPRING_DATASOURCE_URL=jdbc:mysql://172.22.33.201:3306/ApolloConfigDB?characterEncoding=utf8- SPRING_DATASOURCE_USERNAME=srebro- SPRING_DATASOURCE_PASSWORD=srebro@2025- EUREKA_INSTANCE_HOME_PAGE_URL=http://172.22.33.204:10003- EUREKA_INSTANCE_IP_ADDRESS=172.22.33.204- TZ=Asia/Shanghairestart: alwaysnetworks:- srebroapollo-portal:depends_on:- apollo-adminservicecontainer_name: apollo-portalimage: docker.cnb.cool/srebro/apollo:apollo-portal-2.3.0volumes:- ./logs:/opt/logs- /etc/localtime:/etc/localtime:roports:- "10004:8070"environment:  - SPRING_DATASOURCE_URL=jdbc:mysql://172.22.33.201:3306/ApolloPortalDB?characterEncoding=utf8- SPRING_DATASOURCE_USERNAME=srebro- SPRING_DATASOURCE_PASSWORD=srebro@2025- APOLLO_PORTAL_ENVS=baseline- baseline_META=http://172.22.33.204:10002- TZ=Asia/Shanghairestart: alwaysnetworks:- srebronetworks:srebro:external: true

二、分析

  • 🚫 使用iptables的方式进行限制。
  • 配置后的策略需要持久化,系统或者容器重启后 策略还在。
  • 查看docker 官方文档,有关于Docker 为网桥网络创建 iptables 规则的说明
  • 默认情况下,允许所有外部源 IP 连接到已发布到 Docker 主机地址的端口;要仅允许特定 IP 或网络访问容器,需要在 DOCKER-USER 过滤器链的顶部插入一条否定规则。
  • 以下规则会丢弃来自除 192.0.2.2 之外的所有 IP 地址的数据包。被这些自定义链中的规则接受或拒绝的数据包将不会被附加到 FORWARD 链的用户定义规则看到。因此,要添加其他规则来筛选这些数据包,使用 DOCKER-USER 链。

image-20250219133550581

三、实现方式

只允许17216.200.200 访问apollo 暴露在宿主机上的 10002,10003,10004 端口

配置iptables 策略

  • ⚠️ 需要注意 ,–dport 指的是容器的端口,而不是宿主机的映射后的端口,网上查看很多资料都是写的宿主机的端口都是不对的,这边只在docker 的论坛看到一个关于--dport 的说明

image-20250219140315839

正确配置方式(推荐两种方法):

iptables -I 是插入到链的最前面,确保每个端口的 ACCEPT 规则在 DROP 规则之前

方法一:为每个端口单独设置规则(清晰直观)
# 先添加拒绝规则
iptables -I DOCKER-USER -p tcp --dport 8080 -j DROP
iptables -I DOCKER-USER -p tcp --dport 8090 -j DROP
iptables -I DOCKER-USER -p tcp --dport 8070 -j DROP# 再添加允许规则(它们会被插入到链的顶部)
iptables -I DOCKER-USER -p tcp --dport 8080 -s 172.16.200.200 -j ACCEPT
iptables -I DOCKER-USER -p tcp --dport 8090 -s 172.16.200.200 -j ACCEPT
iptables -I DOCKER-USER -p tcp --dport 8070 -s 172.16.200.200 -j ACCEPT
方法二:使用 multiport 模块合并规则(更高效)
# 先添加拒绝规则
iptables -I DOCKER-USER -p tcp -m multiport --dports 8080,8090,8070 -j DROP# 再添加允许规则(它会被插入到链的顶部)
iptables -I DOCKER-USER -p tcp -s 172.16.200.200 -m multiport --dports 8080,8090,8070 -j ACCEPT
验证规则顺序

执行以下命令检查规则顺序,确保 ACCEPT 规则在 DROP 规则之上

[root@localhost apollo]# iptables -L DOCKER-USER -n --line-numbers
Chain DOCKER-USER (1 references)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  172.16.200.200       0.0.0.0/0            tcp dpt:8080
2    ACCEPT     tcp  --  172.16.200.200       0.0.0.0/0            tcp dpt:8090
3    ACCEPT     tcp  --  172.16.200.200       0.0.0.0/0            tcp dpt:8070
4    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080
5    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8090
6    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8070
7    RETURN     all  --  0.0.0.0/0            0.0.0.0/0
访问测试

image-20250219144753289

iptables 规则持久化保存
[root@localhost apollo]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]

四、其他

docker 多容器端口相同,怎么限制?

上面的案例,阐述的是,docker 容器里的端口分别是不同的端口,如果我们容器内的端口都是8080,那应该怎么限制呢,典型的场景就是所有微服务的容器端口都是相同的,只是暴露的端口不同

服务名称宿主机IP宿主机端口容器内部端口
apollo-configservice172.22.33.204100028080
apollo-adminservice172.22.33.204100038080
apollo-portal172.22.33.204100048080
使用iptables 限制访问的目的地址

需要提前创建好docker 的网桥,指定容器的网络, ipv4_address: xx.xx.xx.xx

docker-compose.yaml
version: '3'services:apollo-configservice:container_name: apollo-configserviceimage: docker.cnb.cool/srebro/apollo:apollo-configservice-2.3.0volumes:- ./logs:/opt/logs- /etc/localtime:/etc/localtime:roports:- "10002:8080"environment:- SPRING_DATASOURCE_URL=jdbc:mysql://172.22.33.201:3306/ApolloConfigDB?characterEncoding=utf8- SPRING_DATASOURCE_USERNAME=srebro- SPRING_DATASOURCE_PASSWORD=srebro@2025- EUREKA_INSTANCE_HOME_PAGE_URL=http://172.22.33.204:10002- EUREKA_INSTANCE_IP_ADDRESS=172.22.33.204- TZ=Asia/Shanghairestart: alwaysnetworks:srebro:ipv4_address: 10.22.33.66apollo-adminservice:depends_on:- apollo-configservicecontainer_name: apollo-adminserviceimage: docker.cnb.cool/srebro/apollo:apollo-adminservice-2.3.0volumes:- ./logs:/opt/logs- /etc/localtime:/etc/localtime:roports:- "10003:8080"environment:- SPRING_DATASOURCE_URL=jdbc:mysql://172.22.33.201:3306/ApolloConfigDB?characterEncoding=utf8- SPRING_DATASOURCE_USERNAME=srebro- SPRING_DATASOURCE_PASSWORD=srebro@2025- EUREKA_INSTANCE_HOME_PAGE_URL=http://172.22.33.204:10003- EUREKA_INSTANCE_IP_ADDRESS=172.22.33.204- TZ=Asia/Shanghairestart: alwaysnetworks:srebro:ipv4_address: 10.22.33.67apollo-portal:depends_on:- apollo-adminservicecontainer_name: apollo-portalimage: docker.cnb.cool/srebro/apollo:apollo-portal-2.3.0volumes:- ./logs:/opt/logs- /etc/localtime:/etc/localtime:roports:- "10004:8080"environment:  - SPRING_DATASOURCE_URL=jdbc:mysql://172.22.33.201:3306/ApolloPortalDB?characterEncoding=utf8- SPRING_DATASOURCE_USERNAME=srebro- SPRING_DATASOURCE_PASSWORD=srebro@2025- APOLLO_PORTAL_ENVS=baseline- baseline_META=http://172.22.33.204:10002- TZ=Asia/Shanghairestart: alwaysnetworks:srebro:ipv4_address: 10.22.33.68networks:srebro:external: true
配置方式
  • 只允许白名单地址172.16.200.200 可以访问apollo 的1000210004 端口,也就是可以访问 apollo-configserviceapollo-portal服务,其他都不允许访问。
  • 这里的10.22.33.6610.22.33.6710.22.33.68 三个IP 是容器的IP地址, 8080 是容器的端口。三个IP 分别对应 apollo-configserviceapollo-adminserviceapollo-portal服务。
#先添加拒绝规则
iptables -I DOCKER-USER -p tcp --dport 8080 -j DROP# 再添加允许规则(它们会被插入到链的顶部)
iptables -I DOCKER-USER -p tcp -s 172.16.200.200 -d 10.22.33.66 --dport 8080 -j ACCEPT
iptables -I DOCKER-USER -p tcp -s 172.16.200.200 -d 10.22.33.68 --dport 8080 -j ACCEPT
验证规则顺序

执行以下命令检查规则顺序,确保 ACCEPT 规则在 DROP 规则之上

[root@localhost apollo]#  iptables -L DOCKER-USER -n --line-numbers
Chain DOCKER-USER (1 references)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  172.16.200.200       10.22.33.68          tcp dpt:8080
2    ACCEPT     tcp  --  172.16.200.200       10.22.33.66          tcp dpt:8080
3    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080
4    RETURN     all  --  0.0.0.0/0            0.0.0.0/0       
访问测试

image-20250219151828136

iptables 规则持久化保存
[root@localhost apollo]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]

其他方式🚫 限制docker外部IP 访问

1、docker运行在宿主机模式上,直接走宿主机的防火墙或者iptables管理

2、docker 的外部暴露地址监听在 127.0.0.1 上 , 本地再运行一个NGINX 做代理,设置NGINX 白名单

K8S 场景下,怎么限制外部的IP 访问

  • 用clusterip,内部访问没问题,外部走访问nginx的nodeport或者ingress,这样就可以用白名单了

文章转载自:

http://2gDJXLFY.zrdhd.cn
http://6cLkiPU2.zrdhd.cn
http://G0UVrkJl.zrdhd.cn
http://WmnTpy0m.zrdhd.cn
http://8n44tBQW.zrdhd.cn
http://cuyw7KaS.zrdhd.cn
http://Yas4hhCV.zrdhd.cn
http://1KB5EOsy.zrdhd.cn
http://pAur4Yt4.zrdhd.cn
http://Ojp8o9PK.zrdhd.cn
http://EVab7wpc.zrdhd.cn
http://wlvTEO9p.zrdhd.cn
http://Bxmy4YVc.zrdhd.cn
http://PzIBPJhz.zrdhd.cn
http://ygkAa07Y.zrdhd.cn
http://MUu2qQa1.zrdhd.cn
http://b4tPEWOZ.zrdhd.cn
http://0jKc426i.zrdhd.cn
http://mJaxsoC0.zrdhd.cn
http://ogSIxOUi.zrdhd.cn
http://DcVlPUNM.zrdhd.cn
http://mK92fheX.zrdhd.cn
http://U82CIfUT.zrdhd.cn
http://GhsckIhf.zrdhd.cn
http://G1O3HBdH.zrdhd.cn
http://L3a68v4L.zrdhd.cn
http://XvWAhxyF.zrdhd.cn
http://btMlOv1V.zrdhd.cn
http://17BLpffX.zrdhd.cn
http://yIs8vNXm.zrdhd.cn
http://www.dtcms.com/wzjs/669395.html

相关文章:

  • gooood谷德设计网官网泰州网站整站优化
  • 斗鱼网站开发是用什么语言手机网页微信
  • 株洲网站建设 李海口网站模板系统
  • 学做网站学什么语言笔记本做网站服务器
  • 威海建设公司网站网页游戏网络游戏
  • 做任务 网站手机上的编程软件
  • 哪里做网站比较好微网站需
  • 运城市网站建设网站icp备案要多久
  • 网站做留言板怎么清空源码邮箱验证wordpress
  • 西乡做网站哪家便宜购买网站空间的方法
  • 公司想制作网站吗网站建设哪里最好接单子
  • 新网网站制作北京网站空间
  • 珠海网站制作渠道深圳网站建设十强
  • 佛山新网站建设案例响应式网站建设准备
  • 网站名字词聊城网站网站建设
  • 网站建设人员工资飞凡网站建设
  • 网站建设毕业设计过程西安官网seo公司
  • 孟村县网站建设公司wordpress 赢利模式
  • 遵义市播州区住房和城乡建设局官方网站厦门的一个做设计的网站
  • 网站推广培训做框架图的网站
  • 大连网站设计公司排名wordpress响应式网站模板下载
  • 怎么做考试资料网站wordpress 修改邮箱
  • 张家港做淘宝网站推广赚钱小程序
  • 网站备案帐号密码郴州有什么好玩的地方
  • 河南做网站汉狮oa办公软件手机版
  • 杭州餐饮网站建设wordpress 发送请求
  • 网站制作基本流程wordpress自动留言
  • 网站公司logo设计做cpa推广的网站怎么弄
  • 建设银行官方网站下载2021营业执照年检网上申报
  • 用织梦做的网站怎样看万峰科技著.asp.net网站开发四酷全书电子工业出版社