linux dig域名DNS 查询与iptables域名ip访问流量限制;PTR 反向解析从 IP 地址到域名的映射

news2024/9/23 15:25:26

一、域名 dns查询

在 Linux 系统中,你可以使用多种工具和技术来进行 DNS 查询和 IP 限制。以下是一些常用的方法和工具:

DNS 查询

  1. dig 命令
    dig 是一个强大的命令行工具,用于查询 DNS 信息。

    dig example.com
    

    你可以指定查询类型,例如 A 记录、MX 记录等:

    dig example.com A
    dig example.com MX
    

直接输出ip信息

dig +short example.com

在这里插入图片描述
指定dns域名服务商

dig @114.114.114.114 example.com

8.8.8.8 谷歌
在这里插入图片描述
在这里插入图片描述

  1. nslookup 命令
    nslookup 是另一个常用的 DNS 查询工具。

    nslookup example.com
    
  2. host 命令
    host 命令也可以用于 DNS 查询。

    host example.com
    

在这里插入图片描述

二、域名IP 访问限制

在 Linux 系统中,你可以使用 iptablesnftables 来限制 IP 地址的访问。

1)使用 iptables

阻止特定 IP 地址

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

这条命令会阻止来自 192.168.1.100 的入站流量。

iptables 是一个强大的命令行工具,用于配置 Linux 内核内置的防火墙,即 Netfilter。以下是一些常用参数的说明,以及如何使用 iptables 进行域名字符串匹配限制。

常用参数说明

  1. -I(插入规则)
    将规则插入到链的顶部(即第一个位置)。

    sudo iptables -I INPUT -s 192.168.1.100 -j DROP
    

    这条命令会将阻止来自 192.168.1.100 的入站流量的规则插入到 INPUT 链的顶部。

  2. -D(删除规则)
    从链中删除指定的规则。

    sudo iptables -D INPUT -s 192.168.1.100 -j DROP
    

    这条命令会删除 INPUT 链中阻止来自 192.168.1.100 的入站流量的规则。

  3. -A(追加规则)
    将规则追加到链的末尾。

    sudo iptables -A INPUT -s 192.168.1.100 -j DROP
    

    这条命令会将阻止来自 192.168.1.100 的入站流量的规则追加到 INPUT 链的末尾。

  4. -p(协议)
    指定要匹配的协议(如 tcpudpicmp 等)。

    sudo iptables -A INPUT -p tcp --dport 22 -j DROP
    

    这条命令会阻止所有到端口 22(SSH)的 TCP 入站流量。

  5. -s(源地址)
    指定要匹配的源 IP 地址或网络。

    sudo iptables -A INPUT -s 192.168.1.0/24 -j DROP
    

    这条命令会阻止来自 192.168.1.0/24 网络的所有入站流量。

  6. -d(目标地址)
    指定要匹配的目标 IP 地址或网络。

    sudo iptables -A OUTPUT -d 192.168.1.100 -j DROP
    

    这条命令会阻止所有到 192.168.1.100 的出站流量。

  7. --dport(目标端口)
    指定要匹配的目标端口。

    sudo iptables -A INPUT -p tcp --dport 80 -j DROP
    

    这条命令会阻止所有到端口 80(HTTP)的 TCP 入站流量。

  8. -j(跳转目标)
    指定匹配规则时要执行的操作(如 ACCEPTDROPREJECT 等)。

    sudo iptables -A INPUT -s 192.168.1.100 -j DROP
    

    这条命令会阻止来自 192.168.1.100 的所有入站流量。

域名字符串匹配
你的命令是使用 iptables 来阻止从源 IP 地址 192.168.2.9 发出的数据包,如果这些数据包中包含字符串 "qq.com"。以下是命令的详细解释:

sudo iptables -I OUTPUT -s 192.168.2.9 -m string --string "qq.com" --algo kmp -j DROP
  • -I OUTPUT:将规则插入到 OUTPUT 链的顶部。
  • -s 192.168.2.9:匹配源 IP 地址为 192.168.2.9 的数据包。
  • -m string:加载 string 模块。
  • --string "qq.com":匹配数据包中包含字符串 "qq.com" 的内容。
  • --algo kmp:指定字符串匹配算法为 kmp(Knuth-Morris-Pratt 算法)。
  • -j DROP:匹配到的数据包将被丢弃。

