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

linux dig域名DNS 查询与iptables域名ip访问流量限制

一、域名 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

在这里插入图片描述

  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:匹配到的数据包将被丢弃。

使用场景

这个命令通常用于阻止特定 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 限制策略。

相关文章:

  • 元素设置了sticky粘性布局后,关于滚动后怎么样让这个元素自动添加阴影,我用自定义指令实现
  • 4.3 数据操作语言(DML):增删改查操作
  • 牛客网SQL进阶135 :每个6/7级用户活跃情况
  • 【c++】通过Privilege类来保护数据
  • 【layui】layer弹出图片层(开启图片旋转 放大 缩小 还原)
  • PostgreSQL常用命令,启动连接,pg_dump导入导出
  • Python模块篇(五)
  • 2408d,加@GC作为函数属性
  • Java基于数据库、乐观锁、悲观锁、Redis、Zookeeper分布式锁的简单案例实现(保姆级教程)
  • 面试题:MQ
  • seata的使用(SpringBoot项目整合seata)
  • RabbitMQ-消息队列延迟队列一
  • Dockerfile搭建LNMP
  • Linux安装jdk8,tomcat和mysql
  • 【layUI】只能选某个特定区间的日历
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【mysql】环境安装、服务启动、密码设置
  • CAP理论的例子讲解
  • es6--symbol
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Golang-长连接-状态推送
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • SQLServer之索引简介
  • 大主子表关联的性能优化方法
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 让你的分享飞起来——极光推出社会化分享组件
  • 实习面试笔记
  • 通过几道题目学习二叉搜索树
  • 想写好前端,先练好内功
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • zabbix3.2监控linux磁盘IO
  • 第二十章:异步和文件I/O.(二十三)
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • #vue3 实现前端下载excel文件模板功能
  • #微信小程序(布局、渲染层基础知识)
  • (21)起落架/可伸缩相机支架
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (4.10~4.16)
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (蓝桥杯每日一题)love
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (三)Honghu Cloud云架构一定时调度平台
  • (学习日记)2024.01.09
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • .cn根服务器被攻击之后
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .net core Swagger 过滤部分Api
  • .NET Micro Framework初体验(二)
  • .net 受管制代码