Linux CentOS 8(DNS的配置与管理)

news2024/11/17 17:52:14


Linux CentOS 8(DNS的配置与管理)


目录

    • 一、DNS相关知识
      • 1.1 DNS简介
      • 1.2 DNS的解析原理
      • 1.3 DNS解析
    • 二、DNS服务器部署
      • 2.1 不使用chroot模式启动DNS
      • 2.2 使用chroot模式DNS
    • 三、DNS配置文件详解
      • 3.1 主配文件详解
      • 3.2 区域数据库文件详解
    • 四、项目实施
      • 4.1 主DNS
      • 4.2 辅助DNS(DNS服务器冗余)
      • 4.3 转发DNS
      • 4.4 智能DNS


一、DNS相关知识

1.1 DNS简介

DNS
DNS域名系统(英文:Domain Name System)是一个域名系统,是万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。DNS协议运行在UDP协议之上,使用端口号53。

域名
域名是一个网站的逻辑地址,比如www.baidu.com,相比IP地址更加方便人类记忆,所以被广泛使用。

域名管理机构
Internet 域名与地址管理机构(ICANN)是为承担域名系统管理,IP地址分配,协议参数配置,以及主服务器系统管理等职能而设立的非盈利机构.现由IANA和其他实体与美国政府约定进行管理。域名分国际域名和国内域名两种,对于国际域名而言,其命名规则是:域名可以由(a-z、A-Z大小写等价)26个英文字母、数字(0-9)以及连接符“-”组成,但是域名的首位必须是字母或数字。对于域名的长度也有一定的限制:国际通用顶级域名长度不得超过26个字符,中国国家顶级域名长度不得超过20个字符。

1.2 DNS的解析原理

目前,因特网的命名方法是层次树状结构的方法。采用这种命名方法,任何一个连接在因特网上的主机或设备,都有一个某一层次结构的名字,即域名(domain name)。域是名字空间中一个可被管理的划分。域可以继续按层次划分为子域,如二级域、三级域等等,如图1所示。

在这里插入图片描述

图1

1.3 DNS解析

递归解析
主机向本地域名服务器的解析,一般都是采用递归解析。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。

迭代解析
本地域名服务器向根域名服务器的查询,通常是采用迭代解析。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。

域名的解析也分为正向解析和反向解析。正向解析为:将域名解析为IP;反向解析为:将IP解析为域名。

二、DNS服务器部署

DNS服务是由bind程序提供的,所以要实现DNS服务就需要安装bind程序包。

[root@localhost ~]# yum install bind bind-chroot -y  

DNS主程序包
bind-chroot 是DNS的安全包,可以改变默认DNS根目录,将DNS运行在监牢模式。bind-chroot是 bind 的一个功能,使 bind 可以在一个chroot的模式下运行。也就是说,bind 运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已。这样做的目的是为了提高安全性。因为在 chroot 的模式下,bind 可以访问的范围仅限于这个子目录的范围里,无法进一步提升,进入到系统的其他目录中。bind 的默认启动方式就是 chroot 方式。Bind Chroot DNS 服务器的默认“监牢”为 /var/named/chroot

DNS的守护进程叫做named,DNS是以named用户身份来运行,named用户在安装包的时候会在系统中自动创建。

注:CentOS8 安装了 bind-chroot之后,若要使用 named-chroot.service,则需要关闭 named.service。两者只能运行一个。

2.1 不使用chroot模式启动DNS

[root@localhost ~]# systemctl enable --now named  \\启动服务并设置开机自启
[root@localhost ~]# lsof -i :53  \\启动验证

2.2 使用chroot模式DNS

[root@localhost ~]# cp -r /var/named/data /var/named/chroot/var/named/  \\复制对应的文件到chroot根目录
[root@localhost ~]# cp -r /var/named/dynamic /var/named/chroot/var/named/
[root@localhost ~]# cp -p /var/named/named.* /var/named/chroot/var/named/
[root@localhost named]# chown -R named.named *
[root@localhost ~]# systemctl enable --now named-chroot.service  \\启动服务并设置开机自启1

三、DNS配置文件详解

默认情况下,如果不安装bind-chroot这个包,配置文件的路径如下:
配置文件:/etc/named.conf
区域数据库文件:/var/named/
安装了bind-chroot这个用于改变默认DNS配置文件的路径的包,所以相对应的配置文件的路径也发生了变化。
变化如下:
配置文件:/var/named/chroot/etc/named.conf
区域数据库文件:/var/named/chroot/var/named/

