docker容器内彻底移除iptables服务的实现方法

背景

我创建的容器使用的是centos6的标准镜像,所以内置了iptables服务。容器启动后iptables服务默认就启动了。iptables设置的规则默认是所有流量都无法通行。而对于服务器的管理使用的是宿主机的防火墙。这样就导致在实现用iptables动态给容器添加端口映射时不成功的现象,后来发现是容器内的防火墙阻断了。因为容器的防火墙和宿主机的防火墙会同时起作用,在设置防火墙有关的规则时经常会遇到问题,需要将容器内外的防火墙都进行设置。甚至会造成防火墙管理上的混乱。即使将防火墙设置为开机不自启,也关闭了防火墙服务。但是无法保证人为手动重启过防火墙或某些进程会重启防护墙,从而导致防火墙管理的规则出现问题。所以最好的办法就是干掉防火墙。

 

分析

iptables 是 Linux 操作系统中用于配置和管理网络防火墙规则的工具。它允许管理员定义规则集,以控制网络流量的传入、传出和转发。iptables 主要用于实现网络安全策略,如阻止未经授权的访问、过滤恶意流量、实现端口转发等。

 

iptables是Linux内置的工具,iptables管理的系统的防火墙使用了一个iptables的伪服务程序(真服务程序是后台常驻的,这个没有常驻)。所以在卸载上会比较麻烦。iptables服务只是一组脚本而已。关于防火墙服务的概念的理解,请阅读《一文讲明白iptables和firewall的区别》。

 

iptables的服务的配置文件在:/usr/lib/systemd/system/iptables.service

文件内容:

[Unit]                                                                                                                                                                                                              

Description=IPv4 firewall with iptables

After=syslog.target

AssertPathExists=/etc/sysconfig/iptables

 

[Service]

Type=oneshot

RemainAfterExit=yes

ExecStart=/usr/libexec/iptables/iptables.init start

ExecReload=/usr/libexec/iptables/iptables.init reload

ExecStop=/usr/libexec/iptables/iptables.init stop

Environment=BOOTUP=serial

Environment=CONSOLETYPE=serial

 

[Install]

WantedBy=basic.target

iptables这里的服务使用的是/usr/libexec/iptables/iptables.init 脚本。因为iptables只是使用这个脚本模拟的服务的操作,所以感觉似乎iptables服务是真实的,但是iptables并没有常驻的后台进程。

 

换句话说,iptables的服务只是操作上和服务一样,便于操作和管理。iptables有一个二进制的命令文件。再配合这个模拟的服务配置iptables.service ,这个配置里使用了iptables.init 脚本,实现了服务的启停等操作。

 

所以,我们要彻底停止iptables服务,不能像卸载软件那样来操作。

 

彻底移除iptables服务的方法:

1. 停止已运行的iptables服务

systemctl stop iptables  # centos7

service iptables stop  # centos6

停止iptables服务并不是真停止iptables服务,而是通过iptables解除内核的防火墙钩子,取消对流量的过滤功能。如果不先取消,直接移除服务,其实防火墙钩子没有解除,依然会对流量进行过滤。

 

2.禁止服务开机启动

systemctl disable iptables # centos7

rm -f /etc/systemd/system/basic.target.wants/iptables.service  # centos6

iptables的开机启动是在/etc/systemd/system/basic.target.wants目录中添加了一个软链文件:

/etc/systemd/system/basic.target.wants/iptables.service -> /usr/lib/systemd/system/iptables.service

这个软链指向了/usr/lib/systemd/system/iptables.service,就是开头说的服务配置文件。

centos6中没有systemctl命令,service不支持disable,所以直接手动删除一下即可,效果一样。

禁止开启启动是免得每次开机都有报错。

 

3.移除iptables服务的配置文件

mv /usr/lib/systemd/system/iptables.service /usr/lib/systemd/system/iptables.service.bak

你可以使用rm命令删除,也可以使用mv命令更换名字。反正只要默认的标准文件名称的文件不存在就行了。

 

这样操作之后,再也启动不了iptables服务了,查看服务的状态:

