当前位置:   article > 正文

linux上外网和内网环境配置NTP时间同步详解~【基于chrony服务,效率更高的方法】、chrony不能同步时间排错详解、timedatactl命令修改时间和时区等说明【4.7万字符详细说明】_linux内网同步时间服务器

linux内网同步时间服务器

文章目录

内网搭建说明

  • 我可气死了,因为我这是在内网环境搭建的ntp嘛,所以真的搭建起来一堆问题 费我一天时间了,各种百度找文献,没有一篇文章是说内网环境的,而且网上文章的搭建服务真的超级简单,也不会出现不同步这种情况,我这各种照着网上的方法来弄,就是不同步。。。

  • 网上不同步的的原因,翻来覆去就是那几种情况,可是我这都排除了。。。唉心累。

  • 但是 网上没人发布内网环境搭建chronyd服务,我这不就发布了嘛~ 过程可谓一波三折了,但是不要紧,反正我最终各种尝试,弄出了真正可行的内网搭建ntp服务方法,你如果内网搭建遇到问题,直接留言,一起沟通学习。

  • 另外,你在网上其他地方看的chrony,是不是感觉都很简单? 可是我用了4.7万字数来做说明,你觉得这个还简不简单?
    在这里插入图片描述

NTP说明

  • NTP 是 Network Time Protocol 的缩写,也即 网络时间协议,一种在 Linux 上保持准确时间的协议,它和网络上可用的 NTP 服务器保持着时钟同步

  • 在 Linux 中,保持准确的日期和时间至关重要,因为许多服务(如 cron 作业和脚本)依赖于准确的时间才能得到预期的结果

  • 用于同步日期和时间的 ntpd 服务,在新的Linux发行版 ( centos8、Ubuntu 20.04、Fedora 30 ) 中已经废弃了,取而代之的是 chrony【低版本这个方法也是能用的】

  • 当然,选择 chrony 是有原因的,相比 ntpd , 它有如下的优点:

    • 1、时间同步的速度比 ntpd 更快

    • 2、chrony 很好的处理了同步延迟以及网络延迟

    • 3、即使出现网络降级,chrony 仍然能正常工作

    • 4、本地机器可以作为时间服务器,其他机器从这台服务器上同步时间

  • 所以我下面用服务是chrony而非ntp,但实现原理是一样的哈。

chrony说明

简介

  • 集群中节点之间需要时间同步,Chronyd不依赖外部的时间服务NTP,在内部搭建时间服务器。

  • Chrony是网络时间协议(NTP)的一种实现,是一个类Unix系统上NTP客户端和服务器的替代品。Chrony客户端可以与NTP servers同步系统时间,也可以与参考时钟(例如:GPS接受设备)进行同步,还与手动输入的时间进行同步。同样Chrony也可以作为一个NTPv4(RFC 5905) server为其他计算机提供时间同步服务。

  • Chrony 可以更快的同步系统时钟,具有更好的时钟准确度,并且它对于那些不是一直在线的系统很有帮助。Chrony在Internet上同步的两台机器之间的典型精度在几毫秒内,而在LAN上的机器之间的精度在几十微秒内。chronyd 更小、更节能,它占用更少的内存且仅当需要时它才唤醒 CPU。即使网络拥塞较长时间,它也能很好地运行。它支持 Linux 上的硬件时间戳,允许在本地网络进行极其准确的同步。Chrony 是自由开源的,并且支持 GNU/Linux 和 BSD 衍生版(比如 FreeBSD、NetBSD)、macOS 和 Solaris 等。

