docker环境中宿主机防火墙添加ssh无法生效的问题分析

news2024/11/29 2:58:28

背景

在部署了docker容器的环境中,要在防火墙开通22端口,即ssh服务,以便在终端可以正常登陆。使用firewall-cmd在docker区域添加了22端口,但是没有起作用。后再public区域添加22端口才起作用。为什么docker区域不起作用,而public区域起作用呢?

 

分析

防护墙使用的是firewall管理的,使用下面的命令添加的规则:

firewall-cmd --add-service=ssh --zone=docker

firewall-cmd --reload

添加完后,查看:

firewall-cmd --list-service --zone=docker

结果已经有了ssh,表示添加成功。

 

但是尝试ssh登陆服务器时,还是不行。

通过iptables查看:

iptables -nL

看到这样一条:

509290dd630347af8b67f7b2b6b7a193.png

 

这个链是IN_docker_allow。从这个名字可以推测是INPUT链的子链。从docker可以推测出这是firewall的docker区的规则。最后的allow表示允许。这个说明刚才使用firewall添加的规则是生效了的。但是就是无法ssh登陆。

 

查看当前使用的区:

firewall-cmd --get-active-zone

结果为:

82d4c251e8ae4d31bae11645303a9f79.png 

是我们指定的zone=docker区,那到底是哪里出问题了呢?

 

为了验证问题,我在zone=public中加了同样的规则:

ba3bef2dda084e75accec7b19843b619.png

 

这个时候就可以ssh登陆了。

 

现在来分析一下iptables的规则链。

23db009cdeb941fe861a1f2802d09bc9.png

 

从INPUT开始,找到了INPUT_ZONES为入口的子链。

493767cf71e34ca39e899cdee694aab1.png

 

INPUT_ZONES下有IN_docker和IN_public。按理说IN_docker在前,优先级高,所以在IN_docker上加规则是可以生效的。实际上却是后面的IN_public规则生效了。

 

通过 iptables -nL查看到的规则里,其实并没有看到网卡的信息。所以,我换了一种方法查询:

iptables -S INPUT_ZONES

结果:

20aa3fcae586494cb934f6c46fe5b095.png

 

从原始的规则里可以看出,IN_docker绑定了docker0和br-开头的虚拟网桥,而IN_public没有绑定即默认绑定的是eth0。前面之所以看到有两个IN_docker,是因为这里绑定了两个虚拟网桥。

 

所以ssh到宿主机,经过的是eth0,而不是走虚拟网桥,所以IN_docker规则是不会匹配的,ssh到宿主机需要在IN_public里添加规则,也就是firewall的public区添加规则。如果要ssh到容器中,则需要在对应的虚拟网桥添加。不过因为docker区域已经绑定了两个虚拟网桥,所以只要在docker区中添加规则即可。

 

总结

firewall管理的防火墙规则虽然复杂,但是也不过就是将区域和网卡进行了绑定,然后再建立一系列的子链进行关联。如果发现规则无效,则需要直接查看原始的规则信息,以区分不同的网卡。

来源: http://www.yu7s.com/article/20240326175659891.html

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1560106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法 顺序栈的基本运算

一、实验内容 编写一个程序sqstack.cpp,实现顺序栈的各种基本运算,并在此基础上写一个程序exp6.cpp,实现以下功能 初始化栈s判断栈是否为空依次进栈元素a,b,c,d,e判断栈是否为空输出出栈序列判断栈是否为空释放栈 二、实验步骤 1、sqstack.cpp 2、ex…

windows-MySQL5.7安装

1.安装包下载 https://downloads.mysql.com/archives/community/(社区版下载链接) 选择Archives可以下载历史包,此处使用5.7.43 2.解压文件 解压文件到你指定安装的目录:解压完成后在mysql-5.7.43-winx64下新建文件my.ini和d…

python中的deque详解

文章目录 摘要示例1:基本使用示例2:使用maxlen限制队列长度示例3:使用deque实现滑动窗口算法示例 4: 使用 deque 实现旋转数组示例 5: 使用 deque 实现最大/最小栈示例 6: 使用 deque 实现广度优先搜索(BFS)摘要 deque(双端队列)是Python标准库collections模块中的一个…

从0配置React

在本地安装和配置React项目,您可以使用create-react-app这个官方推荐的脚手架工具。以下是安装React的步骤,包括安装Node.js、使用create-react-app创建React应用,以及启动开发服务器。 下载安装node.js运行以下命令,验证Node.js…

《操作系统导论》第16章读书笔记:分段

《操作系统导论》第16章读书笔记:分段 —— 杭州 2024-03-31 夜 文章目录 《操作系统导论》第16章读书笔记:分段0.前言1.分段:泛化的基址/界限2.我们引用哪个段?3.栈怎么办4.支持共享5.细粒度与粗粒度的分段、操作系统支持6.小结7…

从vrrp、bfd、keepalived到openflow多控制器--理论篇

vrrp 在一个网络中,通常会使用vrrp技术来实现网关的高可用。 vrrp,即Virtual Router Redundancy Protocol,虚拟路由冗余协议。 应用场景 典型的如下面这个例子: 当Router故障后,将会导致HostA-C都无法连接外部的I…

嵌入式linux学习之opencv交叉编译