c5ed66d7998c436fbfc0c08c8f58ccf8.png

 

 

服务的启动状态为fail。当然这个并不影响iptables命令的执行,因为它是二进制文件。我们只要断开了iptables操作系统内核的防火墙钩子就行了,不必删除iptables命令。

 

现在就再也不怕手动不小心启动了iptables服务,也不怕其他进程启动了防火墙了。那么我们只需要管理宿主机的防火墙即可。

 

总结

容器和宿主机都有防护墙,不仅会增加管理的复杂度,而且很容易出错。不仅如此,在设置防火墙规则给容器做动态端口映射时,还会被容器内的防护墙阻断。所以为了彻底规避这个问题,避免因为容器重启后或者其他进程启动了防火墙,我们直接彻底移除iptables防火墙,就可以防患于未然了。


原文地址: http://www.yu7s.com/article/20240418111446390.html

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

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

相关文章

coredns部署

coredns部署 coredns部署 一:coredns-rbac.yaml apiVersion: v1 kind: ServiceAccount metadata:name: corednsnamespace: kube-systemlabels:kubernetes.io/cluster-service: "true"addonmanager.kubernetes.io/mode: Reconcile --- apiVersion: rbac…

如何对同一docker注册表使用多个身份验证/登录

常用容器登录方式 # 公共变量 REGISTRY"registry.cn-chengdu.aliyuncs.com"new_docker_username"root" new_docker_password"password" # 登录新的Docker账号 docker login -u "$new_docker_username" -p "$new_docker_password…

定时备份mysql数据库

最近在带linux CentOS7.8操作系统的服务器里误删了my sql数据库,恢复起来比较麻烦。还好有一个3月5号该数据库的备份,于是用3月5号的备份恢复了数据库的大部分内容。为了减少以后出现同样问题的损失,打算定时备份mysql数据库。在网上搜了一下…

计算机网络 2.3数据交换技术

第三节 数据交换技术 定义:两台计算机利用通信线路,通过多个转接节点,进行发送的数据通信方式。 一、电路交换 1.描述:通过网络节点在工作站之间建立专用的通信通道,即建立实际的物理连接。 2.过程:电路建…

Hive服务详解