chrony和ntp的区别

  • (1)chronyd做的比ntpd好的
    • chronyd可以在时断时续访问参考时间源的环境下工作,而ntpd需要定期轮询参考时间源才能正常工作。
    • 即使网络拥塞时间更长,chronyd也可以运行良好。
    • chronyd通常可以更快、更准确地同步时钟。
    • chronyd能够快速适应晶体振荡器温度变化引起的时钟频率的突然变化,而ntpd可能需要很长时间才能稳定下来。
    • 在默认配置下,为了不影响其他正在运行的程序,chronyd从不在系统启动同步时钟之后执行时间步进。ntpd也可以配置为从不步进时间,但它必须使用不同的方法来调整时钟,这有一些缺点,包括对时钟精度的负面影响。
    • chronyd可以在更大的范围内调整Linux系统上的时钟频率,这使得它甚至可以在时钟损坏或不稳定的机器上运行。例如,在一些虚拟机上。
    • chronyd体积更小,占用的内存更少,而且只有在必要的时候才会唤醒CPU,这对于节能来说是更好的选择。
  • (2)chronyd能做的但ntpd做不到的
    • chronyd提供了对孤立网络的支持,在孤立网络中,时间校正的唯一方法就是手动输入。例如,由管理员查看时钟。chronyd可以检查在不同的更新中修正的错误,从而估算出计算机增加或减少时间的速度,并在随后使用这个估算来调整计算机时钟。
    • chronyd可以计算RTC时钟(在计算机关闭时保持时间的时钟)的增益和损耗率。它可以在系统启动时使用这些计算的数据,以及从RTC时钟获取的时间调整值来设置系统时间。RTC时钟设备目前仅在Linux系统上可用。
      支持Linux上的硬件时间戳,允许在本地网络上进行非常精确的同步。
  • (3)ntpd做得到但chronyd做不到的
    • ntpd支持NTP v4(RFC 5905)的所有同步模式,包括broadcast、multicast和manycast clients and servers模式。请注意,broadcast和multicast模式(即使有身份验证)与普通servers and clients模式相比,更不精确、更不安全,通常应避免使用。
    • ntpd支持使用公钥加密的Autokey协议(RFC 5906)对服务器进行身份验证。注意,该协议已被证明是不安全的,可能会被Network Time Security(NTS)取代。
    • ntpd包含很多参考时间源的驱动程序,而chronyd依赖于其他程序(例如gpsd),以使用共享内存(SHM)或Unix domain socket(SOCK)访问参考时间源的数据。
  • (4)chronyd与ntpd,该怎么选
    • 除了由不支持Chrony的工具管理或监视的系统,或者具有不能与Chrony一起使用的硬件参考时钟的系统之外,其他系统都应该首选Chrony。
    • 需要使用Autokey协议对数据包进行身份验证的系统只能使用ntpd,因为chronyd不支持这个协议。Autokey协议存在严重的安全问题,应避免使用该协议。使用对称密钥进行身份验证,而不是使用Autokey,这是chronyd和ntpd都支持的。Chrony支持更强的哈希函数,如SHA256和SHA512,而ntpd只能使用MD5和SHA1。

chrony的组成与端口说明

  • chrony 是由 守护进程 chronyd 以及 命令行工具 chronyc 组成的,具体如下图
    在这里插入图片描述

  • chronyd 在后台静默运行并通过 123 端口与时间服务器定时同步时间,默认的配置文件是 /etc/chrony.conf

  • chronyc 通过 323 端口与 chronyd 交互,可监控 chronyd 的性能并在运行时更改各种操作参数
    chronyc 通过下面的方式访问 chronyd

    • 1、通过 IPv4 或 IPv6 访问
    • 2、通过 Unix 域 socket, 但只能访问到本地的 chronyd,而且需要 root 用户或者 chrony 用户才能访问
  • chronyd和ntp一样,端口都是udp

