DHCP服务器如何搭建、如何设置?

DHCP服务器如何搭建、如何设置?,第1张

在FreeBSD的Packages Collection中,有两个不同的DHCP客户机和服务器软件,一 个为ISC-DHCP,另一个为WIDE-DHCP,两个软件都包括了DHCP客户软件和服务器软件,其中ISC-DHCP 更为常用一些,这里就以ISC-DHCP为例介绍在FreeBSD上安装和设置DHCP。
为了支持DHCP,首先要确认系统内核支持伪设备bpfilter,如果没有,就需要重新编译内核。伪设备bpfilter 是一个允许应用程序接收网络的原始数据包的界面,这样应用程序就能接收目的地址非本机IP地址的数据包 了。DHCP使用bpfilter的原因是在DHCP设置好计算机的TCP/IP之前,由于计算机本身没有定义IP地 址,而TCP/IP堆栈本身不会接收不具备本机IP地址的数据包。要接收DHCP服务器发送回客户的数据包,就需要绕 过TCP/IP堆栈,而必须使用伪设备bpfilter。
1 pseudo-device bpfilter 4
定制内核之后,还要保证/dev/目录下具有对应bpfilter的设备文件。
1 # cd /dev
2 # sh MAKEDEV bpf0 bpf1 bpf2 bpf3 
从Packages Collecion中安装DHCP软件,这将DHCP软件中的dhcpd,dhclient和dhcprelay 安装到/usr/local/sbin目录下。
1 $ ls /usr/local/sbin/dhc
2 /usr/local/sbin/dhclient
3 /usr/local/sbin/dhcpd
4 /usr/local/sbin/dhcrelay
设置服务器
为了设置DHCP服务器dhcpd,首先就要设置其配置文件/etc/dhcpdconf。这个配置文件 语法简单,比较容易理解。
1 server-identifier 19216831;
2
3 subnet 19216830 netmask 2552552550 {
4 range 192168310 192168320;
5 default-lease-time 600;
6 max-lease-time 7200;
7 option subnet-mask 2552552550;
8 option broadcast-address 1921683255;
9 option routers 19216831;
10 option domain-name-servers 19216831;
11 option domain-name "exampleorgorgcn";
12 }
13
14 host a1 {
15 hardware ethernet 00:90:27:4e:92:09;
16 fixed-address 192168332;
17 option subnet-mask 2552552550;
18 option broadcast-address 1921683255;
19 option routers 19216831;
20 option domain-name-servers 19216831;
21 option domain-name "exampleorgorgcn";
22 } 
基本的dhcpdconf首先使用server-identifier定义了本服务器的IP地址,这对于有 多个IP地址的服务器系统十分重要,一般不必设置这个参数,dhcpd能自动侦测。然后定义要分配IP地址的客户机组 ,每组拥有一个可用的IP地址范围。有两种客户机组的划分方式,一种为指定子网段来区分,一种为指定主机来区分。
这个例子中的第一组定义了一个子网19216830/24,这个子网段内,可供DHCP服务器分配的I P地址范围为192168310到192168320,这个地址范围也可以不是连续的,不连续的地址可以 使用多个range设置参数来设置。此外,还设置了这一组内分配的IP地址的租期限制default-lease-time 和max-lease-time,可以使用缺省值,而不必改动。后面的option参数设置DHCP的附加功能 ,例如设置DHCP客户的网络掩码、广播地址、DNS服务器、域名等等。事实上这些option设置选项也可以被用作 全局选项设置,即放置在server-identifier之后,对所有的客户机组起作用。
例子的第二组是针对某个特定主机a1进行的设置,这个主机被限定为以太网地址为hardware ethernet 参数值的计算机,将给这个计算机分配一个固定地址。这种分配方式实际等价于固定地址分配方式,唯一的好处就是能够对IP地址进行集中管理,不必每个计算机分别设置了。这里同样也可以使用option参数,设置TCP/IP的参数 。
dhcpdconf中还能有更多的组,包括对非本网段的子网上的客户机指定的组。
当设置了dhcpdconf之后,就能启动dhcpd守护进程了,由于计算机会有多个网络界面,需要指定dhcpd 服务器的网络界面,以便回应相应界面上的DHCP请求。
1 # /usr/local/sbin/dhcpd fxp0 
在调试阶段,可以使用-d参数,这样dhcpd就不会进入后台运行,而一直保留在前台,并显示各个与客户计算机通信的过程。当一切都调试完毕之后,就能去除-d参数,并将执行命令放入rclocal启动脚本中,以便系统能够自动执行。
此后,dhcpd正常运行的时候,会将每一次客户请求及其回应的IP地址分配的记录,都记录在/var/run/dhcpdleases 文件中。为了使dhcpd能正常进行日志记录,应该在启动dhcpd之前使用touch 命令,生成一个新的日志文件。以后就可以查看这个日志文件的内容,以得到当前DHCP服务器的状态和客户机IP地址分 配的情况。以下是一个日志文件的部分内容。
1 lease 192168311 {
2 starts 3 1998/11/26 05:46:28;
3 ends 4 1998/11/27 05:46:28;
4 hardware ethernet 0:80:c2:12:fd:d;
5 uid 1:0:80:c2:12:fd:d;
6 } 
 