3.1 主配文件详解

[root@localhost ~]# vim /var/named/chroot/etc/named.conf
options
{
    listen-on port 53    { 127.0.0.1; };  \\ IPv4监听端口为53,只允许本机连接
    listen-on-v6 port 53    { ::1; };  \\ IPv6监听端口为53,只允许本机连接
    directory         "/var/named";  \\定义工作目录
    dump-file         "data/cache_dump.db";  \\ CACHE文件路径,指定服务器在收到rndc dump命令时,转储数据到文件的路径。默认cache_dump.db
    statistics-file     "data/named_stats.txt";  \\静态文件路径,指定服务器在收到rndc stats命令时,追加统计数据的文件路径。默认named_stats.txt
    memstatistics-file     "data/named_mem_stats.txt";  \\内存静态文件路径,服务器在退出时,将内存统计写到文件的路径。默认named_mem_stats.txt
    secroots-file        "data/named.secroots";  \\在收到rndc secroots指令后,服务器转储安全根的目的文件的路径名。默认named.secroots
    recursing-file        "data/named.recursing";  \\指定服务器在通过rndc recursing命令指定转储当前递归请求到的文件路径。默认named.recursing
     allow-query        { localhost; };  \\指定哪些主机可以查询,可以是any/none
    allow-query-cache    { localhost; };  \\指定允许哪些主机可以对缓存的访问
    recursion yes;  \\开启递归
    dnssec-enable yes;  \\开启DNSSEC在权威或者递归服务器之间信任服务
    dnssec-validation yes;  \\开启DNSSEC验证在递归服务器
    managed-keys-directory "/var/named/dynamic";  \\指定目录,其中保存着跟踪被管理DNSSEC密钥文件。默认为工作目录。
    pid-file "/run/named/named.pid";  \\ PID文件路径
    session-keyfile "/run/named/session.key";  \\ session-keyfile文件路径
};
Logging  \\开启DNS日志记录
{
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {  \\定义一个根域
        type hint;  \\域类型为hint(根域),还有master(主要域)/slave(辅助域)/forward(转发域)等类型
        file "/var/named/named.ca";  \\区域数据库文件路径
    };
};
    include "/etc/named.rfc1912.zones";  \\包含两个子配置文件
    include "/etc/named.root.key";

3.2 区域数据库文件详解

正向解析

[root@localhost ~]# vim /var/named/named.localhost
$TTL 1D  \\缓存时间
	@         	IN 	  SOA        @ 			   rname.invalid. (
\\解析的域名   类型   授权域    授权域名服务器   管理员邮箱
                 0    ; serial  \\序列号,每次更新该文件系列号都应该变大
                 1D    ; refresh  \\刷新时间, 从域名服务器多长时间查询一个主服务器
                 1H    ; retry  \\重试时间,即当从服务试图在主服务器上查询更时,而连接失败了,则这个值规定了从服务多长时间后再试 
                 1W    ; expire  \\过期时间,从服务器在向主服务更新失败后多长时间后清除对应的记录
                 3H )    ; minimum  \\缓存服务器不能与主服务联系上后多长时间清除相应的记录 
    NS   				@  \\ NS 名称服务器,表示这个主机为域名服务器
    A    		127.0.0.1  \\主机头  	A记录   	IP
    AAAA    		::1  \\解析为IPV6地址

反向解析

[root@localhost ~]# vim /var/named/named.loopback
$TTL 1D
@    IN SOA    @ rname.invalid. (
                    0    ; serial
                    1D    ; refresh
                    1H    ; retry
                    1W    ; expire
                    3H )    ; minimum
    NS    		@
    PTR    		localhost  \\ IP   PTR(反向指针)     主机名

四、项目实施

4.1 主DNS

实验要求:
jan16.com域名做解析,解析要求如下:
www 解析为A记录 IP地址为 1.1.1.1,并设置反向解析
news 做别名解析CNAME 解析为 www

DNS服务器配置:

[root@localhost ~]# vim /var/named/chroot/etc/named.conf
options {
    listen-on port 53 { any; };
directory     "/var/named";
allow-query     { any; };
};