[root@yum-centos-dmz ~]# netstat -nulp | grep chro
udp        0      0 0.0.0.0:123             0.0.0.0:*                           8938/chronyd        
udp        0      0 127.0.0.1:323           0.0.0.0:*                           8938/chronyd        
udp6       0      0 ::1:323                 :::*                                8938/chronyd        
[root@yum-centos-dmz ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 默认情况下,chronyc 先通过 Unix 域 socket 访问 chronyd,默认的 socket 文件是 /var/run/chrony/chronyd.sock, 如果失败(常见的原因是使用非 root 用户运行 chronyc ),将尝试通过 127.0.0.1 访问 chronyd

chrony安装和命令管理说明

  • 在新的 Linux 发行版(centos8、Ubuntu 20.04、Fedora 30)及以后的版本中,系统默认已经安装了 chrony,在这之前的版本是没有安装的,可以使用下面的命令进行安装
    yum install chrony -y
  • 安装完成后,chrony 服务默认会自动加到 systemctl 中管理,下面列出了一些常用的命令
#查询 chronyd 服务状态
systemctl status chronyd     

#启动 chronyd 服务
systemctl start chronyd   

#关闭 chronyd 服务
systemctl stop chronyd   

#重启 chronyd 服务
systemctl restart chronyd   

#设置 chronyd 服务开机自启
systemctl enable chronyd
systemctl daemon-reload
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

启动服务报错处理

另外,启动 chronyd 服务的时候如果出现下面截图中的错误,需要安装或者升级 libsepolpolicycoreutils-python【最小化安装的系统可能会出现这种问题】
查看日志或者执行journalctl -xe均可查看报错内容~
在这里插入图片描述

  • 具体的问题说明详见Red Hat Bugzilla – Bug 1592775

  • 解决方法 安装 libsepol 和 policycoreutils-python
    yum install libsepol policycoreutils-python -y

chrony常用配置参数说明

  • 守护进程 chronyd 的默认配置文件是 /etc/chrony.conf,其中可配置项很多,这里介绍一些常用的
配置项 说明
server 客户端需找哪个服务器询问当前时间
pool 同 server 配置项
driftfile 本地时钟和服务器时钟的预估漂移保存到哪个文件中
makestep 纠正客户端时间的步进参数
rtcsync 是否允许内核同步实时时钟
allow 允许客户端通过内网地址同步时钟
local stratum 10 开启,即使server指令种时间服务器不可用,也允许将本地时间作为标准时间授予其他客户端
logdir 日志目录

chronyd常用命令说明

  • 查看时间同步源状态: chronyc sourcestats -v 【-v是列出详细,可以不要】
  • 立即校准时间服务器:chronyc tracking 【配置的时候默认是自动校准的,一般用于服务端修改时间了,客户端立即校准用】
  • 启用NTP时间同步: timedatectl set-ntp yes【默认是启用的,timedatectl命令可以查看状态】
  • 查看客户端连接情况【服务端执行】:chronyc clients
  • 列出ntp状态详细:timedatectl
    下面timedatectl说明中有详细介绍哈
    • 设置硬件时间
      硬件时间默认为UTC: timedatectl set-local-rtc 1/0
      • 设置硬件时钟为本地时间:timedatectl set-local-rtc 1
      • 设置硬件时钟为UTC时间:timedatectl set-local-rtc 0
    • 启用NTP时间同步: timedatectl set-ntp yes
    • 开启 NTP:timedatectl set-ntp true/flase
    • 校准时间服务器: chronyc tracking
[root@yum-centos-dmz ~]# timedatectl 
      Local time: Wed 2022-07-06 09:53:00 CST
  Universal time: Wed 2022-07-06 01:53:00 UTC
        RTC time: Wed 2022-07-06 01:44:58
       Time zone: Asia/Shanghai (CST, +0800)  # 当前zone【我们要 +8 才正常】 最后timedatectl命令有说如何定义
     NTP enabled: yes   # ntp是否启用
NTP synchronized: yes  # 是否完成过一次ntp同步
 RTC in local TZ: no    #是否启用rtc时间【我们为cst+8,所以这为no才是正常的】
      DST active: n/a
[root@yum-centos-dmz ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

ntpdate客户端立即更新时间

  • 立即更新时间,我们可以使用ntpdate
    这个还是比较好用的,如果服务端时间更新了,客户端没有及时更新,可以执行这个命令
    如下,我在服务端更新时间了
[root@ccx_server128 ~]# date
2022年 03月 01日 星期二 01:10:04 CST
[root@ccx_server128 ~]# timedatectl set-time "2022-02-28 17:10:34"
Failed to set time: Automatic time synchronization is enabled
[root@ccx_server128 ~]# timedatectl 
      Local time: 二 2022-03-01 01:13:18 CST
  Universal time: 一 2022-02-28 17:13:18 UTC
        RTC time: 一 2022-02-28 17:13:18
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
[root@ccx_server128 ~]# timedatectl set-time "2022-06-28 17:10:34"
Failed to set time: Automatic time synchronization is enabled
[root@ccx_server128 ~]# timedatectl set-ntp no
[root@ccx_server128 ~]# timedatectl set-time "2022-02-28 17:13:55"
[root@ccx_server128 ~]# date
2022年 02月 28日 星期一 17:13:57 CST
[root@ccx_server128 ~]# timedatectl 
      Local time: 一 2022-02-28 17:14:02 CST
  Universal time: 一 2022-02-28 09:14:02 UTC
        RTC time: 一 2022-02-28 09:14:02
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
[root@ccx_server128 ~]# timedatectl set-ntp yes
[root@ccx_server128 ~]# 

# 然后我去客户端立即获取。。。多香啊
[root@ccx_server129 ~]# date
Tue Mar  1 01:15:13 CST 2022
[root@ccx_server129 ~]# 
[root@ccx_server129 ~]# ntpdate 192.168.59.128
28 Feb 17:15:37 ntpdate[46458]: step time server 192.168.59.128 offset -28789.784156 sec
[root@ccx_server129 ~]# date
Mon Feb 28 17:15:39 CST 2022
[root@ccx_server129 ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 当然,这也带来一个问题,好像chronyd状态出问题了,不是^*了,然后重启一下又恢复正常,所以,可能这个netdate和重启服务效果一样吧。
[root@ccx_server129 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^? ccx_server128                 0   6   377     -     +0ns[   +0ns] +/-    0ns
[root@ccx_server129 ~]# systemctl restart chronyd #重启了
[root@ccx_server129 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^? ccx_server128                10   6     1     2  -3874ns[-3874ns] +/-  106us
[root@ccx_server129 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* ccx_server128                10   6     7     1  +1884ns[-7831ns] +/-   99us
[root@ccx_server129 ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

内网chrony配置时间同步

内网环境服务端配置

  • 守护进程 chronyd 既可作为客户端 与 服务器同步时间,又可作为一个服务器,接受其他客户端同步时间的请求

  • 下面以配置局域网时间服务器为例来说明 chronyd 的客户端和服务器的配置,虚拟机规划如下:

用途 ip 系统 配置前系统时间
服务端ip 192.168.59.128 CentOS Linux release 7.6.1810 (Core) 2022年 02月 28日 星期一 19:41:38 CST
客户端ip 192.168.59.129 CentOS Linux release 7.6.1810 (Core) Mon Feb 28 06:46:54 EST 2022
  • 注:我上面2台虚拟机没有通公网的,所以我下面安装服务用的是本地源方式搭建。

时区确定

  • 配置前先执行timedatectl 如果是UTC时间,如下UTC,+0,则需要修改时区
[root@test21 ~]# timedatectl 
      Local time: Wed 2022-07-06 06:50:32 UTC
  Universal time: Wed 2022-07-06 06:50:32 UTC
        RTC time: Wed 2022-07-06 06:50:32
       Time zone: UTC (UTC, +0000)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
[root@test21 ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 修改方式为: timedatectl set-timezone Asia/Shanghai,修改后正确信息如下
[root@test21 ~]# timedatectl set-timezone Asia/Shanghai
[root@test21 ~]# timedatectl 
      Local time: Wed 2022-07-06 14:54:56 CST
  Universal time: Wed 2022-07-06 06:54:56 UTC
        RTC time: Wed 2022-07-06 06:54:56
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
[root@test21 ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

安装chrony

[root@ccx_server128 ~]# yum install -y chrony
[root@ccx_server128 ~]# 
[root@ccx_server128 ~]# systemctl enable chronyd --now
[root@ccx_server128 ~]# systemctl is-active chronyd
active
[root@ccx_server128 ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

服务端配置

  • 安装 chrony 之后,默认的配置是客户端的启动配置的,要想作为一个时间服务器来运行的话, 需要在配置中增加 allow 配置项,它表示允许客户端通过该地址和服务器同步时间
    默认配置文件:/etc/chrony.conf

  • 另外,时间服务器的时间也需要从网络上其他的时间服务器进行同步,这里直接用默认的即可,具体的配置如下
    【其实我没做啥修改,就把allow取消注释,然后加上服务端的ip即可】
    我给没注释的代码都加上说明了,可以看看哦。

[root@ccx_server128 ~]# cat /etc/chrony.conf 
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#表示与本机IP同步时间,其他server注释或删除
#注:内网环境必须这么做,否则其他会无法同步成功。 如果通公网,可以使用公网的服务器时间
server 127.127.1.0

# Record the rate at which the system clock gains/losses time.
# 为了在下次启动时稳定的同步,系统时钟的预估漂移需要保存到指定的文件中
driftfile /var/lib/chrony/drift

# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
# 如果系统时钟由于某种原因与启动后的服务器时间相差甚远,允许 chronyd 
# 通过步进而不是回转来快速纠正它,这个过程将花费很长时间
makestep 1.0 3

# Enable kernel synchronization of the real-time clock (RTC).
# 为了使客户端实时时钟接近服务器的时钟,以便下次时钟启动时更接近真实的时间
# 增加了一种 rtcsync 模式,该模式下,系统时间会定期的拷贝到实时时钟里
rtcsync

# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2

# Allow NTP client access from local network.
# 允许指定网络的主机同步时间,不指定就是拒绝所有,且默认不开启。
# 如果要允许所有则:  allow 0.0.0.0/24
#如下,允许一个网段,如果有多个网段,则添加多个allow
allow 192.168.59.0/24
#allow ...

# Serve time even if not synchronized to a time source.
# 不去同步任何人的时间,时间同步服务级别
# 开启后,即使server指令中时间服务器不可用,也允许将本地时间作为标准时间授予其他客户端
#注:内网环境必须开,否则其他虚拟机无法同步时间
local stratum 10

# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys

# Specify directory for log files.
# chrony日志存放路径
logdir /var/log/chrony

# Select which information is logged.
#log measurements statistics tracking
[root@ccx_server128 ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
pool说明
  • pool=server。 一般我们都直接用server,只是我这说明一下pool的意思罢了。
  • pool 配置项
    • 客户端需要去时间服务器获取时间,配置文件中 server 和 pool 配置项表示时间服务器的地址,支持域名或者IP
    • pool指的是进行时间同步的服务器IP地址或域名,作为服务器来说,其机器时间也需要从其他时间服务器同步,此时,服务器是作为一个客户端从网络服务器上获取时间
    • 建议配置多个时间服务器的地址,优先选择同步良好,网络稳定且靠近客户端的地址

防火墙设置

  • 注:chronyd和ntp一样端口是upd的而非tcp,都是依赖123端口通信的,323是chronyd之间通信用的,如果你放开了123端口别人连接不上,关闭防火墙又能连上了,那把323端口开放【理论不用开放这个的】
[root@ccx_server128 ~]#  netstat -nulp | grep chro
udp        0      0 0.0.0.0:123             0.0.0.0:*                           11048/chronyd        
udp        0      0 127.0.0.1:323           0.0.0.0:*                           11048/chronyd        
udp6       0      0 ::1:323                 :::*                                11048/chronyd        
[root@ccx_server128 ~]#  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 可以先查看防火墙状态,如果是关闭的,那么下面操作不用做了,我的是测试机,是可以直接关闭防火墙的【如果客户端已配置,则关闭服务端防火墙后,客户端重启 systemctl restart chronyd
    以firewalld为例
[root@ccx_server128 ~]# ip a | grep 128
    inet6 ::1/128 scope host 
    inet 192.168.59.128/24 brd 192.168.59.255 scope global noprefixroute ens33
[root@ccx_server128 ~]# systemctl is-active firewalld.service 
active
[root@ccx_server128 ~]# systemctl stop firewalld.service
[root@ccx_server128 ~]# 
[root@ccx_server128 ~]# systemctl is-active firewalld.service 
inactive
[root@ccx_server128 ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 时间服务器如果有开启防火墙的话,需要开启 UDP 协议 的 123 端口,以允许客户端向服务器发送获取时间的请求
    以firewalld为例
[root@ccx_server128 ~]# firewall-cmd --permanent --add-port=123/udp
success
[root@ccx_server128 ~]# firewall-cmd --reload
success
  • 1
  • 2
  • 3
  • 4
  • 如果想要关闭防火墙的 123 端口,在服务器机器上执行下面的命令
    以firewalld为例
[root@ccx_server128 ~]# firewall-cmd --permanent --remove-port=123/udp
success
[root@ccx_server128 ~]# firewall-cmd --reload
success
  • 1
  • 2
  • 3
  • 4
  • 关于防火墙,我重新用一个新的ip搭建了个chronyd服务【和128一样的搭建方法】,将防火墙打开,测试客户端是否能正常同步,发现也能正常同步,防火墙不拦截嘛?【该测试仅用于参考】
    在这里插入图片描述

重启chrony

  • 为使配置生效,需要重启 chronyd 服务
[root@ccx_server128 ~]# systemctl restart chronyd
[root@ccx_server128 ~]# systemctl is-active chronyd
active
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/192607
推荐阅读
相关标签
  

闽ICP备14008679号