删除重复屏蔽规则
sudo iptables -nL OUTPUT --line-numbers ##查询规则索引显示

按索引号删除,注意要从最后往前索引号删除

def delete_iptables_rules(match_content):
    try:
        # 列出 INPUT 链中的所有规则及其行号
        result = subprocess.run(['sudo', 'iptables', '-nL', 'OUTPUT', '--line-numbers'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
        lines = result.stdout.replace('"',"").split('\n')
        
        # 提取所有规则的行号
        line_numbers = []
        for line in lines:
            if line and not line.startswith('Chain'):
                line_number = line.split()
                if len(match_content)==2:
                    if match_content[0] in line_number and match_content[1] in line_number:
                        line_numbers.append(int(line_number[0]))
                if len(match_content)==1:
                    if match_content[0] in line_number:
                        line_numbers.append(int(line_number[0]))
        
        # 从最后一行开始逐条删除规则
        for line_number in sorted(line_numbers, reverse=True):
            subprocess.run(['sudo', 'iptables', '-D', 'OUTPUT', str(line_number)], check=True)

## orgin_ip 是 -s源头ip,url 是字符串匹配的域名,d_url是访问服务器ip
delete_iptables_rules([orgin_ip,url])
delete_iptables_rules([orgin_ip,d_url])

在这里插入图片描述

使用场景

这个命令通常用于阻止特定 IP 地址发出的包含特定字符串的数据包。例如,如果你有一个 HTTP 请求从 192.168.2.9 发出,并且请求中包含 "qq.com" 字符串,这个命令会阻止该请求。

注意事项

  1. 应用层协议:这个命令主要用于应用层协议(如 HTTP、SMTP 等),因为这些协议的数据包中可能包含字符串内容。
  2. 协议匹配:你可能需要指定协议(如 -p tcp)来匹配特定的协议。

完整示例

假设你想阻止从 192.168.2.9 发出的 HTTP 请求中包含 "qq.com" 字符串的数据包,可以使用以下命令:

sudo iptables -I OUTPUT -s 192.168.2.9 -p tcp --dport 80 -m string --string "qq.com" --algo kmp -j DROP

这个命令会阻止从 192.168.2.9 发出的目标端口为 80(HTTP)的 TCP 数据包,如果这些数据包中包含 "qq.com" 字符串。

禁止所有网站访问:

在这里插入图片描述

2)使用 nftables

nftablesiptables 的继任者,提供了更灵活和高效的规则管理。

  1. 安装 nftables

    sudo apt-get install nftables
    
  2. 阻止特定 IP 地址

    sudo nft add rule ip filter input ip saddr 192.168.1.100 drop
    
  3. 允许特定 IP 地址

    sudo nft add rule ip filter input ip saddr 192.168.1.100 accept
    
  4. 阻止特定端口

    sudo nft add rule ip filter input tcp dport 22 drop
    
  5. 保存和恢复规则

    保存规则:

    sudo nft list ruleset > /etc/nftables.conf
    

    恢复规则:

    sudo nft -f /etc/nftables.conf
    

结合 DNS 查询和 IP 限制

你可以结合 DNS 查询和 IP 限制来实现更复杂的策略。例如,你可以先查询域名的 IP 地址,然后根据这些 IP 地址设置防火墙规则。

  1. 查询域名的 IP 地址

    dig +short example.com
    
  2. 根据查询结果设置防火墙规则

    假设查询结果为 192.168.1.100,你可以使用以下命令阻止该 IP 地址:

    sudo iptables -A INPUT -s 192.168.1.100 -j DROP
    

通过这些方法,你可以在 Linux 系统中实现灵活的 DNS 查询和 IP 限制策略。

三、PTR 反向解析从 IP 地址到域名的映射

参考:https://worktile.com/kb/ask/1850738.html
PTR记录(Pointer Record)是DNS(Domain Name System)中的一种资源记录,用于将IP地址映射到域名。与A记录(Address Record)和CNAME记录(Canonical Name Record)将域名映射到IP地址不同,PTR记录用于反向DNS查询,即从IP地址查找对应的域名。

PTR记录的作用

  1. 验证身份:在电子邮件系统中,PTR记录用于验证发送方的身份。许多邮件服务器会检查发送方的IP地址是否有对应的PTR记录,以判断邮件是否来自合法的域名。
  2. 提高邮件传递率:拥有有效的PTR记录可以提高电子邮件的传递率,因为许多邮件服务提供商会将没有PTR记录的IP地址标记为潜在的垃圾邮件发送者。
  3. 网络安全:PTR记录可以帮助识别和追踪网络攻击源,通过反向查找IP地址对应的域名,可以更好地了解攻击者的来源。

检查PTR记录

你可以使用以下命令来检查某个IP地址的PTR记录:

  • Linux/Unix

    host IP_ADDRESS
    

    例如:

    host 8.8.8.8
    
  • Windows

    nslookup -type=PTR IP_ADDRESS
    

    例如:

    nslookup -type=PTR 8.8.8.8
    

ubuntu
在这里插入图片描述
windows
在这里插入图片描述

示例

假设你有一个IP地址为192.0.2.1,你希望为其创建一个PTR记录,指向域名example.com。你需要联系你的ISP或IP管理机构,请求创建如下PTR记录:

1.2.0.192.in-addr.arpa.  IN  PTR  example.com.

注意事项

  • PTR记录的域名必须是有效的,并且指向的域名必须有对应的A记录或CNAME记录。
  • PTR记录的创建和修改可能需要一些时间来传播到全球的DNS服务器,通常需要几个小时到几天的时间。
  • 确保你提供的域名是正确的,并且你有权使用该域名,否则可能会导致邮件传递问题或其他安全问题。

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

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

相关文章

【TCP】核心机制:滑动窗口、流量控制和拥塞控制

文章目录 滑动窗口窗口滑动滑动窗口丢包 流量控制拥塞控制窗口大小变化过程 滑动窗口 有一类算法题,就是通过滑动窗口的思想来解决的,算法中的“滑动窗口”借鉴自 TCP 的滑动窗口 TCP 是要保证可靠传输的>代价,降低了传输的效率&#xf…

【机器学习】3. 欧式距离,曼哈顿距离,Minkowski距离,加权欧式距离

Euclidean - L2 norm L2范数 D ( A , B ) ( a 1 − b 1 ) 2 ( a 2 − b 2 ) 2 . . . D(A,B) \sqrt{(a_1-b_1)^2(a_2-b_2)^2 ...} D(A,B)(a1​−b1​)2(a2​−b2​)2... ​ Manhattan D ( A , B ) ∣ a 1 − b 1 ∣ ∣ a 2 − b 2 ∣ . . . D(A,B) \sqrt{|a_1-b_1||a_…

全网最简单的Java设计模式【九】策略模式-实战中最常用的设计模式之一

策略模式是一种行为设计模式,它允许你定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。该模式让算法的变化独立于使用算法的客户。在实际开发中,策略模式可以帮助我们减少大量的 if-else 或 switch 条件判断语句&…

产品的需求分析

一、需求 1.需求概念 用户的预期与现实存在在差异 用户所期望的明确的解决方案 2.需求的常用形式 提问题 提目的 提方案 3.需求的来源 外部需求:用户、市场、其他竞品 内部需求:业务部门、产品经理 4.需求测试方法 定性方式:逻辑…

【生日视频制作】江边夜景游轮观光船霓虹灯AE模板修改文字软件生成器教程特效素材【AE模板】

游轮观光船生日视频制作教程AE模板修改文字特效软件生成器素材 怎么如何做的【生日视频制作】江边夜景游轮观光船霓虹灯AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤: 安装AE软件下载AE模板把AE模板导入AE软件修改图片或文字渲染出视频

鸿蒙(API 12 Beta3版)【使用Image完成图片接收器】图片开发指导依赖JS对象

图像接收类,用于获取组件surface id,接收最新的图片和读取下一张图片,以及释放ImageReceiver实例。 开发步骤 添加依赖 在进行应用开发之前,开发者需要打开native工程的src/main/cpp/CMakeLists.txt,在target_link_…

【Qt】Qt系统 | Qt事件| 鼠标事件

文章目录 鼠标事件鼠标点击事件鼠标释放事件鼠标双击事件鼠标移动事件 滚轮事件 在 Qt 中,鼠标事件是用 QMouseEvent 实现的。当在窗口中按下鼠标或者移动鼠标时,都会产生鼠标事件 鼠标事件 鼠标点击事件 鼠标按下时通过 虚函数 mousePressEvent() 来…

系统编程—进程

一、进程的概念 1.程序与进程的区别 程序:编译后产生的,格式为ELF的,存储于硬盘的文件。可以通过 readelf -s [文件名] 查看文件信息 …

使用OpenRewrite升级SpringBoot项目

使用OpenRewrite升级SpringBoot项目 什么是OpenRewrite? OpenRewrite是一个强大的开源自动化源代码重构工具,专为大规模代码库设计。它的核心理念是通过程序化的方式来改变源代码,而不是依赖于手动编辑或简单的查找替换。 OpenRewrite的主要特点和优势包括: 自动重构: Open…

Unity动画模块 之 Animator中一些常见参数

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 我发现我忘了写Animator了,正好有些不常用的参数还没怎么认识,笔记来源于唐老狮 1.状态窗口参数 2.连线参数…

Lesson05--C/C++内存管理

1. C/C内存分布 2. C语言中动态内存管理方式 3. C中动态内存管理 4. operator new与operator delete函数 5. new和delete的实现原理 6. 定位new表达式(placement-new) 7. 常见面试题 1. C/C内存分布 为了方便管理内存被分为了以上的区域 我们来看下面的一段代码和相关问题 …

数据结构(邓俊辉)学习笔记】优先级队列 08——左式堆:结构

文章目录 1. 第一印象2. 堆之合并3. 奇中求正4. NPL5. 左倾性6. 左展右敛 1. 第一印象 在学习过常规的完全二叉堆之后,我们再来学习优先级队列的另一变种,也就是左式堆。所谓的左式堆,也就是在拓扑形态上更加倾向于向左侧倾斜的一种堆&#…

Vue3 项目结构

1.main.ts 2.简单写一个src下的结构 App.vue 根组件 <template><div class"app"><!-- html --><h1>你好啊!</h1></div> </template><script lang"ts"> //js 或 tsexport default {name:App,//组件名 }…

MySQL数据库锁机制(全面讲解)

目录 1、全局锁 1.1、全局锁使用语法 1.2、备份数据库&#xff08;不使用全局锁&#xff09; 2、表锁 2.1、读写锁 读锁 写锁 2.2、元数据锁&#xff08;meta data lock MDL&#xff09; 2.3、意向锁 3、行锁 3.1、共享锁和排他锁 共享锁&#xff08;S锁&#xff…

原来marker还能这么玩

在Web GIS开发中&#xff0c;Marker&#xff08;标记&#xff09;是一个基本但强大的工具。今天&#xff0c;我们将探讨如何通过不同的API调用&#xff0c;将Marker玩出新花样&#xff0c;让地图更加生动有趣。 最基础的Marker用法是在地图上标记一个具体位置。我们可以通过“m…

【Unity3D小技巧】Unity3D中实现对InputField的自定义输入限制实例

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群&#xff1a;398291828 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 InputField是UGUI的文本输入框&#xff0c;自带的…

粘包,Telnet,SSH,Wireshark

一&#xff0c;粘包 原因&#xff1a;tcp为流式套接字&#xff0c;数据与数据间没有边界&#xff0c;导致多次数据粘到一起。 解决&#xff1a; 1.规定一些数据间的间隔符&#xff0c;"\aa","\r\n"; 2.可以指定要发送对象的数据长度。 3.自己将数据打包。 …

力扣:有效的数独

文章目录 需求分析结尾 需求 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08…

2024年最新最全的【大模型学习路线规划】从零基础入门到精通!

2024年最新最全的大模型学习路线规划&#xff0c;对于零基础入门到精通的学习者来说&#xff0c;可以遵循以下阶段进行&#xff1a; 文章目录 一、基础准备阶段数学基础&#xff1a;编程语言&#xff1a;深度学习基础&#xff1a; 二、核心技术学习阶段Transformer模型&#xf…

第2章-04-Request Header与Response Header

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Web爬虫入门与实战精讲,后续完整更新内容如下。 文章…