zone "jan16.com" IN {
    type master;
    file "jan16.com.zone";
};
zone "1.1.1.in-addr.arpa" IN {
        type master;
        file "1.1.1.zone";
        allow-update { none; };
};
[root@localhost named]# cp -p named.localhost  jan16.com.zone  \\保留源文件的权限和属主的属性复制
[root@localhost ~]# cd /var/named/chroot/var/named/
[root@localhost named]# vim jan16.com.zone
$TTL 1D
jan16.com.       IN SOA  ns1.jan16.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.jan16.com.
        A       127.0.0.1
        AAAA    ::1
ns1     A      192.168.159.138  \\此为DNS的IP地址,做正向解析
www     A      1.1.1.1
news    CNAME  www
[root@localhost named]# cp -p named.loopback 1.1.1.zone
[root@localhost named]# vim 1.1.1.zone
$TTL 1D
1.1.1.in-addr.arpa.       IN SOA  ns1.jan16.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.jan16.com.
1       PTR     www.jan16.com.

客户端验证:
host采用非交互式解析,
nslookup可以采用交互或非交互式解析
dig显示详细的解析流程,在dig解析中,后面跟上+trace来显示详细解析流程

[root@localhost named]# vim /etc/resolv.conf 
nameserver 192.168.159.138
[root@localhost named]# nslookup www.jan16.com
Server:		192.168.159.138
Address:	192.168.159.138#53
Name:	www.jan16.com
Address: 1.1.1.1
[root@localhost named]# nslookup 1.1.1.1
1.1.1.1.in-addr.arpa	name = www.jan16.com.

4.2 辅助DNS(DNS服务器冗余)

DNS服务器在网络中为全世界的服务器提供了域名解析服务,扮演着至关重要的角色。网络中的某台DNS一旦宕机,就会造成部分域名无法解析,用户无法顺利访问到对应的服务器。但是我们学习的过程中也发现了,我们的DNS部署在单台服务器上,如果出现单点故障,我们可以通过部署多台相同解析的DNS来解决单点故障,即辅助DNS。这样就算一台DNS服务器出现问题,也不会影响解析服务。

辅助DNS是从主DNS拉取区域数据库文件的,当主DNS解析的域名对应的区域数据库文件发生变化,辅助就会去找主DNS拉取新的区域数据库文件,保证和主的解析一致,而且是自动的不需要人为干预的,确保了主从DNS的区域数据库文件的一致性。

实验要求:
实现辅助DNS的搭建

DNS服务器配置:

[root@localhost ~]# vim /var/named/chroot/etc/named.conf
options {
    listen-on port 53 { any; };
directory     "/var/named";
allow-query     { any; };
};

zone "jan16.com" IN {
    type slave;  \\类型写slave  代表辅助
    file "jan16.com.zone";  
    masters { 192.168.159.138; };  \\设置主DNS IP地址,向该IP的主机去同步数据
};
zone "1.1.1.in-addr.arpa" IN {
    type slave;
    file "1.1.1.zone";
    masters { 192.168.159.138; };
};
[root@localhost ~]# systemctl restart named-chroot
[root@localhost ~]# ll /var/named/chroot/var/named/  \\可以看到复制过来的区域数据库配置文件
total 24
-rw-r--r--. 1 named named  232 Jun 15 09:31 1.1.1.zone
drwxr-x---. 2 named named   23 Jun 15 08:47 data
drwxr-x---. 2 named named   60 Jun 15 09:31 dynamic
-rw-r--r--. 1 named named  376 Jun 15 09:31 jan16.com.zone
-rw-r-----. 1 named named 2253 Jun 15 08:44 named.ca
-rw-r-----. 1 named named  152 May 27 16:49 named.empty
-rw-r-----. 1 named named  152 May 27 16:49 named.localhost
-rw-r-----. 1 named named  168 May 27 16:49 named.loopback
drwxr-x---. 2 root  root     6 Jun 15 09:25 slaves

客户端验证:

[root@localhost ~]# vim /etc/resolv.conf
nameserver 192.168.159.144
[root@localhost ~]# nslookup www.jan16.com
Server:		192.168.159.144
Address:	192.168.159.144#53
Name:	www.jan16.com
Address: 1.1.1.1
[root@localhost ~]# nslookup 1.1.1.1
1.1.1.1.in-addr.arpa	name = www.jan16.com.

4.3 转发DNS

