《Linux就该这么学》学习笔记——Day16

简介

本次课程讲解了DNS域名解析服务的原理以及作用,介绍了域名查询功能中正向解析与反向解析的作用,并通过实验的方式演示了如何在DNS主服务器上部署正、反解析工作模式。并通过实验验证配置BIND服务,以及主服务器,从服务器和缓存服务器以及DNS分离解析技术。

详情可参考:
使用Bind提供域名解析服务
命令行详解可参考:
https://www.linuxcool.com

DNS域名解析服务

DNS(Domain Name System,域名系统)技术是一项用于管理和解析域名与IP地址对应关系的技术,简单来说,就是能够接受用户输入的域名或IP地址,然后自动查找与之匹配(或者说具有映射关系)的IP地址或域名,即将域名解析为IP地址(正向解析),或将IP地址解析为域名(反向解析)。

DNS域名解析服务采用的目录树层次结构
常见的域名后缀:
.com(商业组织)
.org(非营利组织)
.gov(政府部门)
.net(网络服务商)
.edu(教研机构)
.pub(公共大众)
.cn(中国国家顶级域名)

DNS技术提供了三种类型的服务器

主服务器:在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系。

从服务器:从主服务器中获得域名与IP地址的对应关系并进行维护,以防主服务器宕机等情况。

缓存服务器:通过向其他域名解析服务器查询获得域名与IP地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询时的效率。

主服务器:用于管理域名和IP地址对应关系的真正服务器
从服务器:同步主服务器域名和IP地址对应关系以便让用户就近查询域名,从而减轻主服务器的负载压力。
缓存服务器:转发用于加速用户的域名查询请求

DNS域名解析服务查询请求具有递归查询和迭代查询两种方式。
递归查询,是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。
迭代查询则是指,DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。
13台根DNS服务器的具体信息:
名称 管理单位 地理位置 IP地址
A INTERNIC.NET 美国-弗吉尼亚州 198.41.0.4
B 美国信息科学研究所 美国-加利弗尼亚州 128.9.0.107
C PSINet公司 美国-弗吉尼亚州 192.33.4.12
D 马里兰大学 美国-马里兰州 128.8.10.90
E 美国航空航天管理局 美国加利弗尼亚州 192.203.230.10
F 因特网软件联盟 美国加利弗尼亚州 192.5.5.241
G 美国国防部网络信息中心 美国弗吉尼亚州 192.112.36.4
H 美国陆军研究所 美国-马里兰州 128.63.2.53
I Autonomica公司 瑞典-斯德哥尔摩 192.36.148.17
J VeriSign公司 美国-弗吉尼亚州 192.58.128.30
K RIPE NCC 英国-伦敦 193.0.14.129
L IANA 美国-弗吉尼亚州 199.7.83.42
M WIDE Project 日本-东京 202.12.27.33

安装Bind服务程序

Berkeley互联网贡献:FreeBSD,RAID,BIND

BIND(Berkeley Internet Name Domain,伯克利因特网名称域)服务是全球范围内使用最广泛、最安全可靠且高效的域名解析服务程序。
DNS域名解析服务作为互联网基础设施服务,建议大家在生产环境中安装部署bind服务程序时加上chroot(俗称牢笼机制)扩展包,以便有效地限制bind服务程序仅能对自身的配置文件进行操作,以确保整个服务器的安全。

yum install bind-chroot

bind服务程序三个配置文件:
主配置文件(/etc/named.conf):用来定义bind服务程序的运行。
区域配置文件(/etc/named.rfc1912.zones):用来保存域名和IP地址对应关系的所在位置。对应着每个域和相应IP地址所在的具体位置,当需要查看或修改时,可根据这个位置找到相关文件。
数据配置文件目录(/var/named):该目录用来保存域名和IP地址真实对应关系的数据配置文件。

在Linux系统中,bind服务程序的名称为named。首先需要在/etc目录中找到该服务程序的主配置文件,然后把第11行和第17行的地址均修改为any,分别表示服务器上的所有IP地址均可提供DNS域名解析服务,以及允许所有人对本服务器发送DNS查询请求。

