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

自动化防火墙放行目标域名IP

#!/bin/bash
# 设置要获取IP地址的域名
domain="yourdomain.com"# 获取域名的IP地址
new_ip=$(dig +short A $domain)# 移除之前添加放行的IP地址(通过备注找它的编号)
rule_number=$(iptables -L INPUT -n --line-numbers -v | awk -v domain="${domain}" '$0 ~ "Allow from " domain {print $1}')# 如果有就删除
if [ -n "$rule_number" ]; theniptables -D INPUT $rule_number
fi# 添加新的IP地址到iptables规则(带备注)
iptables -A INPUT -s $new_ip -m comment --comment "Allow from $domain" -j ACCEPT#保存规则,如果有docker请省略这一步
service iptables save

正则表达式部分的解释:

  • Allow from : 这是一个固定的文本字符串,表示规则中的注释内容开始部分。
  • domain: 这是一个变量,其中存储了您要匹配的注释内容。在命令中使用-v选项将该变量传递给awk命令。
  • ~操作符: 在awk中,~操作符用于进行模式匹配。
  • $0: 这是awk中的一个特殊变量,表示整个输入行。
  • ~操作符后面的部分 "Allow from " domain 是我们的模式。它指示awk在输入行中查找以"Allow from
    "开头,后面跟着domain变量的内容的部分。

因此,使用模式"Allow from " domain,我们可以匹配包含所需注释的规则行。一旦找到匹配的行,print $1将打印该行的第一个字段,即规则行号。

有docker为啥不保存:

在使用Docker时,iptables规则是由Docker自动管理的。Docker使用自己的网络桥接和转发机制来管理容器之间的通信,它会自动更新iptables规则以适应容器的网络需求

当你运行service iptables save命令时,它会尝试保存当前系统的iptables规则到配置文件中,但是这个命令不会考虑Docker所管理的规则。

如果你希望保存Docker所管理的iptables规则,你可以使用Docker自带的命令来实现。例如,使用docker save命令将Docker的iptables规则保存到文件中,然后在需要的时候使用docker load命令重新加载规则。

另外,从Docker 1.13版本开始,Docker引入了新的命令docker savedocker load,用于保存和加载容器的状态,包括网络规则。这样你就可以使用docker save命令保存Docker的状态,并在需要的时候使用docker load命令重新加载状态,包括iptables规则。

总之,如果你在使用Docker,并且希望保存iptables规则,建议使用Docker提供的相关命令来管理和保存规则。

http://www.lryc.cn/news/159864.html

相关文章:

  • 12.2RAC环境从RAC转为单机模式的问题处理
  • Docker 中 jdk8容器里无法使用 JDK 的 jmap 等命令的问题
  • typeScript--[es6class类实现继承]
  • 解决eclipse的报错:Must declare a named package because this compilation
  • linux sed常用各种操作大全
  • 通过 Keycloak 结合 OAuth2.0协议进行 Amazon API Gateway 鉴权
  • 修复中间件log4j漏洞方案(直接更换漏洞jar包)
  • 怎么压缩pdf文件大小?详细压缩步骤
  • php 安装rabbitmq:如何使用 PHP 安装 RabbitMQ?
  • 算法训练营day44|动态规划 part06:完全背包 (完全背包、 LeetCode518. 零钱兑换 II、377. 组合总和 Ⅳ )
  • 包管理工具--》其他包管理器之cnpm、pnpm、nvm
  • 线性代数的学习和整理22:矩阵的点乘(草稿)
  • 如何在Windows中使用C#填写和提取PDF表单
  • microsoft.office.interop.word 怎样 读取 某个汉字 字体颜色为红色
  • 第二十二章 Classes - 调用类方法的快捷方式
  • 标准C++day2——函数重载、默认形参和引用
  • Qt5下遍历QList的方法
  • Leetcode 剑指 Offer II 043. 完全二叉树插入器
  • 链路追踪Skywalking应用实战
  • 提升你的Android开发技能:从AR/VR沉浸到UI设计和故障排除
  • Arm 架构 Ubuntu 使用 Docker 安装 Gitlab 并使用
  • 百度地图3D棱柱鼠标事件
  • PHP调用java class 类实现文件签名
  • 信号和槽机制
  • 计算机视觉领域经典模型汇总(2023.09.08
  • 华为云云耀云服务器L实例评测|在 Centos Docker 中使用Nginx部署Vue项目
  • 高频知识汇总 |【计算机网络】面试题汇总(万字长文通俗易懂)
  • 6.Flask-APScheduler定时任务框架
  • 电脑入门:路由器访问控制列表基础知识
  • 目标检测笔记(十四): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)