在DNS客户端提交解析申请到转发DNS服务器的时候,该服务器会将请求转发至配置文件中指定的非根DNS服务器进行解析,然后将解析的结果发至客户端并缓存到本地,因此,转发DNS服务器在这种意义上也算一种缓存服务器。并且转发DNS服务器可以选择完全转发或条件转发两种转发方式:

完全转发:所有客户机请求都直接扔给指定的非根DNS服务器进行解析。
条件转发:将某个域的解析申请转发至指定的非根DNS服务器进行解析。

实验要求:
实现DNS完全转发的搭建

DNS服务器配置:

[root@localhost ~]# vim /var/named/chroot/etc/named.conf
options {
    listen-on port 53 { any; };
directory     "/var/named";
allow-query     { any; };
  forward only;  \\递归转发
forwarders { 192.168.159.138; };  \\转发到的DNS服务器IP
};
[root@localhost ~]# systemctl restart named-chroot

客户端验证:

[root@localhost ~]# vim /etc/resolv.conf
nameserver 192.168.159.144
[root@localhost ~]# nslookup www.jan16.com
Server:		192.168.159.144
Address:	192.168.159.144#53
Name:	www.jan16.com
Address: 1.1.1.1
[root@localhost ~]# nslookup 1.1.1.1
1.1.1.1.in-addr.arpa	name = www.jan16.com.

实验要求:
实现DNS条件转发的搭建

DNS服务器配置:

[root@localhost ~]# vim /var/named/chroot/etc/named.conf
options {
    listen-on port 53 { any; };
directory     "/var/named";
allow-query     { any; };
};
zone "jan16.com" IN {  \\需要转发的域
      type forward;
      forward only;
      forwarders { 192.168.159.138; };
};
zone "1.1.1.in-addr.arpa" IN {
        type forward;
        forward only;
        forwarders { 192.168.159.138; };
};
[root@localhost ~]# systemctl restart named-chroot

客户端验证:

[root@localhost ~]# vim /etc/resolv.conf
nameserver 192.168.159.144
[root@localhost ~]# nslookup www.jan16.com
Server:		192.168.159.144
Address:	192.168.159.144#53
Name:	www.jan16.com
Address: 1.1.1.1
[root@localhost ~]# nslookup 1.1.1.1
1.1.1.1.in-addr.arpa	name = www.jan16.com.

4.4 智能DNS

在我们访问WEB的时候,发现有的网站打开的速度非常快,有的网站打开的非常慢,这是为什么呢?原因就是很多公司为了提升用户的体验,在公司的网站上使用了CDN内容加速服务,使用户可以直接在本地城市的服务器上浏览数据。CDN我们可以暂且理解为本地缓存服务器即可,本章不作扩展。那用户是如何准确找到用户所在城市的本地缓存服务器的呢?原因在于很多CDN公司的DNS服务使用了智能解析功能,可以根据用户的源IP判断是属于哪个城市,然后再把本地的缓存服务器解析给用户,用户便可以在本城市的服务器上获取数据了。

智能解析原理:在DNS中植入全世界的IP库以及IP对应的地域,当用户来请求解析时,DNS会根据其源IP来定位他属于哪个区域,然后去找这个区域的 view 视图查询对应的域名的区域数据库文件做解析。从而使得不同地域的用户解析不同。

实验要求:
jan16.com域名做智能解析:
广州的用户解析IP为 1.1.1.1
北京的用户解析IP为 2.2.2.2
其他用户解析为 3.3.3.3

DNS服务器配置:

[root@localhost ~]# vim /var/named/chroot/etc/named.conf
options {
    listen-on port 53 { any; };
directory     "/var/named";
allow-query     { any; };
};
acl gz { 192.168.159.138; };  \\定义IP库,DNS根据IP库判断源IP属于哪个区域
acl bj { 192.168.159.144; };
view gz {  \\根据地域定义视图,将该区域的客户端的解析请求都由该视图中的zone来解析
        match-clients { gz; };
zone "jan16.com" IN {
        type master;
        file "jan16.com.gz.zone";
};
};

view bj {
        match-clients { bj; };
zone "jan16.com" IN {
        type master;
        file "jan16.com.bj.zone";
};
};