1.下载opencv源码 OpenCV官方源码下载链接为https://opencv.org/releases/,选择3.4.16版本下载。放在ubuntu系统~/opencv文件夹中,解压缩,opencv文件夹中新建build和install文件夹用于存放编译文件和安装文件: 2. 安装编译工具…

springboot配置文件application.properties,application.yml/application.yaml

application.properties Springboot提供的一种属性配置方式:application.properties 初始时配置文件中只有一行语句。 启动时,比如tomcat的端口号默认8080,路径默认。如果我们要改变端口号及路径之类的可以在application.properties中配置。…

【C语言环境】Sublime中运行C语言时MinGW环境的安装

要知道,GCC 官网提供的 GCC 编译器是无法直接安装到 Windows 平台上的,如果我们想在 Windows 平台使用 GCC 编译器,可以安装 GCC 的移植版本。 目前适用于 Windows 平台、受欢迎的 GCC 移植版主要有 2 种,分别为 MinGW 和 Cygwin…

【算法竞赛进阶指南】0x11 栈

0x11 栈 基础应用 两个栈维护前面区间的最小元素 41. 包含min函数的栈 - AcWing题库 可以开个小根堆维护最小值,但是这样时间是logN的。如果只用一个变量来存,一旦出现了出栈操作就无从下手了。因此用一个线性结构来保存每个历史时刻的最小值。 开两个…

vue3封装Element分页

配置当前页 配置每页条数 页面改变、每页条数改变都触发回调 封装分页 Pagination.vue <template><el-paginationbackgroundv-bind"$attrs":page-sizes"pageSizes"v-model:current-page"page"v-model:page-size"pageSize":t…

常用字符串函数及模拟实现

1.strlen() 用法:求字符串长度 size_t strlen(const char *Str) 参数:字符串的起始地址,可以传地址也可以直接传一个字符串 返回值:字符串长度 模拟实现: 自己实现求字符串长度的函数(三种方法)-CSDN博客 2.strcpy() 用法:拷贝字符串 char* strcpy(char*_Destination,co…

【PduR路由】IPduM模块详细介绍

目录 1.IpduM功能简介 2.IpduM模块依赖的其他模块 2.1RTE (BSW Scheduler) 2.2PDU Router 2.3COM 3.IpduM功能详解 3.1 功能概述 3.2 I-PDU多路复用I-PDU Multiplexing 3.2.1 Definitions and Layout 3.2.2通用功能描述 General 3.2.3模块初始化 Initialization 3.…

fpga_awb

色温: sesor原始图像中的白色如果不经AWB处理&#xff0c;在高色温(如阴天)下偏蓝&#xff0c;在低色温下偏黄。 引入白平衡算法 而AWB的核心就是调整图像色温&#xff0c;使得摄像头采集的图像更加真实&#xff0c;达到人眼观察的效果。 白平衡一般通过调节传感器输出图像RGB…

CCF-CSP19<2020-06>-第1/2题

202006-1 线性分类器 题目&#xff1a;202006-1 题目分析&#xff1a; 给定n个点&#xff0c;并标记为AB两类&#xff0c;问给定直线是否能将其分为两个点集。 简单数学知识&#xff0c;点在直线上满足axbyc0&#xff0c;点在直线割平面所得的上下其值会正负相反。 AC代码…

信息安全技术基础知识总结

一、信息安全基础知识 信息安全基本要素&#xff1a; 1. 机密性&#xff08;C&#xff09;&#xff1a;确保信息不暴露给未授权的实体或进程 2. 完整性&#xff08;I&#xff09;&#xff1a;只有得到允许的人才能修改数据&#xff0c;并且能够判别出数据是否已被篡改 3. 可用性…

大话设计模式之外观模式

外观模式&#xff08;Facade Pattern&#xff09;是一种软件设计模式&#xff0c;旨在提供一个简单的接口&#xff0c;隐藏系统复杂性&#xff0c;使得客户端能够更容易地使用系统。这种模式属于结构型模式&#xff0c;它通过为多个子系统提供一个统一的接口&#xff0c;简化了…

docker无脑部署zabbix6.0+agent

文章目录 前言一、安装docker-compose二、部署Zabbix Server 6.0agent1.创建父目录2.拉取镜像3.编辑docker-compose.yml文件 二、浏览器访问Zabbix1.url栏输入http://ip/2.修改主机配置 总结 前言 随着监控的不断发展&#xff0c;zabbix这门技术也越来越重要&#xff0c;很多人…

PVE设置显卡直通(二:Linux显卡直通,以及Linux系统下安装cuda库)

PVE设置显卡直通(一:硬件设置) 本文仅记录PVE关于Linux下的显卡直通步骤 例程不过多阐述 ps: 无直通经验的同学,先参阅 PVE设置显卡直通(一:硬件设置),再参阅本博文 参阅完成 PVE设置显卡直通(一:硬件设置)后,直接在PVE面板中添加显卡硬件到自己的主机即可,此文中…

【Java与数学】若不等式x^2-a*x+a<0的解集中恰有3个整数,求a的范围?

【分析】 既然不等式存在解集&#xff0c;说明一元二次方程x^2-a*xa0有解&#xff1b; 解之间横跨三个整数&#xff0c;说明Δ大于0&#xff1b; 三个整数必然是连续的&#xff0c;因为f(x)x^2-a*xa最多只与x轴存在两个交点&#xff0c;这是题设里的隐含条件。 【传统解法】…