通过systemd-resloved实现不同域名通过不同的`nameserver`进行解析

news2024/10/2 16:30:39

通过systemd-resloved实现不同域名通过不同的nameserver进行解析

一般来说只要DNS不发生网络故障就只会在一个nameserver 获取地址,但我们可能需要从不同nameserver 获取不同域名的地址,比如内网环境和外网环境分别使用不同的nameserver ,但resloveconf只会在一个DNS server获取地址,即使在/etc/resolv.conf中设置了多个nameserver 如果第一个nameserver 返回的是NXDOMIAN而不是没有返回也不会使用其他的nameserver

如果需要按照Domains匹配nameserver进行查询可以参考以下步骤

编辑systemd-resloved /etc/systemd/resolved.conf.d/custom.conf 指定Domains=www.test.com 到其他地方进行解析

[Resolve]
DNS=10.10.0.7
Domains=www.test.com

查看当前配置可以看到默认路由是到172.31.0.2但是www.test.com 会通过DNS 10.10.0.7解析

#重启服务
#systemctl restart systemd-resolved.service
root@ip-172-31-40-209:~# resolvectl status
Global
         Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
  resolv.conf mode: stub
Current DNS Server: 10.10.0.7
       DNS Servers: 10.10.0.7
        DNS Domain: www.test.com

Link 2 (ens5)
    Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 172.31.0.2
       DNS Servers: 172.31.0.2
        DNS Domain: cn-north-1.compute.internal

测试解析

resolvectl flush-caches
root@ip-172-31-40-209:~# resolvectl query www.baidu.com
www.baidu.com: 39.156.66.14                    -- link: ens5
               39.156.66.18                    -- link: ens5
               (www.a.shifen.com)

-- Information acquired via protocol DNS in 2.8ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: cache network
root@ip-172-31-40-209:~# resolvectl query www.test.com
www.test.com: 172.31.8.8                       -- link: ens5

-- Information acquired via protocol DNS in 2.4ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: network

需要注意gethostbynamegetaddrinfo默认来说并不会使用systemd-resloved进行解析例如

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <netdb.h>