touch命令的优点是在存在相关的文件时,不删除或更改文件内容,只更新其访问时间设置,只有在文 件不存在时才生成新文件。
然后就能设置网络中的客户计算机使用DHCP协议,获取合法的IP地址了。通常Windows计算机的TCP/IP设置 中能直接设置支持DHCP协议,如果为Unix(包括FreeBSD)设置DHCP客户软件,就需要dhclient的支持。
设置客户软件
ISC-DHCP中同样也提供了一个客户程序dhclient,用于FreeBSD系统从DHCP服务器上动态获取一个IP地 址。这个程序同样也要求内核支持bpfilter伪设备。
dhclient使用的配置文件为/etc/dhclientconf,然而最一般的情况下可以不使用它,软件本身的缺省配置就满足一般情况下请求IP地址的需要了。缺省设置下dhclient在获得了IP地址之后,会自动执行/etc/dhclient-script 这个脚本程序,以针对刚获取的动态IP地址进行必要的设置。很多依赖于IP地址的网络服务,就可以在这个脚 本中启动,或者针对重新分配的动态IP地址对已有的网络服务进行修正。虽然使用者也许不希望使用这个脚本 设置网络,但如果不存在这个脚本程序,或者这个程序不可执行,那么dhclient就不能正常执行。
因此对于最一般的客户机,一般只连接到一个网络上,仅具备一个网络界面,可以使用一个空的dhclientconf 和空的declient-script文件,就能完成设置IP地址和其他TCP/IP参数的任务了。
1 # touch /etc/dhclientconf
2 # touch /etc/dhclient-script
3 # chmod +x /etc/dhclient-script
4 # /usr/local/sbin/dhclient fxp0
5
6 Listening on BPF/fxp0/00:90:27:4e:92:09/unattached
7 Sending on BPF/fxp0/00:90:27:4e:92:09/unattached
8 Sending on Socket/fallback/fallback-net
9 DHCPDISCOVER on fxp0 to 255255255255 port 67 interval 22
10 DHCPOFFER from 19216831
11 DHCPREQUEST on fxp0 to 255255255255 port 67
12 DHCPACK from 19216831
13 bound to 192168332 -- renewal in 3600 seconds
在更复杂的情况下,就要指定更多的内容,例如当系统有多个网卡时,要指定dhclient应该从哪个子网中获 得IP地址设置,就需要使用设置文件dhclientconf。一般除非有多个局域网网络界面,都应该使用空设置文件, 避免产生配置错误。以下为一个简单的dhclientconf的例子,可以用于多网络界面的情况:
1 # Defaults
2 timeout 60;
3 reboot 10;
4 retry 60;
5 select-timeout 5;
6 initial-interval 2;
7 script "/etc/dhclient-script";
8 interface "fxp0" {
9 request subnet-mask, broadcast-address, routers, domain-name-servers,
10 domain-name, host-name;
11 require domain-name-servers;
12 }
 
