
1) 在所有步骤未完之前保证本机系统和外部网络隔绝(注: 拔掉网线即可)
2) 只安装 *** 作系统的核心部分以及那些非常必要的软件包
细节
1. 安装配置完 *** 作系统之后确认root的umask设置是077或者027,执行/usr/bin/umask [-S] 确认。
2. 确认root的PATH环境变量设置是安全的,应该只包含/usr/bin:/sbin:/usr/sbin,避免当前工作目录.出现在PATH环境变量中,这有助于对抗特洛伊木马。
echo $PATH | grep ":." 确认
3. 检查/etc/rc2.d和/etc/rc3.d目录下的所有"S"打头的脚本文件,将那些启动不必要服务的脚本文件改名,确认新文件名不以"S"打头。重启动确认这些变动生效,检查/var/adm/messages日志文件,用ps -elf检查是否还有无关进程启动。
4. 编辑/etc/default/login文件,确认 CONSOLE=/dev/console 有效。为了阻止root用户远程ftp,在/etc/ftpusers文件中增加root帐号。
5. 删除/etc/hosts.equiv和/.rhosts文件,编辑/etc/inetd.conf文件,屏蔽所有r系列服务。ps -ef | grep inetd | awk '{print $2}' | xargs kill -1迫使修改后的/etc/inetd.conf文件生效。
6. 删除、禁用或者注释掉不必要帐号,包括"sys"、"uucp"、"nuucp"和"listen"。
推荐的做法,将/etc/passwd文件中的口令域设置成"NP",比如
uucp:NP:5:5:uucp Admin:/usr/lib/uucp:
如果使用了/etc/shadow文件,就不要修改/etc/passwd文件,而应该修改/etc/shadow文件中的相应行
uucp:NP:6445::::::
还可以考虑将/etc/passwd文件中的shell域设置成/bin/false
7. /etc/logindevperm文件包含的配置信息用于设置登录相关设备(控制台、键盘等等)的权限,检查该文件中的权限设置,如果必要可以修改成期望值。关于该文件更多信息参看logindevperm(4)手册页。
8. /etc目录下的文件都不应该是同组可写的,通过chmod -R g-w /etc命令取消同组可写权限。
9. 缺省情况下,如果Solaris主机有多块网卡,它们之间的IP转发功能是打开的。对于Solaris 2.4(或者更低版本),在/etc/init.d/inetinit文件的最后增加一行
ndd -set /dev/ip ip_forwarding 0
对于Solaris 2.5(或者更高版本),简单地"touch /etc/notrouter"即可。注意,启动过程中IP转发功能关闭前Solaris主机依旧可以在多块网卡之间进行IP转发,存在小小的潜在安全隐患。
10.通过/etc/auto_*配置文件控制自动mount特性。为了禁止自动mount功能,删除/etc/auto_*配置文件(或者注释掉相关入口点),屏蔽/etc/rc2.d/S74autofs启动脚本。
11.NFS输出通过/etc/dfs/dfstab文件控制,应该删除该文件或者注释掉相关入口点。为了禁止NFS服务守护进程启动,将/etc/rc3.d/S15nfs.server改名。为了阻止本机成为NFS客户端,将/etc/rc2.d/S73nfs.client文件改名。在更改这些启动脚本文件名的时候,确认不以"S"字母打头。
12.仔细查/var/spool/cron/crontabs目录下各个系统帐号(adm、lp、root、sys,uucp)的定时任务文件。可以考虑编辑/etc/default/cron文件,设置如下CRONLOG=YES这将导致对所有定时任务做日志。
13.使用动态路由接受守护进程(比如in.routed、in.rdisc)的主机容易遭受路由相关的攻击,包括DoS和监听。尽可能采用静态路由,在启动脚本文件中用route命令增加静态路由,而不是采用动态路由接受守护进程。
14.为了防止基于ARP协议的攻击,在可能的情况下采用arp命令手工增加ARP入口点,删除不必要的ARP入口点。
15.rpcbind使得RPC客户端可以获得RPC服务的当前端口信息,不幸的是,标准RPC机制不安全,它采用"AUTH_UNIX"验证机制,依赖于远程客户端的IP地址和远程用户
UID进行身份识别,而这两者都是很容易伪造、欺骗、修改的。对于特定用途的服务器,比如WWW服务器、FTP服务器、邮件服务器等等,应该关闭对RPC的支持,这通过更改/etc/rc2.d/S71rpc启动脚本文件名实现。此时必须仔细验证剩余功能不受取消RPC支持的影响。
16./etc/utmp的权限可以设置成0644,而不会影响系统正常运做。在Solaris 2.6/7上这是一个到/var/adm/utmp文件的符号链接,应该chmod 0644 /var/adm/utmp
17.Solaris上很多setuid、setgid程序只有root或者属主自己才会使用,完全可以取消setuid、setgid设置而不影响普通用户的工作。用如下命令找出系统中所有setuid过的程序
# find / -perm -4000 -print
考虑取消如下命令的setuid设置,类似的,用如下命令找出系统中所有setgid过的程序
创建一份系统中剩余setuid、setgid程序的列表,定期检查是否有变化,比如多出其他setuid、setgid程序来。
18.检查系统提供的每一种网络服务是否是工作环境所必需的,如果不是,就屏蔽它.其中一部分在启动脚本中设置,另外一部分在/etc/inetd.conf文件中配置,注释掉不必要的网络服务,ps -ef | grep inetd | awk '{print $2}' | xargs kill -1
迫使修改后的/etc/inetd.conf文件生效。需要屏蔽的网络服务包括
如果要求系统非常安全,应该用一个只包含了telnet和ftp(如果这两个服务是必需的)服务的inetd.conf代替标准的inetd.conf文件。
19.在漫长的Unix岁月中,in.fingerd暴露出某些安全问题,如果你确实需要提供finger服务,应该以nobody身份启动它,而不是root身份。考虑修改/etc/inetd.conf配置文件中的入口点以愚弄那些进行finger探测的人
# finger stream tcp nowait nobody /usr/sbin/in.fingerd in.fingerd
finger stream tcp nowait nobody /bin/cat cat /etc/drexx-pgp.txt
20.缺省情况下,syslog提供了最小程度的系统日志功能,修改/etc/syslog.conf文件,使得syslog记录更多日志信息,根据日志重要程度分别记录到不同地方。任何与安全相关的日志信息应该加密后存放到文件中。不幸的是,必须重启syslog才能读取新的配置文件。
译者: syslogd(1M)手册页上说kill -HUP可以迫使重读/etc/syslog.conf文件,但是在Solaris 2.6/7的测试中的确发现某些情况下只有重启syslog才能让新配置文件生效,原因未明,建议如有可能先杀掉当前syslog进程,然后重启之。
21.用如下命令设置对EEPROM的口令保护
# /usr/sbin/eeprom security-mode=command
此时Stop-A进入ok状态后,只能执行boot和go命令,其余命令需要口令认证。不幸的是,这样做并不能真正保护机器的安全性,那些物理接近主机的人可以打开机箱替换EEPROM。一般来说,替换EEPROM的同时导致hostid变化,记录本机原始hostid,确认EEPROM未被替换。
译者: 显然这里的说法有误,在Stop-年进入ok状态后,可以手工修改hostid成任意所期望的值。
22.网卡混杂模式使得本机可以监听那些目标地址不是本机的报文。一般来说,运行snoop应用程序的时候,网卡进入混杂模式,如果你自己并没有运行snoop,而你的网卡已经进入混杂模式,很有可能一个黑客进入你的系统并正在监听本
Oracle Solaris 11 引入了两个新命令来进行手动管理网络:dladm 和 ipadm,二者结合使用可以取代 ifconfig。与 ifconfig 不同,由 dladm 和 ipadm 所做的更改在重新启动后持久保存。它们有着通用、一致的命令格式,并且与 ifconfig 不同,它们的输出可以解析,从而可在脚本中使用。dladm 可执行数据链路(第 2 层)管理,配置物理链路、聚合、VLAN、IP 隧道和 InfiniBand 分区。它还管理链路层属性。
ipadm 可配置 IP 接口、IP 地址和 TCP/IP 协议属性。它还可取代 ndd 来进行网络层和传输层调优。
数据链路名称不再与物理接口相同,它们可能是虚拟设备。它们改为使用通用名称,如 net0 或 net1,管理员也可以为它们指定描述性名称。这就使得在更改基础硬件时不会影响网络配置。
此外,Oracle Solaris 11 添加了使用网络配置文件自动配置网络的功能。配置文件由两个管理命令(netadm 和 netcfg)管理,用一个实体描述网络接口、名称服务、路由和 IP 过滤器和 IPsec 策略的配置。
手动和自动网络模式
Oracle Solaris 11 使用基于配置文件的网络配置,其配置模式有两种:手动配置和自动配置。
根据您在安装过程中所选的模式,系统激活 DefaultFixed 网络配置文件 (NCP) 或 Automatic NCP。
Automatic NCP 使用 DHCP 来从连接的任何以太网接口获取基本网络配置(IP 地址、路由器和 DNS 服务器)。如果失败,它将尝试连接已知网络列表中信号最好的无线网络。
DefaultFixed NCP 有效地禁用了自动网络配置,需要使用 dladm 和 ipadm 手动配置网络接口以及使用 Oracle Solaris Service Management Facility (SMF) 配置名称服务。
与使用 DefaultFixed NCP 并手动配置网络相比,创建自己的 NCP 可以更轻松地管理 Oracle Solaris 11 联网。
对于要使用 Oracle Solaris Dynamic Reconfiguration 重新配置的系统或使用了可热交换接口的情形,应用使用 DefaultFixed NCP。IP 多路径传送必须使用这种配置方式,这是因为使用 Automatic NCP 时不支持 IP 多路径传送。
可以使用 netadm 查看系统上哪些网络配置文件是活动的:
root@solaris:~# netadm list
TYPE PROFILE STATE
ncpAutomatic online
ncu:phys net0online
ncu:ip net0online
locAutomatic online
locNoNet offline
locUseronline
我们在这里不做过多讲解,后面将有一节对此进行介绍。以上输出显示已经启用了 Automatic NCP。
要切换到 DefaultFixed NCP,从而启用手动联网,运行以下命令:
root@solaris:~# netadm enable -p ncp DefaultFixed
root@solaris:~# netadm list
netadm: DefaultFixed NCP is enabledautomatic network management is not available.
'netadm list' is only supported when automatic network management is active.
要切换回 Automatic NCP,使用以下命令:
root@solaris:~# netadm enable -p ncp Automatic
root@solaris:~# netadm list
TYPE PROFILE STATE
ncpAutomatic uninitialized
ncu:phys net0uninitialized
ncu:ip net0uninitialized
locAutomatic uninitialized
随着系统开始配置数据链路并从 DHCP 服务器接收 IP 地址,我们很快会回到原始联机状态:
root@solaris:~# netadm list
TYPE PROFILE STATE
ncpAutomatic online
ncu:phys net0online
ncu:ip net0online
locAutomatic online
locNoNet offline
locUseronline
手动网络配置
在以下示例中,我们将手动配置服务器来获得静态 IPv4 地址 10.163.198.20。
首先,我们将切换到 DefaultFixed NCP(如果尚未进行此 *** 作):
root@solaris:~# netadm enable -p ncp DefaultFixed
在有多个物理网络的计算机上,可以使用 dladm 确定如何将网络接口名称映射到物理接口。
root@solaris:~# dladm show-phys
LINK MEDIASTATE SPEED DUPLEXDEVICE
net0 Ethernet up 1000 full e1000g0
net1 Ethernet unknown0 unknown pcn0
创建静态 IP 地址是分两步进行,一是创建 IP 接口,二是创建 IP 地址。一个 IP 接口可以关联多个 IP 地址。IP 地址对象的名称采用这种形式 接口/描述。
在清单 1 所示示例中,我们使用 acme 作为描述。
root@solaris:~# ipadm create-ip net0
root@solaris:~# ipadm show-if
IFNAME CLASS STATE ACTIVE OVER
lo0loopback ok yes ---
net0 ip down no ---
root@solaris:~# ipadm create-addr -T static -a 10.163.198.20/24 net0/acme
root@solaris:~# ipadm show-if
IFNAME CLASS STATE ACTIVE OVER
lo0 loopback ok yes ---
net0ipok yes ---
root@solaris:~# ipadm show-addr
ADDROBJ TYPE STATIC ADDR
lo0/v4 staticok 127.0.0.1/8
net0/acme staticok 10.163.198.20/24
lo0/v6 staticok ::1/128
清单 1. 配置静态 IP 地址
然后我们可以添加持久性默认路由:
root@solaris:~# route -p add default 10.163.198.1
add net default: gateway 10.163.198.1
add persistent net default: gateway 10.163.198.1
使用 SMF 的名称服务配置
名称服务配置现在通过 SMF 服务而不是通过 /etc 中的配置文件来存储和配置。这个变化是 Oracle Solaris 11 中更广泛配置变化中的一部分,它提供了更大程度的管理可审计性和对系统配置的控制,尤其是在系统更新期间。
SMF 服务 svc:/network/dns/client 管理过去位于 /etc/resolv.conf 中的配置信息。SMF 服务 svc:/system/name-service/switch 管理过去位于 /etc/nsswitch.conf 中的配置信息。在两种情况下,配置信息还存储在老式文件中,以便与可能读取它们的其他应用程序兼容。您不 应直接编辑这些老式文件。对属性的更改只有在刷新、重新启动或启用服务后才会反映到老式文件中。
注:指定列表和字符串作为 SMF 属性时要求用引号将它们括起来或转义括号和引号以防止 shell 解释它们。
示例:使用 SMF 配置 DNS 客户端
在以下示例中,我们对 svc:/network/dns/client SMF 服务使用 svccfg 命令配置域名服务 (DNS)。这使我们能够通过主机名查找 IP 地址或反之:
root@solaris:~# svccfg -s svc:/network/dns/client setprop
config/search='("uk.acme.com" "us.acme.com" "acme.com")'
root@solaris:~# svccfg -s svc:/network/dns/client listprop config/search
config/search astring "uk.acme.com" "us.acme.com" "acme.com"
root@solaris:~# svccfg -s svc:/network/dns/client setprop
config/nameserver=net_address: '(10.167.162.20 10.167.162.36)'
root@solaris:~# svccfg -s svc:/network/dns/client listprop config/nameserver
config/nameserver net_address 10.167.162.20 10.167.162.36
进行配置更改之后,刷新 SMF 服务:
root@solaris:~# svcadm refresh svc:/network/dns/client
不必设置每个名称服务数据库的属性。可以使用特殊属性 config/default 提供默认值。不能使用默认值的项可以单独定制。
示例:使用 SMF 配置 /etc/switch.conf
在以下示例中,我们使用名称服务切换机制让系统可以搜索 DNS、LDAP、NIS 或本地文件源来查找命名信息。再次对 svc:/system/name-service/switch SMF 服务使用 svccfg 命令:
root@solaris:~# svccfg -s svc:/system/name-service/switch setprop config/default = "files nis"
root@solaris:~# svccfg -s svc:/system/name-service/switch setprop config/host = "files dns nis"
root@solaris:~# svccfg -s svc:/system/name-service/switch setprop config/password = "files nis"
root@solaris:~# svcadm refresh svc:/system/name-service/switch
注:config/host 属性定义 /etc/nsswitch.conf 中的 hosts 和 ipnodes 项,而 config/password 属性定义 passwd 项。其余属性与其 /etc/nsswitch.conf 项的名称相同。
设置主机名
在 Oracle Solaris 11 中,已经删除 /etc/nodename 并代之以 svc:/system/identity:node 服务的 config/nodename 属性。
为设置主机名,我们再次使用 svccfg:
root@solaris:~# svccfg -s svc:/system/identity:node setprop config/nodename = astring: hostname
root@solaris:~# svcadm refresh svc:/system/identity:node
root@solaris:~# svcadm restart identity:node
这种设置主机名的方式适用于自动和手动网络配置。
/etc/hosts 的变化
在 Oracle Solaris 11 中,主机 /etc/hosts 中的项现与 localhost 中的一样。在先前版本的 Oracle Solaris 中,此项与第一个网络接口关联。
root@solaris:~# cat /etc/hosts
#
# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# Internet host table
#
::1 solaris localhost
127.0.0.1 solaris localhost loghost
注:有些应用程序安装程序可能会因 /etc/hosts 文件中的变化而失败。如果遇到这种情况,可能需要直接编辑 /etc/hosts。
使用配置文件的自动网络配置
在 Oracle Solaris 11 中,网络配置文件有助于聚合分散在先前版本 Oracle Solaris 多个不同配置文件中的网络配置。切换网络配置文件将导致由单个管理 *** 作应用的不同网络配置的一系列更改。
虽然由于兼容问题,保留了传统配置文件,但您不 应直接编辑任何这些文件,这是因为在配置文件激活或系统重新启动时将覆盖任何修改。
网络配置文件
网络配置文件至少包含网络配置文件 (NCP) 和位置配置文件,并且还可能包含外部网络修饰器 (ENM) 和已知无线网络 (WLAN)。
NCP 将一组数据链路和 IP 接口定义为网络配置单元 (NCU)。位置配置文件定义只能在基本 IP 配置之后配置的其他配置,如名称服务、IP 筛选器规则和 IPsec 策略。
ENM 是在激活或取消激活配置文件时直接修改网络配置的应用程序或服务。例如,配置虚拟私有网络 (VPN) 需要 ENM。本文不介绍 ENM 的使用或无线网络的配置。
配置文件有手动或自动激活模式。当自动配置文件处于活动状态时,外部网络事件会使 Oracle Solaris 重新评估哪个是“最佳”自动配置文件并使该配置文件进入活动状态。外部事件包括连接或断开以太网电缆、获得或失去 DHCP 租约或发现无线网络。总有一个活动 NCP 和位置配置文件。无法通过禁用当前配置文件来禁用联网。
创建网络配置文件
未经过修改的 Automatic 配置文件一般不适用于大多数企业网络,无论这些网络是静态的还是通过 DHCP 提供的配置信息多于 Automatic 配置文件使用的信息的。
如果网络具有静态分配的 IP 地址,则需要创建一个 NCP 和一个位置配置文件。
在本例中,我们将以一个杜撰的 Acme 公司的典型企业网络为例。它有静态分配的网络地址,使用 NIS 和 DNS 组合,不使用 IPv6。
要在 Acme 网络上配置系统,我们需要创建一个 NCP 和一个位置配置文件。
如何使用quagga构建一个Linux路由器网络Quagga是一个网络路由 软件套件,提供开放最短路径优先(OSPF),路由信息协议(RIP),边界网关协议(BGP)和IS-IS,适用于类Unix平台,特别是Linux,Solaris,FreeBSD和NetBSD。Quagga根据GNU通用公共许可证(GPL)的条款分发。
话不多说,小编今天带着您使用quagga搭建一个Linux路由器网络,相信这对我们新世界主机的香港服务器或美国服务器的用户来说会有很大的帮助哟。下面我们就开始具体的步骤吧。
(1)路由器配置
每个路由器需要安装quagga路由器包,配置quagga,然后使用quagga VTY shell配置网络。可选地,可以创建quagga守护程序配置文件。
路由器1:
如果要快速配置节点Router-1,请跳到下面的复制和粘贴shell命令。本节介绍了逐步配置Router-1的命令。
安装quagga软件包,然后配置Quagga VTY shell。这将创建路由器的基本设置。输入命令:
$ sudo su
# apt-get update
# apt-get install quagga quagga-doc
然后,通过编辑/etc/quagga/守护程序来配置Quagga守护程序,并启动quagga和ospfd守护程序。
# nano /etc/quagga/daemons
修改文件,如下所示:
zebra=yes bgpd=no ospfd=yes ospf6d=no ripd=no ripngd=no isisd=no babeld=no
保存文件并退出编辑器。
为quagga和ospfd守护程序创建配置文件:
#cp/usr/share/doc/quagga/examples/zebra.conf.sample /etc/quagga/zebra.conf
#cp/usr/share/doc/quagga/examples/ospfd.conf.sample /etc/quagga/ospfd.conf
# chown quagga.quaggavty /etc/quagga/*.conf
# chmod 640 /etc/quagga/*.conf
开始quagga:
# /etc/init.d/quagga start
设置环境变量,所以我们避免了vtysh END的问题。编辑/etc/bash.bashrc文件:
# nano /etc/bash.bashrc
在文件末尾添加以下行:
export VTYSH_PAGER=more
保存文件并退出编辑器。然后,编辑/ etc / environment文件:
# nano /etc/environment
然后将以下行添加到文件的末尾:
VTYSH_PAGER=more 保存文件并退出编辑器。
使用vtyshRouter-1上的命令启动Quagga shell :
# vtysh
输入以下Quagga命令:
configure terminal
router ospf
network 192.168.1.0/24 area 0
network 192.168.100.0/24 area 0
network 192.168.101.0/24 area 0
passive-interface enp0s8
exit
interface enp0s8
ip address 192.168.1.254/24
exit
interface enp0s9
ip address 192.168.100.1/24
exit
interface enp0s10
ip address 192.168.101.2/24
exit
exit ip forward write exit
Router-1复制和粘贴shell命令(这里小编只展示部分命令):
bash <
apt-get update apt-get install quagga quagga-doc traceroute
cp/usr/share/doc/quagga/examples/zebra.conf.sample
/etc/quagga/zebra.conf
cp/usr/share/doc/quagga/examples/ospfd.conf.sample
/etc/quagga/ospfd.conf chown quagga.quaggavty
/etc/quagga/*.conf chmod 640
/etc/quagga/*.conf
路由器-2配置:
在Router-2上,在路由器的接口上安装quagga并配置OSPF。将以下命令(部分)复制并粘贴到Router-2终端窗口中:
bash <
apt-get update apt-get install quagga quagga-doc traceroute
cp/usr/share/doc/quagga/examples/zebra.conf.sample
/etc/quagga/zebra.conf
cp/usr/share/doc/quagga/examples/ospfd.conf.sample
/etc/quagga/ospfd.conf chown quagga.quaggavty
/etc/quagga/*.conf chmod 640
/etc/quagga/*.conf
路由器-3配置:
在Router-3上安装quagga,并在路由器的接口上配置OSPF。将以下命令复制并粘贴到Router-3终端窗口中:
bash <
apt-get update apt-get install quagga quagga-doc traceroute
cp/usr/share/doc/quagga/examples/zebra.conf.sample
/etc/quagga/zebra.conf
cp/usr/share/doc/quagga/examples/ospfd.conf.sample
/etc/quagga/ospfd.conf chown quagga.quaggavty
/etc/quagga/*.conf
chmod 640 /etc/quagga/*.conf
sed -i s'/zebra=no/zebra=yes/'/etc/quagga/daemons
sed -i s'/ospfd=no/ospfd=yes/' /etc/quagga/daemons
echo 'VTYSH_PAGER=more' >>/etc/environment
echo 'export VTYSH_PAGER=more' >>/etc/bash.bashrc
cat >>/etc/quagga/ospfd.conf <<EOF
(2)PC配置
网络中的每台PC都需要配置IP地址和默认路由。
PC-1:
如果要快速配置节点PC-1 ,请跳到下面的复制和粘贴shell命令。为了清楚起见,本节将逐步显示命令。
在PC-1 xterm窗口中,使用文本编辑器将以下行添加到/ etc / network / interfaces文件中:
$ sudo su
# nano /etc/network/interfaces
将以下行添加到文件中:
auto enp0s8
iface enp0s8 inet static
address 192.168.1.1
netmask 255.255.255.0
然后,添加静态路由,将102.168.0.0/16网络中的所有流量发送出enp0s3。在/ etc / network / interfaces文件中输入以下内容:
up route add -net 192.168.0.0/16 gw 192.168.1.254 dev enp0s8
重新启动网络服务,使配置更改运行:
# /etc/init.d/networking restart
PC-2: 在PC-2上,将接口配置添加到网络接口文件中,并设置静态路由:
bash <
cat >>/etc/network/interfaces <<EOF
auto enp0s8
iface enp0s8 inet static
address 192.168.2.1
netmask 255.255.255.0
up route add -net 192.168.0.0/16 gw 192.168.2.254 dev enp0s8
EOF
/etc/init.d/networking restart
exit
EOF2
PC-3 在PC-3上,将接口配置添加到网络接口文件中,并设置静态路由:
bash <
cat >>/etc/network/interfaces <<EOF
auto enp0s8
iface enp0s8 inet static
address 192.168.3.1
netmask 255.255.255.0
up route add -net 192.168.0.0/16 gw 192.168.3.254 dev enp0s8
EOF
/etc/init.d/networking restart
exit
EOF2
好了,至此关于quagga就介绍完了,如果您还有什么不明确或不懂的地方,欢迎来新世界主机咨询了解,详情请咨询QQ:1123463300 TEL:400 1109 210。我们必将竭诚为您服务。
本文地址: http://vpssj.net/zzzt/751.htm
版权所有*转载时必须以链接形式注明作者和原始出处
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)