int main() {
   const char *hostname = "www.baidu.com";
   struct hostent *host_info;
   struct in_addr **addr_list;
   int i;

   // 使用 gethostbyname 获取主机信息
   if ((host_info = gethostbyname(hostname)) == NULL) {
       // 如果无法解析主机名,显示错误信息
       herror("gethostbyname");
       return 1;
   }

   // 打印主机名
   printf("Host name: %s\n", host_info->h_name);

   // 打印所有 IP 地址
   addr_list = (struct in_addr **)host_info->h_addr_list;
   for(i = 0; addr_list[i] != NULL; i++) {
       printf("IP Address: %s\n", inet_ntoa(*addr_list[i]));
   }

   return 0;

gethostbynamegetaddrinfo是兼容nsswitch.conf

The glibc getaddrinfo(3) API as defined by RFC3493 and its related resolver functions, including gethostbyname(3). This API is widely supported, including beyond the Linux platform. In its current form it does not expose DNSSEC validation status information however, and is synchronous only. This API is backed by the glibc Name Service Switch (nss(5)). Usage of the glibc NSS module nss-resolve(8) is required in order to allow glibc's NSS resolver functions to resolve hostnames via systemd-resolved.

如果需要确保使用systemd-resloved需要修改/etc/nsswitch.conf文件将hosts这一行修改位hosts: files resolve [!UNAVAIL=return] dns

这种配置方式执行以下操作:

  • files: 首先检查 /etc/hosts 文件。
  • resolve: 使用通过 nss-resolve 模块的 systemd-resolved 进行解析。
  • [!UNAVAIL=return]: 确保如果 resolve 不可用,不会回退到下一个方法。
  • dns: 如果 resolve 失败,则回退到传统的 DNS 解析。

修改后就能够解析到了

[root@ip-172-31-35-68 dns]# ./a.out
Host name: www.a.shifen.com
IP Address: 110.242.68.3
IP Address: 110.242.68.4

不适用nss的兼容resolvconf的配置方案

针对一些dig 和nslookup之类的命令依赖/etc/resolv.conf而不会在nss中查看现后顺序的,如果需要resolvconf也能够使用不同DNS server解析不同域名,则需要开启systemd的stub Resolver功能,监听127.0.0.53 的53端口实现本地缓存和stub的功能

  1. 首先确认stub Resolver是否开启

    systemd-analyze cat-config systemd/resolved.conf命令可以查看到具体的配置DNSStubListener=no则表示没有开启,需要修改为开启。

    image-20240804165010870

  2. 重启systemctl restart systemd-resolved.service

  3. 确认配置文件已经修改

    image-20240804165348052

  4. 需要将reslov.conf 指向stub-resolv

root@ip-172-31-40-209:~# rm -rf /etc/resolv.conf
root@ip-172-31-40-209:~#  ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

image-20240804165653255

就可以成功使用不同DNS服务器解析不同域名了

image-20240804165956220

一些排错命令

查看缓存记录

#将cache写入日志
sudo pkill -USR1 systemd-resolve  
#查看日志
journalctl -u systemd-resolved

image-20240804171610638

root@ip-172-31-40-209:~# #解析记录
resolvectl query  baidu.com
#清空缓存
resolvectl flush-caches
#统计信息
resolvectl statistics
#刷新统计信息
resolvectl reset-statistics
#解析服务的状态
resolvectl status
baidu.com: 39.156.66.10                        -- link: ens5
           110.242.68.66                       -- link: ens5

-- Information acquired via protocol DNS in 2.6ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: network
DNSSEC supported by current servers: no

Transactions
Current Transactions: 0
  Total Transactions: 1478

Cache
  Current Cache Size: 0
          Cache Hits: 433
        Cache Misses: 1102

DNSSEC Verdicts
              Secure: 0
            Insecure: 0
               Bogus: 0
       Indeterminate: 0
Global
         Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
  resolv.conf mode: stub
Current DNS Server: 10.10.0.7
       DNS Servers: 10.10.0.7
        DNS Domain: www.test.com

Link 2 (ens5)
    Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 172.31.0.2
       DNS Servers: 172.31.0.2
        DNS Domain: cn-north-1.compute.internal

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

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

相关文章

中间证书缺失如何发现和修复

一、背景 微信小程序等功能在发送后台请求时一般都会要求证书齐全&#xff0c;否则就会导致请求发送失败。 一般来说&#xff0c;如果中间证书不齐全&#xff0c;在不同设备上表现不一样&#xff0c;一般PC端可能不会有太大问题&#xff0c;仍然认为你的证书可信&#xff0c;但…

shell实用笔记

目录 一、基本语法 1. 基础知识 2. if判断 3. 循环遍历 介绍一个{ n1..n2 }, seq -s分隔符 n1 n2. 4. 函数脚本传参 结果会是如何&#xff1f; 5. 字符串常规操作 6. 字符串处理&#xff1a;awk、sed、tr。留着下次&#xff0c;太多了 一、基本语法 1. 基础知识 shel…

SSM网上考试系统—计算机毕业设计源码12795

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

后端学习笔记(3)--Maven

1.Maven ​ *专门用于管理和构建Java项目的工具&#xff0c;主要功能有&#xff1a; ​ 1.提供了一套标准化的项目结构 ​ 2.提供了一套标准化的构建流程(编译&#xff0c;测试&#xff0c;打包&#xff0c;发布) ​ 3.提供了一套依赖管理机制 1.简介 ​ *Apache Maven是一…

三分钟了解自动驾驶中视觉Transform应用:视觉Transoform自动驾驶综述

引言 Transformer技术在自然语言处理领域取得突破&#xff0c;催生了BERT、GPT和T5等模型。它在计算机视觉中也显示出潜力&#xff0c;尤其在自动驾驶领域&#xff0c;Transformer在物体检测、车道检测和分割等关键任务中替代了传统CNN和RNN&#xff0c;与强化学习结合用于路径…

秒懂Linux之gdb调试

目录 ​ 一. 前情提要 二. 相关命令 2.1 l 行号/函数名 2.2 r 2.3 b 2.4 info break 2.5 d 2.6 disable/enable 2.7 n 2.8 s 2.9 p 2.10 display/undisplay 2.11 c 2.12 bt 2.13 finish 2.14 untill 2.15 set var 三. 总结 一. 前情提要 Linux gcc/g出来的二…

100379.新增道路查询后的最短距离I

今天看到很有意思的一个题目&#xff0c;记录下来&#xff0c;供大家参考 题目描述 解题思路 为了解决这个问题&#xff0c;我们需要处理一系列的单向道路添加操作&#xff0c;并在每次添加后计算从城市 0 到城市 n-1 的最短路径长度。由于初始时每个城市 i 都有一条到 i1 的…

【C++高阶】:C++11的深度解析下

✨ 彼方尚有荣光在&#xff0c;何须悲叹少年轻 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;C学习 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&…

浅谈 Spring AOP框架 (1)

文章目录 一、什么是 Spring AOP二、为什么要使用 Spring AOP三、AOP 的一些应用场景四、AOP 的组成五、如何使用 Spring AOP六、Spring AOP 的实现原理6.1、JDK 和 CGLIB 的区别 一、什么是 Spring AOP AOP (Aspect Oriented Programming) &#xff1a;面向切面编程&#xff…

[CTF]-PWN:格式化字符串漏洞题综合解析

printf型格式化字符串漏洞&#xff1a; 任意地址写&#xff1a; 32位&#xff1a; 例题&#xff08;inndy_echo&#xff09;&#xff1a; 有格式化字符串漏洞&#xff0c;可以修改printf的got表内地址为system&#xff0c;传参getshell 解法一&#xff1a; 在32位中可以使…

C语言 操作符

操作符分多种&#xff1a;算术操作符&#xff0c;移位操作符&#xff0c;位操作符&#xff0c;赋值操作符&#xff0c;单目操作符&#xff0c;关系操作符&#xff0c;逻辑操作符&#xff0c;条件操作符&#xff0c;逗号表达式&#xff0c;下标引用&#xff0c;函数调用和结构成…

【Web开发手礼】探索Web开发的秘密(十四)-Vue2(1)Node.js的安装、Vue入门

主要介绍了Node.js的安装教程、Vue2常用的一些指令、声明周期&#xff01;&#xff01;&#xff01; 文章目录 前言 Node.js安装 选择安装目录 验证NodeJS环境变量 配置npm的全局安装路径 切换npm的淘宝镜像 安装Vue-cli ​编辑 Vue2入门 引入vue.js文件 入门代码 常用指令 生…

眼在手外-机器人坐标系与相机坐标系标定方法

1 眼在手外坐标系概述 实现机械臂和相机的手眼标定&#xff0c;就是要通过双目相机坐标系、机械臂坐标系和机械臂 末端执行器三者的坐标系转换&#xff0c;求出手眼转换矩阵。设双目相机坐标系为 Oc&#xff0c;标定板坐标 系为 Ow&#xff0c;末端执行器坐标系为 Oe&#xff0…

【学习笔记】Day 3

一、进度概述 1、作业1 2、组会会议纪要——没太听懂&#xff0c;得再看 二、详情 1、作业1 &#xff08;1&#xff09;在python中&#xff0c;想要使output为图片&#xff0c;需要用的matplotlib库&#xff0c;这里做简单的整理&#xff0c;以便更好的理解代码。 …

ADC的介绍和工作原理

一&#xff0c;什么是ADC&#xff1f; Analog-to-Digital Converter&#xff0c;指模拟/数字转换器 什么是ADC&#xff1a; ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁 SUCH AS: 12 位 ADC 是一种逐次逼近…

免费【2024】springboot 导师选择管理系统的管理设计与实现

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

从零入门 AI for Science(AI+药物) 笔记 #Datawhale AI 夏令营

&#x1f496;使用平台 我的Notebook 魔搭社区 https://modelscope.cn/my/mynotebook/preset . 魔搭高峰期打不开Task3又换回飞桨了 吧torch 架构换成了 飞桨的paddle 飞桨AI Studio星河社区-人工智能学习与实训社区 https://aistudio.baidu.com/projectdetail/8191835?cont…

解决电脑数字小键盘经常自动关闭的问题

本文解决了电脑数字小键盘经常自动关闭的问题&#xff0c;可供大家参考。 winR&#xff0c;输入regedit打开注册表 依次选择HKEY_USERS DEFAULT Control Panel---Keyboard”&#xff0c;将InitialKeyboardIndicators的值由2147483648改为80000002&#xff0c;即可解决。

xss漏洞(四,xss常见类型)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 前言&#xff1a; 1&#xff0c;本文基于dvwa靶场以及PHP study进行操作&#xff0c;靶场具体搭建参考上一篇&#xff1a; xss漏洞&#xff08;二&#xff0c;xss靶场搭建以及简单…

[240804] OpenTofu 1.8.0 发布,带来更友好的编码体验 | 生成式 AI 滥用现象分析

目录 OpenTofu 1.8.0 发布&#xff0c;带来更友好的编码体验生成式 AI 滥用现象分析 OpenTofu 1.8.0 发布&#xff0c;带来更友好的编码体验 OpenTofu 1.8.0 现已发布&#xff0c;主要功能包括&#xff1a; 变量和局部值的早期求值: 现在可以在模块源、后端配置和状态加密等更…