view other {
        match-clients { any; };
zone "jan16.com" IN {
        type master;
        file "jan16.com.any.zone";
};
};
/*  \\使用view需要把所有zone都放在view中,所以将其他涉及到zone的都注释
Zone “.” IN {
   Type hint;
File “named.ca”;
};
*/
#include "/etc/named.rfc1912.zones";
[root@localhost named]# cp -p jan16.com.bj jan16.com.gz.zone
[root@localhost named]# cp -p jan16.com.bj jan16.com.bj.zone
[root@localhost named]# cp -p jan16.com.bj jan16.com.any.zone
[root@localhost named]# vim jan16.com.gz.zone
$TTL 1D
jan16.com.       IN SOA  ns1.jan16.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.jan16.com.
        A       127.0.0.1
        AAAA    ::1
ns1     A      192.168.159.138
www     A      1.1.1.1
news    CNAME  www
[root@localhost named]# vim jan16.com.bj.zone
$TTL 1D
jan16.com.       IN SOA  ns1.jan16.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.jan16.com.
        A       127.0.0.1
        AAAA    ::1
ns1     A      192.168.159.138
www     A      2.2.2.2
news    CNAME  www
[root@localhost named]# vim jan16.com.any.zone
$TTL 1D
jan16.com.       IN SOA  ns1.jan16.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.jan16.com.
        A       127.0.0.1
        AAAA    ::1
ns1     A      192.168.159.138
www     A      3.3.3.3
news    CNAME  www

客户端验证:
在IP为192.168.159.138的客户机验证:

[root@localhost ~]# nslookup www.jan16.com
Server:		192.168.159.138
Address:	192.168.159.138#53
Name:	www.jan16.com
Address: 1.1.1.1

在IP为192.168.159.144的客户机验证:

[root@localhost ~]# nslookup www.jan16.com
Server:		192.168.159.138
Address:	192.168.159.138#53
Name:	www.jan16.com
Address: 2.2.2.2

制作成员: 泽明
排版: 裕新
初审: 杨佳佳
复审: 五廿八

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

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

相关文章

电脑便签工具推荐哪个?电脑上好用的便签软件使用哪一款

对于职场办公人士来讲,一款好用的电脑便签工具可以给日常工作带来极大的便利,如果您的日常工作离不开电脑工具,您就会知晓电脑便签工具在日常工作中的重要,电脑便签通常以一个小的窗口呈现在电脑桌面上,记录一些工作中…

Java修仙记之记录一次与前端女修士论道的经历

文章开始之前,想跟我念一句:福生无量天尊,无量寿佛,阿弥陀佛 第一场论道:id更新之争 一个天气明朗的下午,前端的小美女长发姐告诉我:嘿,小后端,你的代码报错了 我答道&am…

【Java】java | CacheManager | redisCacheManager

一、说明 1、查询增加缓存,使用Cacheable注解 2、项目中已经用到了ehcache,现在需求是两个都用 二、备份配置 1、redisConfig增加代码 Bean("redisCacheManage")Primarypublic CacheManager redisCacheManager(RedisConnectionFactory fact…

iptables的一次修复日志

iptables的一次修复日志 搭建配置wireguard后,使用内网连接设备十分方便,我采用的是星型连接,即每个节点都连接到中心节点,但是突然发生了重启wg后中心节点不转发流量的问题,即每个接入的节点只能与中心节点连接&…

No appropriate protocol -- Mysql

DataGrip连接mysql报以下异常信息: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) The following required algorithms might be disabled: SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5wi…

java-jdbc快速入门

文章目录 简介快速入门 简介 JDBC就是使用Java语言操作关系数据库的一套APIJava DataBase Connectivity 快速入门 -- mysql 中准备工作 create database if not exists my_db; use my_db; create table account(id int,name varchar(20),money int ); insert into account v…

Threejs_09 gltf模型的引入(效果初现)

本节使用到的图片、素材、gltf文件,都是老陈打码的原素材 支持!!!!!!!!!!!!!!!&#x…

Thinkphp-商城项目之oss文件上传及web端直传

4.3头像上传 一般商城网站都会把文件上传到第三方云,例如阿里云(oss),腾讯云(cos),当然如果公司有足够的实力,可以自己部署一台文件服务器,用于文件的保存。 头像上传一般是用户在用户中心上传的,后台管理…

个人如何进行深度复盘?这6大高效的复盘模型,让你的年终总结如虎添翼!

一年之计在于春,一日之计在于晨,而一年的收获与成长,在于这个年终的深度复盘。自我复盘,是对过去一年生活、工作、学习的反思和总结,能帮助我们提炼经验,发现不足,规划未来,以便更好…