这个设置文件主要用于重新定义一些参数,比较容易理解,更改也比较容易。
成功的手工执行dhclient之后,就可以考虑将其和系统启动文件相结合了。因为很多网络服务是依赖于网络 配置的,应该在启动这些网络服务之前使用DHCP配置好TCP/IP。使用dhclient-script启动服务的想法虽然也能解决问题,然而这就不能使用系统的启动rc文件中的相关设置启动网络服务,而在这个dhclient-script 中重新启动,因此比较麻烦。更简便的做法是仅仅在dhclient-script中设置hostname, 而让系统启动文件完成其他网络服务的启动。这样就要求将dhclient与系统rc文件结合起来。
1 #hostname="mydomainname"
2 network_interfaces="fxp0 lo0"
3 # List of network interfaces (lo0 is loopback)
4 ifconfig_lo0="inet 127001"
5 # default loopback device configuration
6 #ifconfig_fxp0="inet 192168312 netmask 2552552550"
7 defaultrouter="NO"
8 # Set to default gateway (or NO)
这样就需要更改rcconf文件,更改一些设置语句。首先要注释hostname设置,而在dhclientscript中进行设置,也不必设置defaultrouter,它通过DHCP协议自动设置。同时要保证netwo

Linux系统的服务器网络配置查询命令:ifconfig
一种自动获取,网络配置选择自动
二种手动添加IP 网关 DNS
在终端下 sudo
gedit /etc/network/interfaces 然后在该文件中修改ip地址、子网掩码、以及网关 。下来就要修改DNS,在终端下输入
sudo gedit /etc/resolvconf 然后将DNS服务器地址补充到 nameserver 后面,如 nameserver
2021171282保存退出,在用命令 sudo /etc/initd/networking restart
使之前修改的生效,然后重启就OK了。

IP地址=网络地址+主机地址

教科书都会告诉大家私有IP有3种:A类10000~10255255255,B类1721600~17231255255,C类19216800~192168255255。但事实上远远不止,下面有详细的列表:

内网IP对Internet的访问必须通过代理的方式,NAT(网络地址转换)技术是基于TCP层面的代理,能够相当好地使用于各种IP服务应用,因此被广泛应用。

之所以说相当好,是因为NAT要求整个服务的连接是从内网向外网主动发起的,而外网的用户无法直接(主动)向内网的服务发起连接请求,除非在NAT的(所有)网关上针对服务的端口作了端口映射。

NAT方式要求最外围的网关至少有一个公网的IP。

子网掩码的作用是让ip地址标识出网络地址,还有就是划分子网。子网掩码,就是掩盖子网的意思,就是左边是网络地址号,而右边被掩码的0与运算给空出来的部分就是每个电脑在局域网里面应该被分配的地址了。

我们计算机如果是个单机的话,完全用不上这个东西,如果是个联网的话呢,这个时候就需要了,因为互联网是有很多很多个子网组合在一起的,为啥要分这么多子网,因为ip不够用啊,ipv4版本的时候一共才40亿地址,这个时候,就给每个区域分一个ip地址,这个地址呢有个很大的路由器,下面挂了一堆计算机,这个时候问题就来了,而电脑之间互相通信就是首先信息发送到路由器那里,路由器分析这个网络地址,如果是内网的就不用出去,如果是外网的就继续通过路由器里面有张表里面存的地址继续转发出去。

广播地址 (Broadcast Address)是专门用于同时向网络中所有工作站进行发送的一个 地址 。在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址(即IP和子网掩码按位与之后,可以得到网络地址,而网络地址后面全部补1即是广播地址。)。

广播的分组传送给host ID段所涉及的所有计算机。例如,对于10110 (2552552550 )网段,其广播地址为1011255 (255 即为2 进制的11111111 ),当发出一个目的地址为1011255 的分组(封包)时,它将被分发给该网段上的所有计算机。

个用于 TCP/IP 协议的配置项,是一个可直接到达的 IP 路由器的 IP 地址。配置默认网关可以在 IP 路由表中创建一个默认路径。 一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。 一台电脑的默认网关是不可以随随便便指定的,必须正确地指定,否则一台电脑就会将数据包发给不是网关的电脑,从而无法与其他网络的电脑通信。默认网关的设定有手动设置和自动设置两种方式。

今天ping公司的网站的域名,发现ip竟然不是四台服务器的ip,问了一下运维,才知道用了DDoS高防IP。记录一下。