Hive服务 HiveServer2、Hive Metastore 服务服务共同构成了 Hive 生态系统中的核心功能,分别负责管理元数据和提供数据查询服务,为用户提供了一个方便、高效的方式来访问和操作存储在 Hive 中的数据。 1. Hive 查询服务(HiveServer2&#xf…

关于路由过滤、路由策略的实验eNSP

具体接口IP地址如下图所示 第一步:配置IP R1: [R1]int g 0/0/0 [R1-GigabitEthernet0/0/0]ip ad [R1-GigabitEthernet0/0/0]ip address 100.1.1.1 24 Apr 23 2024 19:35:38-08:00 R1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP on the interface Giga…

【论文笔记】RS-Mamba for Large Remote Sensing Image Dense Prediction(附Code)

论文作者提出了RS-Mamba(RSM)用于高分辨率遥感图像遥感的密集预测任务。RSM设计用于模拟具有线性复杂性的遥感图像的全局特征,使其能够有效地处理大型VHR图像。它采用全向选择性扫描模块,从多个方向对图像进行全局建模,从多个方向捕捉大的空间…

【快速入门 LVGL】-- 5、Gui Guider界面移植到STM32工程

上篇,我们已学习:【快速入门 LVGL】-- 4、显示中文 工程中添加了两个按钮作示范。运行效果如图: 本篇:把Gui Guider设计好的界面,移植到STM32工程。 特别地: 在使用Gui Guider进行界面设计时,应…

数学分析复习:一元单调函数的不动点定理

文章目录 一元单调函数的不动点定理 本篇文章适合个人复习翻阅,不建议新手入门使用 一元单调函数的不动点定理 定理 设函数 f f f 在区间 [ a , b ] [a,b] [a,b] 上单调递增,且 f ( a ) ≥ a , f ( b ) ≤ b f(a)\geq a,f(b)\leq b f(a)≥a,f(b)≤b&…

微信小程序 讯飞录音 点击按钮录音内容转文字

<page-meta page-style"{{ showPolish ? overflow: hidden; : }}" /> <view class"wrap"> <view class"header-tab" style"justify-content: {{typeList.length > 2 ? start : center}}"><view class&quo…

S-Edge网关:柔性部署,让物联网接入更统一

S-Edge网关是什么&#xff1f; 网关是在实际物理世界与虚拟网络世界相连接的交叉点&#xff0c;为了让这个交叉点尽可能的复用&#xff0c;无需每种设备都配套一种连接方式&#xff0c;边缘网关主要就是用于传感器等物理设备与网络实现数据交互的通用设备&#xff0c;也称为物…

贪心算法-活动安排问题和背包问题

实验6贪心算法-活动安排问题和背包问题 实验目的&#xff1a; 理解贪心算法的基本思想运用贪心算法解决实际问题 实验内容&#xff1a; 采用贪心方法编程实现以下问题的算法 1.如何安排下列活动使得使用的活动场所最少&#xff0c;并给出具体的安排方法。 活动 a b c …

Leetcode算法训练日记 | day34

专题九 贪心算法 一、K次取反后最大化的数组和 1.题目 Leetcode&#xff1a;第 1005 题 给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个…

ubuntu2004,自动安装mysql5.7.37

操作系统版本&#xff1a;ubuntu20.04.3 脚本&#xff0c;将自动优化ubuntu系统和自动下载安装mysql5.7.37 脚本如下: #!/bin/bash# 软件源设置 sudo cp /etc/apt/sources.list{,.bak} sudo tee /etc/apt/sources.list << EOF #阿里云Mirrors - Ubuntu deb http://mir…

【大语言模型LLM】- Meta开源推出的新一代大语言模型 Llama 3

&#x1f525;博客主页&#xff1a;西瓜WiFi &#x1f3a5;系列专栏&#xff1a;《大语言模型》 很多非常有趣的模型&#xff0c;值得收藏&#xff0c;满足大家的收集癖&#xff01; 如果觉得有用&#xff0c;请三连&#x1f44d;⭐❤️&#xff0c;谢谢&#xff01; 长期不…

git常见命令(成长版)

ps&#xff1a;所谓成长版就是后续可能还会添加命令&#xff1a; 1.删除本地分支&#xff1a; git branch -d 分支名 2.拉取代码后默认master分支&#xff0c;切换到线上其他分支&#xff1a; &#xff08;1&#xff09;查看线上所有分支&#xff1a; git branch -a &#…

【STM32+HAL+Proteus】系列学习教程4---GPIO输入模式(独立按键)

实现目标 1、掌握GPIO 输入模式控制 2、学会STM32CubeMX配置GPIO的输入模式 3、具体目标&#xff1a;1、按键K1按下&#xff0c;LED1点亮&#xff1b;2、按键K2按下&#xff0c;LED1熄灭&#xff1b;2、按键K3按下&#xff0c;LED2状态取反&#xff1b; 一、STM32 GPIO 输入…

基于小程序实现的查寝打卡系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;ssm 【…

[Algorithm][前缀和][模板 一维前缀和][模板 二维前缀和][寻找数组中心下标][除自身以外数组的乘积] + 前缀和原理 + 前缀和模板

目录 0.原理讲解1.[模板]一维前缀和1.题目链接2.模板代码实现 2.[模板]二维前缀和1.题目链接2.算法原理讲解3.模板代码实现 3.寻找数组的中心下标1.题目链接2.算法原理详解3.代码实现 4.除自身以外数组的乘积1.题目链接2.算法原理详解3.代码实现 0.原理讲解 前缀和&#xff1a;…

Docker学习(二十五)构建 Arthas 基础镜像

目录 一、简介二、构建基础镜像2.1 下载 Arthas2.2 编写 Dockerfile2.3 构建镜像2.4 创建容器2.5 测试 一、简介 Arthas 是一款由 阿里巴巴 开发的 线上监控诊断工具。通过全局视角实时查看应用负载、内存、GC、线程等信息&#xff0c;能在不修改代码的情况下&#xff0c;对业…