DataFunSummit:2023年数据基础架构峰会-核心PPT资料下载

一、峰会简介 正如From、Join、排序等是SQL的基本算子,存储与计算是也是数据架构中数据生产与消费的基本算子,对于数据架构之下的技术栈层级,我们可将其定义为数据基础架构。 数据存储技术在适应大数据时代的规模需求基础之上,持…

模板初阶学习

✨前言✨ 📘 博客主页:to Keep博客主页 🙆欢迎关注,👍点赞,📝留言评论 ⏳首发时间:2023年11月21日 📨 博主码云地址:博主码云地址 📕参考书籍&…

文心一言 VS 讯飞星火 VS chatgpt (140)-- 算法导论11.4 5题

五、用go语言,考虑一个装载因子为a的开放寻址散列表。找出一个非零的a值,使得一次不成功查找的探查期望数是一次成功查找的探查期望数的 2 倍。这两个探查期望数可以使用定理11.6 和定理 11.8 中给定的上界。 文心一言,代码正常运行&#xf…

LENOVO联想ThinkBook 16p G4 IRH(21J8)笔记本电脑原装出厂Windows11系统镜像

链接:https://pan.baidu.com/s/1q1vhzTA_VE4LnLvA-wVx7A?pwdvprc 提取码:vprc lenovo联想ThinkBook16P G4原厂Win11系统自带所有驱动、出厂主题壁纸、Office办公软件、联想电脑管家等预装程序 所需要工具:16G或以上的U盘 文件格式&…

打造高效医患沟通:陪诊小程序开发技术指南

随着科技的不断发展,陪诊小程序作为医患沟通的新工具逐渐成为关注焦点。本文将带领你通过使用React和Node.js技术栈,构建一个功能强大且用户友好的陪诊小程序,实现医患互动的便捷和高效。 1. 准备工作 确保你的开发环境中已安装了Node.js和…

[SWPUCTF 2021 新生赛]非常简单的逻辑题 // %的逆向

代码解密题 flag xxxxxxxxxxxxxxxxxxxxx s wesyvbniazxchjko1973652048$-&*<> result for i in range(len(flag)):s1 ord(flag[i])//17s2 ord(flag[i])%17result s[(s1i)%34]s[-(s2i1)%34] print(result) # result v0b9n1nkajzj0c4jjo3oi1h1i937b395i5y5e0e…

练习题——【学习补档】库函数的模拟实现

各种库函数的模拟实现 一、模拟实现strlen1.地址-地址型2.递归型3.计数器型 二、模拟实现strcpy三、模拟实现strcmp四、模拟实现strcat五、模拟实现strstr 一、模拟实现strlen 模拟实现strlen有三种方法 1.地址-地址型 2.递归型 3.计数器型1.地址-地址型 // //1.地址-地址型 …

新茶饮进入“大逃杀”赛程

2023年&#xff0c;是新茶饮IPO的爆发年&#xff0c;也可能是淘汰赛的起始年。 10月18日&#xff0c;奈雪的茶披露了今年第三季度运营情況&#xff0c;数据显示&#xff0c;截至9月30日&#xff0c;奈雪的茶共经营1360家店。而自7月份开放加盟后&#xff0c;至今只发展了4家加…

区块链技术与应用 【全国职业院校技能大赛国赛题目解析】第五套智能合约安全漏洞测试

第五套题的智能合约安全漏洞测试题目 环境 : ubuntu20 Truffle v5.8.3 (core: 5.8.3) Ganache v7.8.0 Solidity v0.8.3 Node v18.16.0 Web3.js v1.8.2 前言 请在测试的时候开启ganache打开,并且在truffle的配置文件配好ganache,之前两个帖子忘说了/(ㄒoㄒ)/~~ truffle-con…

第四代可燃气体监测仪:可燃气体监测仪在燃气管网中的作用有哪些

燃气管网如同城市的血脉&#xff0c;纵横交错着覆盖在每一寸土地。然而如此复杂的管网&#xff0c;仅靠人工巡查难免有些力不从心。毕竟人工监测的范围有其局限性&#xff0c;难以做到全方位、全天候的紧密监测&#xff0c;难免会有疏忽和遗漏。如何将安全隐患消灭于萌芽状态&a…