解答:255255255240,是24位掩码,所以只有最后四位为地址为,前面均为网络为,因为主机IP地址末位是68,所以此网络的网络号应该是21924222464,也就是最后四位全0;广播地址则是最后四位全1,为21924222479
其他
1A
解答:配置了DNS服务器,一定会首先查询它,没什么可疑问的。
2D
解答:255255255240,是24位掩码,所以只有最后四位为地址为,前面均为网络为,因为主机IP地址末位是68,所以此网络的网络号应该是21924222464,也就是最后四位全0;广播地址则是最后四位全1,为21924222479
3C
解答:网络号就是网络位不变,地址为全0。
4C
解答:两个主机的网络号同为11300。
5带宽
6IP地址
7254(去掉0和255)
8(转载)第一,压缩的必要性:
图象和视频通常在计算机中表示后会占用非常大的空间,而出于节省硬盘空间的考虑,往往要进行压缩。同时,传输过程中,为了节省珍贵的带宽资源和节省时间,也迫切要求压缩。压缩之后,传输过程中的误码率也会相应地减少。
第二,压缩的可能性:
人眼对颜色只有一定的感应能力,当某些颜色十分相近时,人是感觉不出差异的(或者很小)。这一点为压缩提供了机会。我们把相近的颜色用一种颜色表示,从而减少了图象的存储空间,实现压缩。同时,通过解压缩,我们可以根据之前采取的压缩方法(有损压缩、无损压缩等)进行相应的解压缩措施,保证图象的真度恢复。
原帖地址:
>

1、为什么会出现IPV6呢?

随着互联网的发展,IPV4地址逐渐耗尽,并且IPV4在使用过程中也存在一些问题,IPv6的出现,解决了IPv4的一些弊端。

2、IPV6和IPV4有什么区别呢?

地址空间

IPv4地址采用32比特标识,理论上能够提供的地址数量是43亿(由于地址分配的原因,实际可使用的数量不到43亿),目前已经消耗殆尽。无类别域间路由CIDR(Classless Inter-Domain Routing)和网络地址转换NAT(Network Address Translator)也在IPV4网络中用来解决地址短缺。但是CIDR和NAT都有各自的弊端和不能解决的问题,由此推动了IPv6的发展。

IPv6地址采用128比特标识。128位的地址结构使IPv6理论上可以拥有(43亿×43亿×43亿×43亿)个地址。近乎无限的地址空间是IPv6的最大优势。

报文格式

IPv4报头包含可选字段Options,可以将IPv4报头长度从20字节扩充到60字节。携带这些Options的IPv4报文在转发过程中往往需要中间路由转发设备进行软件处理,对于性能是个很大的消耗,因此实际中也很少使用。

IPv6和IPv4相比,去除了IHL、Identifier、Flag、Fragment Offset、Header Checksum、Option、Padding域,只增加了流标签域,因此IPv6报文头的处理较IPv4更为简化,提高了处理效率。另外,IPv6为了更好支持各种选项处理,提出了扩展头的概念,新增选项时不必修改现有结构,理论上可以无限扩展,体现了优异的灵活性。

3、IPV6地址表示方法

IPV6地址和IPV4地址有什么区别呢?上面提到了IPV4地址长度是32位,而IPV6的地址长度是128位。

那么这么长的地址如何表示呢我们知道IPV4地址是采用点分十进制表示(例如:19216811),IPV6地址表示方法:冒号16进制,而且为了更加方便,可以对地址进行压缩。

下面就一起看下IPV6地址的表示方式吧!

IPv6地址总长度为128比特,通常分为8组,每组为4个十六进制数的形式,每组十六进制数间用冒号分隔。

先来看个标准格式的:FC11:0000:1300:0000:0000:09C0:876A:130B;

来个压缩格式的:FC11:0:1300:0:0:9C0:876A:130B(规则:每组中的前导“0”都可以省略);

再来个终极压缩格式的:FC11:0:1300::9C0:876A:130B(规则:地址中包含的连续两个或多个均为0的组,可以用双冒号“::”来代替);

具体压缩规则为:

每组中的前导“0”都可以省略;