vim /etc/named.conf
 10 options {
 11 listen-on port 53 { any; };//服务器上的所有IP地址均可提供DNS域名解析服务
 12 listen-on-v6 port 53 { ::1; };
 13 directory "/var/named";
 14 dump-file "/var/named/data/cache_dump.db";
 15 statistics-file "/var/named/data/named_stats.txt";
 16 memstatistics-file "/var/named/data/named_mem_stats.txt";
 17 allow-query { any; };//允许所有人对本服务器发送DNS查询请求

bind服务程序的区域配置文件(/etc/named.rfc1912.zones)用来保存域名和IP地址对应关系的所在位置。在这个文件中,定义了域名与IP地址解析规则保存的文件位置以及服务类型等内容,而没有包含具体的域名、IP地址对应关系等信息。服务类型有三种,分别为hint(根区域)、master(主区域)、slave(辅助区域),其中常用的master和slave指的就是主服务器和从服务器。
在这里插入图片描述
在这里插入图片描述

正向解析实验

在DNS域名解析服务中,正向解析是指根据域名(主机名)查找到对应的IP地址。

第1步:编辑区域配置文件。

zone "Linuxprobe.com" IN {
type master;#服务器类型为主服务器类型
file "linuxprobe.com.zone";#域名和IP地址解析规则保存的文件位置即数据配置文件
allow-update {none;};#不允许客户机动态更新解析信息
}

第2步:编辑数据配置文件。
从/var/named目录中复制一份正向解析的模板文件(named.localhost),然后把域名和IP地址的对应数据填写数据配置文件中并保存。
在复制时记得加上-a参数,保留原始文件的所有者、所属组、权限属性等信息,以便让bind服务程序顺利读取文件内容:

cd /var/named/
ls -al named.localhost
-rw-r-----. 1 root named 152 Jun 21 2007 named.localhost
cp -a named.localhost linuxprobe.com.zone

编辑数据配置文件。在保存并退出后文件后记得重启named服务程序,让新的解析数据生效。考虑到正向解析文件中的参数较多,而且相对都比较重要,刘遄老师在每个参数后面都作了简要的说明。

vim linuxprobe.com.zone
$TTL 1D 	#生存周期为1天 				
@ 	IN SOA 	linuxprobe.com. 	root.linuxprobe.com. 	( 	
	#授权信息开始: 	#DNS区域的地址 	#域名管理员的邮箱(不要用@符号) 	
				0;serial 	#更新序列号
				1D;refresh 	#更新时间
				1H;retry 	#重试延时
				1W;expire 	#失效时间
				3H;)minimum 	#无效解析记录的缓存时间
	NS 	ns.linuxprobe.com. 	#域名服务器记录
ns 	IN A 	192.168.10.10 	#地址记录(ns.linuxprobe.com.)
	IN MX 10 	mail.linuxprobe.com. 	#邮箱交换记录
mail 	IN A 	192.168.10.10 	#地址记录(mail.linuxprobe.com.)
www 	IN A 	192.168.10.10 	#地址记录(www.linuxprobe.com.)
bbs 	IN A 	192.168.10.20 	#地址记录(bbs.linuxprobe.com.)

systemctl restart named

[root@linuxprobe named]# vim linuxprobe.com.zone
[root@linuxprobe named]# systemctl restart named

第3步:检验解析结果。为了检验解析结果,一定要先把Linux系统网卡中的DNS地址参数修改成本机IP地址,这样就可以使用由本机提供的DNS查询服务了。
nslookup命令用于检测能否从DNS服务器中查询到域名与IP地址的解析记录。

systemctl restart network
nslookup#为交互模式
> www.linuxprobe.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.linuxprobe.com
Address: 192.168.10.10

反向解析实验

在DNS域名解析服务中,反向解析的作用是将用户提交的IP地址解析为对应的域名信息,它一般用于对某个IP地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件。

第1步:编辑区域配置文件。在编辑该文件时,除了不要写错格式之外,还需要记住此处定义的数据配置文件名称,因为一会儿还需要在/var/named目录中建立与其对应的同名文件。反向解析是把IP地址解析成域名格式,因此在定义zone(区域)时应该要把IP地址反写,比如原来是192.168.10.0,反写后应该就是10.168.192,而且只需写出IP地址的网络位即可。把下列参数添加至正向解析参数的后面。

vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {
type master;
file "linuxprobe.com.zone";
allow-update {none;};
};
zone "10.168.192.in-addr.arpa" IN {
type master;
file "192.168.10.arpa";
};

第2步:编辑数据配置文件。首先从/var/named目录中复制一份反向解析的模板文件(named.loopback),然后把下面的参数填写到文件中。
在这里插入图片描述

cp -a named.loopback 192.168.10.arpa
vim 192.168.10.arpa
$TTL 1D 		#生存周期为1天 			
@ 	IN SOA 	linuxprobe.com. 	root.linuxprobe.com. 	(
#授权信息开始: 	#DNS区域的地址 	#域名管理员的邮箱(不要用@符号) 	
				0;serial		#更新序列号
				1D;refresh		#更新时间
				1H;retry		#重试延时
				1W;expire		#失效时间
				3H);minimum		#无效解析记录的缓存时间
	NS 	ns.linuxprobe.com. 		#域名服务器记录
ns 	A 	192.168.10.10 			#地址记录(ns.linuxprobe.com.)
10 	PTR 	ns.linuxprobe.com. 	#PTR为指针记录,仅用于反向解析中。
10 	PTR 	mail.linuxprobe.com. 	#对应192.168.10.10
10 	PTR 	www.linuxprobe.com. 	#对应192.168.10.10
20 	PTR 	bbs.linuxprobe.com. 	#对应192.168.10.20

systemctl restart named

第3步:检验解析结果。

nslookup
> 192.168.10.10
Server: 127.0.0.1
Address: 127.0.0.1#53
10.10.168.192.in-addr.arpa name = ns.linuxprobe.com.
10.10.168.192.in-addr.arpa name = www.linuxprobe.com.
10.10.168.192.in-addr.arpa name = mail.linuxprobe.com.

部署从服务器

在DNS域名解析服务中,从服务器可以从主服务器上获取指定的区域数据文件,从而起到备份解析记录与负载均衡的作用,因此通过部署从服务器可以减轻主服务器的负载压力,还可以提升用户的查询效率。

主机名称 操作系统 IP地址
主服务器 RHEL 7 192.168.10.10
从服务器 RHEL 7 192.168.10.20

第1步:在主服务器的区域配置文件中允许该从服务器的更新请求,即修改allow-update {允许更新区域信息的主机地址;};参数,然后重启主服务器的DNS服务程序。

vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {
type master;			#主服务器类型
file "linuxprobe.com.zone";	#域名和IP地址解析规则保存的文件位置即数据配置文件
allow-update { 192.168.10.20; }	#允许192.168.10.20动态更新解析信息
};
zone "10.168.192.in-addr.arpa" IN {
type master;
file "192.168.10.arpa";
allow-update { 192.168.10.20; };
};

systemctl restart named

第2步:在从服务器中填写主服务器的IP地址与要抓取的区域信息,然后重启服务。注意此时的服务类型应该是slave(从),而不再是master(主)。masters参数后面应该为主服务器的IP地址,而且file参数后面定义的是同步数据配置文件后要保存到的位置,稍后可以在该目录内看到同步的文件。

vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {
type slave;											#服务器类型为从服务器
masters { 192.168.10.10; };				#主服务器的IP地址
file "slaves/linuxprobe.com.zone";	#同步数据配置文件后要保存到的位置
};
zone "10.168.192.in-addr.arpa" IN {
type slave;											#服务器类型为从服务器
masters { 192.168.10.10; };				#主服务器的IP地址
file "slaves/192.168.10.arpa";			#同步数据配置文件后要保存到的位置
};
systemctl restart named

第3步:检验解析结果。
当从服务器的DNS服务程序在重启后,一般就已经自动从主服务器上同步了数据配置文件,而且该文件默认会放置在区域配置文件中所定义的目录位置中。
随后修改从服务器的网络参数,把DNS地址参数修改成192.168.10.20,这样即可使用从服务器自身提供的DNS域名解析服务。
最后使用nslookup命令查看解析结果。

cd /var/named/slaves
 ls 
192.168.10.arpa linuxprobe.com.zone
nslookup
> www.linuxprobe.com 		#正向解析
Server: 192.168.10.20
Address: 192.168.10.20#53
Name: www.linuxprobe.com
Address: 192.168.10.10
> 192.168.10.10				#反向解析
Server: 192.168.10.20
Address: 192.168.10.20#53
10.10.168.192.in-addr.arpa name = www.linuxprobe.com.
10.10.168.192.in-addr.arpa name = ns.linuxprobe.com.
10.10.168.192.in-addr.arpa name = mail.linuxprobe.com.

安全的加密传输

bind服务程序为了提供安全的解析服务,已经对TSIG(RFC 2845)加密机制提供了支持。
TSIG主要是利用了密码编码的方式来保护区域信息的传输(Zone Transfer),即TSIG加密机制保证了DNS服务器之间传输域名区域信息的安全性。

实验环境主服务器与从服务器分别使用的操作系统与IP地址信息
主机名称 操作系统 IP地址
主服务器 RHEL 7 192.168.10.10
从服务器 RHEL 7 192.168.10.20

systemctl restart named
ls -al /var/named/slaves/
total 12
drwxrwx---. 2 named named 54 Jun 7 16:02 .
drwxr-x---. 6 root named 4096 Jun 7 15:58 ..
-rw-r--r--. 1 named named 432 Jun 7 16:02 192.168.10.arpa
-rw-r--r--. 1 named named 439 Jun 7 16:02 linuxprobe.com.zone
rm -rf /var/named/slaves/*

第1步:在主服务器中生成密钥。
dnssec-keygen命令用于生成安全的DNS服务密钥,其格式为“dnssec-keygen [参数]”

dnssec-keygen命令的常用参数及作用:
参数 作用
-a 指定加密算法,包括RSAMD5(RSA)、RSASHA1、DSA、NSEC3RSASHA1、NSEC3DSA等
-b 密钥长度(HMAC-MD5的密钥长度在1~512位之间)
-n 密钥的类型(HOST表示与主机相关)

#生成一个主机相关名称为master-slave的128位HMAC-MD5算法的密钥文件
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave
ls -al Kmaster-slave.+157+46845.*
-rw-------. 1 root root 56 Jun 7 16:06 Kmaster-slave.+157+46845.key
-rw-------. 1 root root 165 Jun 7 16:06 Kmaster-slave.+157+46845.private
cat Kmaster-slave.+157+46845.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: 1XEEL3tG5DNLOw+1WHfE3Q==
Bits: AAA=
Created: 20170607080621
Publish: 20170607080621
Activate: 20170607080621

第2步:在主服务器中创建密钥验证文件。进入bind服务程序用于保存配置文件的目录,把刚刚生成的密钥名称、加密算法和私钥加密字符串按照下面格式写入到tansfer.key传输配置文件中。
为了安全起见,我们需要将文件的所属组修改成named,并将文件权限设置得要小一点,然后把该文件做一个硬链接到/etc目录中。

cd /var/named/chroot/etc/
vim transfer.key
key "master-slave" {
algorithm hmac-md5;
secret "1XEEL3tG5DNLOw+1WHfE3Q==";
};
chown root:named transfer.key
chmod 640 transfer.key
ln transfer.key /etc/transfer.key

第3步:开启并加载Bind服务的密钥验证功能。
首先需要在主服务器的主配置文件中加载密钥验证文件,然后进行设置,使得只允许带有master-slave密钥认证的DNS服务器同步数据配置文件:

vim /etc/named.conf
 9 include "/etc/transfer.key";
  18 allow-transfer { key master-slave; };
  
systemctl restart named

[root@linuxprobe ~]# systemctl restart named

清空DNS从服务器同步目录中所有的数据配置文件,然后再次重启bind服务程序,这时就已经不能像刚才那样自动获取到数据配置文件了。

rm -rf /var/named/slaves/*
systemctl restart named
ls  /var/named/slaves/

第4步:配置从服务器使其支持密钥验证。配置DNS从服务器和主服务器的方法大致相同,都需要在bind服务程序的配置文件目录中创建密钥认证文件,并设置相应的权限,然后把该文件做一个硬链接到/etc目录中。

cd /var/named/chroot/etc
vim transfer.key
key "master-slave" {
algorithm hmac-md5;
secret "1XEEL3tG5DNLOw+1WHfE3Q==";
};

chown root:named transfer.key
chmod 640 transfer.key
ln transfer.key /etc/transfer.key

[root@linuxprobe ~]# cd /var/named/chroot/etc
[root@linuxprobe etc]# vim transfer.key
key “master-slave” {
algorithm hmac-md5;
secret “1XEEL3tG5DNLOw+1WHfE3Q==”;
};
[root@linuxprobe etc]# chown root:named transfer.key
[root@linuxprobe etc]# chmod 640 transfer.key
[root@linuxprobe etc]# ln transfer.key /etc/transfer.key

第5步:开启并加载从服务器的密钥验证功能。这一步的操作步骤也同样是在主配置文件中加载密钥认证文件,然后按照指定格式写上主服务器的IP地址和密钥名称。
注意,密钥名称等参数位置不要太靠前,大约在第43行比较合适,否则bind服务程序会因为没有加载完预设参数而报错:

vim /etc/named.conf
43 server 192.168.10.10
44 {
45 keys { master-slave; };
46 }; 

第6步:DNS从服务器同步域名区域数据。
两台服务器的bind服务程序都已配置妥当,并匹配到了相同的密钥认证文件。接下来在从服务器上重启bind服务程序,可以发现又能顺利地同步到数据配置文件了。

systemctl restart named
ls /var/named/slaves/
192.168.10.arpa  linuxprobe.com.zone

部署缓存服务器

缓存服务器就是把用户经常使用到的域名与IP地址的解析记录保存在主机本地,从而提升下次解析的效率。缓存服务器是否可以成功解析还与指定的上级DNS服务器的允许策略有关。

第1步:配置系统的双网卡参数。前面讲到,缓存服务器一般用于企业内网,旨在降低内网用户查询DNS的时间消耗。

用于配置Linux虚拟机系统所需的参数信息:
主机名称 操作系统 IP地址
缓存服务器 RHEL 7 网卡(外网):根据物理设备的网络参数进行配置(通过DHCP或手动方式指定IP地址与网关等信息)
网卡(内网):192.168.10.10
客户端 RHEL 7 192.168.10.20

第2步:在bind服务程序的主配置文件中添加缓存转发参数。
添加一行参数“forwarders { 上级DNS服务器地址; };”即可,上级DNS服务器地址指的是获取数据配置文件的服务器。
请先测试是否可以ping通,以免导致DNS域名解析失败。

vim /etc/named.conf
9 options {
10 listen-on port 53 { any; };
11 listen-on-v6 port 53 { ::1; };
12 directory "/var/named";
13 dump-file "/var/named/data/cache_dump.db";
14 statistics-file "/var/named/data/named_stats.txt";
15 memstatistics-file "/var/named/data/named_mem_stats.txt";
16 allow-query { any; };
17 forwarders { 210.73.64.1; };#上级DNS服务器地址指的是获取数据配置文件的服务器

systemctl restart named

第3步:重启DNS服务,验证成果。把客户端主机的DNS服务器地址参数修改为DNS缓存服务器的IP地址192.168.10.10,即可让客户端使用本地DNS缓存服务器提供的域名查询解析服务。

nslookup
> www.linuxprobe.com
Server: 192.168.10.10
Address: 192.168.10.10#53

Non-authoritative answer:
Name: www.linuxprobe.com
Address: 113.207.76.73
Name: www.linuxprobe.com
Address: 116.211.121.154

分离解析技术

DNS服务的分离解析功能,即可让位于不同地理范围内的用户通过访问相同的网址,而从不同的服务器获取到相同的数据。

不同主机的操作系统与IP地址情况
主机名称 操作系统 IP地址
DNS服务器 RHEL 7 北京网络:122.71.115.10 美国网络:106.185.25.10
北京用户 Windows 7 122.71.115.1
海外用户 Windows 7 106.185.25.1

第1步:修改bind服务程序的主配置文件由于配置的DNS分离解析功能与DNS根服务器配置参数有冲突,所以需要把第51~54行的根域信息删除。

vim /etc/named.conf
………………省略部分输出信息………………
 44 logging {
 45 channel default_debug {
 46 file "data/named.run";
 47 severity dynamic;
 48 };
 49 };
 50 #把第51~54行的根域信息删除
 51 #zone "." IN {
 52 #type hint;
 53 #file "named.ca";
 54 #};
 55 
 56 include "/etc/named.rfc1912.zones";
 57 include "/etc/named.root.key";
 58
………………省略部分输出信息………………

第2步:编辑区域配置文件。
首先使用acl参数分别定义两个变量名称(china与american),当下面需要匹配IP地址时只需写入变量名称即可,这样不仅容易阅读识别,而且也利于修改维护。
view参数的作用是通过判断用户的IP地址是中国的还是美国的,然后去分别加载不同的数据配置文件(linuxprobe.com.china或linuxprobe.com.american)。

vim /etc/named.rfc1912.zones
1 acl "china" { 122.71.115.0/24; };
2 acl "american" { 106.185.25.0/24;};
3 view "china"{
4 match-clients { "china"; };
5 zone "linuxprobe.com" {
6 type master;
7 file "linuxprobe.com.china";
8 };
9 };
10 view "american" {
11 match-clients { "american"; };
12 zone "linuxprobe.com" {
13 type master;
14 file "linuxprobe.com.american";
15 };
16 };

第3步:建立数据配置文件。分别通过模板文件创建出两份不同名称的区域数据文件,其名称应与上面区域配置文件中的参数相对应。

cd /var/named
cp -a named.localhost linuxprobe.com.china
cp -a named.localhost linuxprobe.com.american
vim linuxprobe.com.china
$TTL 1D 	#生存周期为1天 				
@ 	IN SOA 	linuxprobe.com. 	root.linuxprobe.com. 	( 	
	#授权信息开始: 	#DNS区域的地址 	#域名管理员的邮箱(不要用@符号) 	
				0;serial 	#更新序列号
				1D;refresh 	#更新时间
				1H;retry 	#重试延时
				1W;expire 	#失效时间
				3H;)minimum 	#无效解析记录的缓存时间
	NS 	ns.linuxprobe.com. 	#域名服务器记录
ns 	IN A 	122.71.115.10 	#地址记录(ns.linuxprobe.com.)
www 	IN A 	122.71.115.15 	#地址记录(www.linuxprobe.com.)

vim linuxprobe.com.american
$TTL 1D 	#生存周期为1天 				
@ 	IN SOA 	linuxprobe.com. 	root.linuxprobe.com. 	( 	
	#授权信息开始: 	#DNS区域的地址 	#域名管理员的邮箱(不要用@符号) 	
				0;serial 	#更新序列号
				1D;refresh 	#更新时间
				1H;retry 	#重试延时
				1W;expire 	#失效时间
				3H;)minimum 	#无效解析记录的缓存时间
	NS 	ns.linuxprobe.com. 	#域名服务器记录
ns 	IN A 	106.185.25.10 	#地址记录(ns.linuxprobe.com.)
www 	IN A 	106.185.25.15 	#地址记录(www.linuxprobe.com.)

第4步:重新启动named服务程序,验证结果。
将客户端主机(Windows系统或Linux系统均可)的IP地址分别设置为122.71.115.1与106.185.25.1,将DNS地址分别设置为服务器主机的两个IP地址,使用nslookup查看确认即可.
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值