地址中包含的连续两个或多个均为0的组,可以用双冒号“::”来代替;

在一个IPv6地址中只能使用一次双冒号“::”,否则当计算机将压缩后的地址恢复成128位时,无法确定每个“::”代表0的个数。

4、IPV6地址结构

下面我们一起看下IPV6的地址结构,我们知道IPV4地址有网络位和主机位构成;

一个IPv6地址可以分为如下两部分:

网络前缀:n比特,相当于IPv4地址中的网络ID;

接口标识:128-n比特,相当于IPv4地址中的主机ID。

在这里接口标识可通过三种方法生成:

手工配置;

系统通过软件自动生成;

IEEE EUI-64规范生成;(最常用)

在使用IEEE EUI-64规范生成接口标识时,64位接口标识符(Interface ID)用来标识链路上的唯一接口。这个地址是从接口的链路层地址(如MAC地址)变化而来的。

那么如何通过MAC地址生成IPV6地址的接口标识的呢?

IPv6地址中的接口标识符是64位,而MAC地址是48位,因此需要在MAC地址的中间位置插入十六进制数FFFE。然后将U/L位(从高位开始的第7位)设置为“1”,这样就得到了EUI-64格式的接口ID。

例如:MAC地址:000E-0C82-C4D4;转换后:020E:0CFF:FE82:C4D4。

IEEE EUI-64规范生成接口标识的优点:

可以减少配置的工作量,尤其是当采用无状态地址自动配置时,只需要获取一个IPv6前缀就可以与接口标识形成IPv6地址。

缺点:

任何人都可以通过二层MAC地址推算出三层IPv6地址。

5、IPV6的地址分类:

我们知道IPV4地址可以分为单播地址、组播地址、广播地址。

那么IPV6呢?IPv6地址分为单播地址、任播地址(Anycast Address)、组播地址三种类型。

和IPv4相比,取消了广播地址类型,以更丰富的组播地址代替,同时增加了任播地址类型。

IPv6单播地址

IPv6单播地址标识了一个接口,由于每个接口属于一个节点,因此每个节点的任何接口上的单播地址都可以标识这个节点。发往单播地址的报文,由此地址标识的接口接收。

IPv6定义了多种单播地址,目前常用的单播地址有:未指定地址、环回地址、全球单播地址、链路本地地址、唯一本地地址ULA(Unique Local Address)。

未指定地址

IPv6中的未指定地址即0:0:0:0:0:0:0:0/128或者::/128。该地址可以表示某个接口或者节点还没有IP地址,可以作为某些报文的源IP地址(例如在NS报文的重复地址检测中会出现)。源IP地址是::的报文不会被路由设备转发。

环回地址

IPv6中的环回地址即0:0:0:0:0:0:0:1/128或者::1/128。环回与IPv4中的127001作用相同,主要用于设备给自己发送报文。该地址通常用来作为一个虚接口的地址(如Loopback接口)。实际发送的数据包中不能使用环回地址作为源IP地址或者目的IP地址。

全球单播地址

全球单播地址是带有全球单播前缀的IPv6地址,其作用类似于IPv4中的公网地址。这种类型的地址允许路由前缀的聚合,从而限制了全球路由表项的数量。

全球单播地址由全球路由前缀(Global routing prefix)、子网ID(Subnet ID)和接口标识(Interface ID)组成。

Global routing prefix:全球路由前缀。由提供商(Provider)指定给一个组织机构,通常全球路由前缀至少为48位。目前已经分配的全球路由前缀的前3bit均为001。

Subnet ID:子网ID。组织机构可以用子网ID来构建本地网络(Site)。子网ID通常最多分配到第64位。子网ID和IPv4中的子网号作用相似。

Interface ID:接口标识。用来标识一个设备(Host)。

链路本地地址

链路本地地址是IPv6中的应用范围受限制的地址类型,只能在连接到同一本地链路的节点之间使用。它使用了特定的本地链路前缀FE80::/10(最高10位值为1111111010),同时将接口标识添加在后面作为地址的低64比特。

当一个节点启动IPv6协议栈时,启动时节点的每个接口会自动配置一个链路本地地址(其固定的前缀+EUI-64规则形成的接口标识)。这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通信。所以链路本地地址广泛应用于邻居发现,无状态地址配置等应用。

以链路本地地址为源地址或目的地址的IPv6报文不会被路由设备转发到其他链路。

唯一本地地址

唯一本地地址是另一种应用范围受限的地址,它仅能在一个站点内使用。由于本地站点地址的废除,唯一本地地址被用来代替本地站点地址。

唯一本地地址的作用类似于IPv4中的私网地址,任何没有申请到提供商分配的全球单播地址的组织机构都可以使用唯一本地地址。唯一本地地址只能在本地网络内部被路由转发而不会在全球网络中被路由转发。

唯一本地地址由如下几部分组成:

Prefix:前缀;固定为FC00::/7。

L:L标志位;值为1代表该地址为在本地网络范围内使用的地址;值为0被保留,用于以后扩展。

Global ID:全球唯一前缀;通过伪随机方式产生。

Subnet ID:子网ID;划分子网使用。

Interface ID:接口标识。

唯一本地地址具有如下特点:

具有全球唯一的前缀(虽然随机方式产生,但是冲突概率很低)。

可以进行网络之间的私有连接,而不必担心地址冲突等问题。

具有知名前缀(FC00::/7),方便边缘设备进行路由过滤。

如果出现路由泄漏,该地址不会和其他地址冲突,不会造成Internet路由冲突。

应用中,上层应用程序将这些地址看作全球单播地址对待。

独立于互联网服务提供商ISP(Internet Service Provider)。

IPv6组播地址

IPv6的组播与IPv4相同,用来标识一组接口,一般这些接口属于不同的节点。一个节点可能属于0到多个组播组。发往组播地址的报文被组播地址标识的所有接口接收。

例如组播地址FF02::1表示链路本地范围的所有节点,组播地址FF02::2表示链路本地范围的所有路由器。

一个IPv6组播地址由前缀,标志(Flag)字段、范围(Scope)字段以及组播组ID(Global ID)4个部分组成:

前缀:IPv6组播地址的前缀是FF00::/8。

标志字段(Flag):长度4bit,目前只使用了最后一个比特(前三位必须置0),当该位值为0时,表示当前的组播地址是由IANA所分配的一个永久分配地址;当该值为1时,表示当前的组播地址是一个临时组播地址(非永久分配地址)。

范围字段(Scope):长度4bit,用来限制组播数据流在网络中发送的范围,该字段取值和含义的对应关系如图5所示。

组播组ID(Group ID):长度112bit,用以标识组播组。目前,RFC并没有将所有的112位都定义成组标识,而是建议仅使用该112位的最低32位作为组播组ID,将剩余的80位都置0。这样每个组播组ID都映射到一个唯一的以太网组播MAC地址。

被请求节点组播地址:

被请求节点组播地址通过节点的单播或任播地址生成。当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。一个单播地址或任播地址对应一个被请求节点组播地址。该地址主要用于邻居发现机制和地址重复检测功能。

IPv6中没有广播地址,也不使用ARP。但是仍然需要从IP地址解析到MAC地址的功能。在IPv6中,这个功能通过邻居请求NS(Neighbor Solicitation)报文完成。当一个节点需要解析某个IPv6地址对应的MAC地址时,会发送NS报文,该报文的目的IP就是需要解析的IPv6地址对应的被请求节点组播地址;只有具有该组播地址的节点会检查处理。

被请求节点组播地址由前缀FF02::1:FF00:0/104和单播地址的最后24位组成。

IPv6任播地址

任播地址标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。

应用场景:当移动主机需要与它的“home”子网上的移动代理之一通信时,它将用该子网路由设备的任播地址。

IP网络广播终端地址写入步骤

终端在安装前需要进行配置,在配置前,必须做一个总体的安装规划:包括终端名称、终端IP地址、网关IP地址、服务器IP地址、终端安装的物理位置,并且把这些信息做成标签贴在终端上,保证安装的顺利实施。请将该规划方案做成电子文档保存,以便日后维护查阅。系统规划完成后,就可以配置每个终端的参数,具体包括“终端IP地址、子网掩码、网关、服务器地址”四部分……
因为方法比较长而且多,建议百度搜索:西派电子,或者 >

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13050284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存