2. 構建DNS集群


DNS是什么

DNS(Domain Name System,域名系統),是互聯網上存儲域名和IP映射關系的一個分布式數據庫,他負責把域名轉換為IP地址,或IP轉換為域名,工作於OSI應用層之上,DNS運行於UDP/TCP的53端口,其中,負責提供域名解析的為UDP協議的53端口,負責DNS服務器之間的區域傳送采用TCP的53端口。

BIND

BIND(Berkeley Internet Name Domain)是DNS協議的開源實現。由兩部分組成。

  • 域名服務器(Name Server):
    提供域名解析服務。
  • 解析器(Resolver):
    負責發起查詢和向調用他的應用返回IP地址或者別名等消息。

DNS服務器的分類

  1. 權威域名服務器
    負責授權域下面的域名解析服務,由上級權威域名服務器使用NS記錄進行授權。
    按照授權的層級划分,最多127層:
    1)根域
    使用.表示,通常在瀏覽器輸入時省略。負責對.com,.cn,.org等頂級域進行授權,全球13個邏輯根服務器。
    2)頂級域
    類似於.com,.cn,.org
    3)二級域
    sina.com,baidu.com,aliyun.com

主DNS:
每個區域名字服務器,保存着本區域的正式數據。
從DNS:
通過“區域傳送”操作,通過主服務器上獲取它的數據。

  1. 緩存域名服務器
    通過依次查詢根域-頂級域-二級域的方式來解析dns條目,同時根據DNS條目的TTL值進行緩存。

  2. 轉發域名服務器
    在接收查詢請求時,不向根發起請求,而是轉發到指定的上級DNS服務器,而且不進行任何緩存,僅轉發。

權威應答:由直接負責的DNS服務器返回解析。
非權威應答:從緩存中讀取記錄來回答查詢,可能數據已過期。

DNS查詢類型

遞歸查詢:

  1. 客戶端解析器把請求發送給本地DNS服務器;
  2. 本地服務器代替客戶端,向根域-頂級域-二級域查詢,並把最終結果返回給用戶。

迭代查詢:

  1. 客戶端向本地DNS發起查詢;
  2. 本地DNS不直接去幫助客戶端查詢,而是發給客戶端一個可以解析本次請求的DNS服務器的列表,再由客戶端再次向這些列表中的DNS發起請求,從而查到結果。

DNS資源記錄類型

資源記錄的定義格式:

name      [TTL]     IN    RR_TYPE         value

注意:

  1. TTL可以從全局繼承;
  2. @可用於引用當前區域的名字
  3. 相鄰的兩條記錄其name相同時,后面的可省略;

SOA

Start Of Authority,這種record 放在zone file 一開始的地方,每一個zone只能有一個SOA,而且一定是記錄中第一個“記錄”,它描述這個zone負責的name server,version number…等資料,以及當slave server 要備份這個zone 時的一些參數。

例:

xiaohou.com.  86400  IN  SOA  xiaohou.com.  root.xiaohou.com.  (
            2017031901     ; serial
            2H             ; refresh
            10M            ; retry
            1W             ; expire
            1D             ; negative answer ttl
                        )

serial:序列號,作為主從更新的依據,主服務器數據庫內容發生變化時,其版本號遞增;
refresh:從服務器每多久到主服務器檢查序列號更新狀況;
retry: 從服務器從主服務器請求同步解析庫失敗時,間隔多久再次嘗試連接;
expire:過期時長,從服務器始終聯系不到主服務器時,多久之后放棄從主服務器同步數據;停止提供服務;
negative answer ttl:否定答案的緩存時長,客戶端緩存的時間,設定過長會導致無法立即生效,設定過短導致客戶端頻繁請求

NS

name server,用來指定操作的DNS服務器名稱,需注意的是不可以用IP地址表示。

例:

xiaohou.com.     86400     IN     NS      ns1.xiaohou.com.
xiaohou.com.     86400     IN     NS      ns2.xiaohou.com.

MX

mail exchanger,設定區域中郵件服務器(SMTP)的主機。 每一個值前面由一個數字,是該主機郵件傳遞時的優先次序,此值越低表示有越高的郵件處理優先權,取值范圍0-99。

例:

xiaohou.com.      IN     MX  10      ns1.xiaohou.com.
                  IN     MX  20      ns2.xiaohou.com.

A

address,將域名解析到IPv4的IP地址。

例:

www.xiaohou.com.        IN     A    10.0.7.100

AAAA

將域名解析到IPv6的IP位址。

例:

www.xiaohou.com. 86400 IN AAAA 3ffe: :bbb:93:5

PTR

pointer,將IP地址轉換成主機的FQDN。

例:

100.7.0.10.in-addr.arpa.      IN  PTR    www.xiaohou.com.

CNAME

canonical name,別名

例:

  blog.xiaohou.com.      IN      CNAME  www.xiaohou.com.

配置DNS服務器(BIND)

環境

IP地址 操作系統 主機名
10.0.7.1 Centos7 主DNS服務器
10.0.7.2 Centos7 從DNS服務器
10.0.7.3 Centos7 子域服務器

程序包:

bind-libs:被bind和bind-utils包中的程序共同用到的庫文件;
bind-utils:bind客戶端程序集,例如dig, host, nslookup等;
bind:提供的dns server程序、以及幾個常用的測試程序;
bind-chroot:選裝,讓named運行於jail模式下;

rndc:remote name domain controller,默認與bind安裝再同一主機,且只能通過127.0.0.1來連接named進程,提供輔助管理功能,服務監聽於tcp的953端口。

主節點 (10.0.7.1)

安裝bind

yum -y install bind-libs bind-utils bind bind-chroot

配置/etc/named.conf

options {
    listen-on port 53 { any; };
    directory     "/var/named";
    dump-file     "data/cache_dump.db";
    zone-statistics yes;
    statistics-file "data/named_stats.txt";
    memstatistics-file "data/named_mem_stats.txt";
    allow-query     { any; };
    //recursion:
    //作為授權域名服務器 no,作為一個遞歸DNS服務器 yes;
    recursion yes;
    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
    empty-zones-enable no;
};

logging {
//錯誤日志
  channel error_log {
    file "data/error_log" versions 10 size 10m;
    severity warning;
    print-category yes;
    print-severity yes;
    print-time yes;
  };
//查詢日志
  channel query_log {
    file "data/query_log" versions 10 size 100m;
    severity info;
    print-category yes;
    print-severity yes;
    print-time yes;
  };
  category default {
    error_log;
  };
  category queries {
    query_log;
  };
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

配置/etc/named.rfc1912.zones

//正向解析
zone "xiaohou.com" IN {
        type master;
        file "xiaohou.com.zone";
        allow-update { none; };
        };
//反向解析
zone "7.0.10.in-addr.arpa" IN {
    type master;
    file "10.0.7.arpa.zone";
    allow-update { none; };
};

配置正向區域/var/named/xiaohou.com.zone

$TTL 86400
;資源記錄簡寫時補全的后綴,如果不指定默認為zone中定義的
$ORIGIN xiaohou.com.
@   IN  SOA     ns1.xiaohou.com. root.xiaohou.com. (
        2017031901  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
        IN  NS      ns1.xiaohou.com.
        IN  NS      ns2.xiaohou.com.
        IN  MX  10  mx1
        IN  MX  20  mx2
ns1     IN  A   10.0.7.1
ns2     IN  A   10.0.7.2
@       IN  A   10.0.7.1
www     IN  A   10.0.7.2
mx1     IN  A   10.0.7.3
mx2     IN  A   10.0.7.4

配置反向區域/var/named/10.0.7.arpa.zone

$TTL 1D
@       IN SOA  ns1.xiaohou.com.  root.xiaohou.com. (
                    11      ; serial
                    1H      ; refresh
                    5M      ; retry
                    3M      ; expire
                    10H )   ; minimum
          IN NS   ns1.xiaohou.com.
          IN NS   ns2.xiaohou.com.
1         IN PTR  ns1.xiaohou.com.
2         IN PTR  ns2.xiaohou.com.
3         IN PTR  mx1.xiaohou.com.
4         IN PTR  mx2.xiaohou.com.

啟動

systemctl start named
systemctl enable named

如果需要使用chroot啟動

/usr/libexec/setup-named-chroot.sh  /var/named/chroot/ on
systemctl stop named
systemctl disable named
systemctl start named-chroot
systemctl enable named-chroot

從節點 (10.0.7.2)

安裝bind

yum -y install bind-libs bind-utils bind bind-chroot

配置/etc/named.conf

options {
    listen-on port 53 { any; };
    directory     "/var/named";
    dump-file     "data/cache_dump.db";
    statistics-file "data/named_stats.txt";
    memstatistics-file "data/named_mem_stats.txt";
    allow-query     { any; };
    //recursion:
    //作為授權域名服務器 no,作為一個遞歸DNS服務器 yes;
    recursion yes;
    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
    empty-zones-enable no;
};

logging {
  channel error_log {
    file "data/error_log" versions 10 size 10m;
    severity warning;
    print-category yes;
    print-severity yes;
    print-time yes;
  };
  channel query_log {
    file "data/query_log" versions 10 size 100m;
    severity info;
    print-category yes;
    print-severity yes;
    print-time yes;
  };
  category default {
    error_log;
  };
  category queries {
    query_log;
  };
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

配置/etc/named.rfc1912.zones

zone "xiaohou.com" IN {
        type slave;
        masters { 10.0.7.1; };
        file "slaves/xiaohou.com.zone";
        };
zone "7.0.10.in-addr.arpa" IN {
        type slave;
        masters { 10.0.7.1; };
        file "slaves/10.0.7.arpa.zone";
};

啟動

systemctl start named
systemctl enable named

如果需要使用chroot啟動

/usr/libexec/setup-named-chroot.sh  /var/named/chroot/ on
systemctl stop named
systemctl disable named
systemctl start named-chroot
systemctl enable named-chroot

子域授權

子域授權,是DNS的分布式的一種實現。在原有的zone上划出一個子域,並給新DNS服務器管理。如果有客戶端請求解析在此區域中的域名,則只要找新的子DNS服務器,以便減輕主DNS的壓力。

配置主服務器

首先在主域服務器添加子域:

vim /var/named/xiaohou.com.zone

$TTL 86400
$ORIGIN xiaohou.com.
@   IN  SOA     ns1.xiaohou.com. root.xiaohou.com. (
        2017031902  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
        IN  NS      ns1.xiaohou.com.
        IN  NS      ns2.xiaohou.com.
        IN  MX  10  mx1
        IN  MX  20  mx2
ns1     IN  A   10.0.7.1
ns2     IN  A   10.0.7.2
@       IN  A   10.0.7.1
www     IN  A   10.0.7.2
mx1     IN  A   10.0.7.3
mx2     IN  A   10.0.7.4

blog     IN  NS      ns1.blog
ns1.blog IN  A       10.0.7.3

記得修改版本號,保證從服務器獲取更新;

重新載入配置

rndc reload

配置子域服務器(10.0.7.3)

安裝bind

yum -y install bind-libs bind-utils bind bind-chroot

配置/etc/named.conf

options {
    listen-on port 53 { any; };
    directory     "/var/named";
    dump-file     "data/cache_dump.db";
    statistics-file "data/named_stats.txt";
    memstatistics-file "data/named_mem_stats.txt";
    allow-query     { any; };
    //recursion:
    //作為授權域名服務器 no,作為一個遞歸DNS服務器 yes;
    recursion yes;
    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
    empty-zones-enable no;
};

logging {
  channel error_log {
    file "data/error_log" versions 10 size 10m;
    severity warning;
    print-category yes;
    print-severity yes;
    print-time yes;
  };
  channel query_log {
    file "data/query_log" versions 10 size 100m;
    severity info;
    print-category yes;
    print-severity yes;
    print-time yes;
  };
  category default {
    error_log;
  };
  category queries {
    query_log;
  };
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

配置/etc/named.rfc1912.zones

zone "blog.xiaohou.com" IN {
        type master;
        file "blog.xiaohou.com.zone";
        allow-update { none; };
        };

配置/var/named/blog.xiaohou.com.zone

$TTL 1D
$ORIGIN blog.xiaohou.com.
@   IN  SOA     ns1.blog.xiaohou.com. root.blog.xiaohou.com. (
        2017031901  ;Serial
        1H          ;Refresh
        10M         ;Retry
        3D          ;Expire
        1D          ;Minimum TTL
)

          IN  NS    ns1
          IN  NS    ns2
ns1       IN  A   10.0.7.3
ns2       IN  A   10.0.7.4
@         IN  A   10.0.7.5
www       IN  A   10.0.7.6
mx1       IN  A   10.0.7.7
mx2       IN  A   10.0.7.8

啟動

/usr/libexec/setup-named-chroot.sh  /var/named/chroot/ on
systemctl stop named
systemctl disable named
systemctl start named-chroot
systemctl enable named-chroot

DNS轉發

區域轉發:

配置在zone段,僅轉發對某特定區域的解析請求;

zone  "ZONE_NAME"  IN {
       type  forward;
       forward  first;
       forwarders { 223.5.5.5;223.6.6.6; };
};

forward選項:

  • first:首先轉發;轉發器不響應時,自行去迭代查詢;
  • only:只轉發;

全局轉發:
配置在options段,針對凡本地沒有通過zone定義的區域查詢請求,通通轉給某轉發器;

vim /etc/named.conf

options {
     forward  only;
     forwarders  { SERVER_IP; };
};

全局轉發(10.0.7.1)

vim /etc/named.conf
options {
        forward  first;
        forwarders  { 223.5.5.5;223.6.6.6; };
};

區域轉發(10.0.7.3)

vim /etc/named.rfc1912.zones

zone  "xiaohou.com"  IN {
       type  forward;
       forward  only;
       forwarders { 10.0.7.1; };
};

訪問控制ACL

把一個或多個地址歸並為一個集合,並通過一個統一的名稱調用;

acl acl_name {
     ip;
     net/perlen;
}

四個內置的acl:

  • none:沒有一個主機
  • any:任意主機
  • local:本機
  • localnet: 本機的IP同掩碼運算后得到的地址

注意: 只能先定義,后使用,通常放置在配置文件最前面

訪問控制的指令:

  • allow-query{}: 允許查詢的主機
  • allow-transfer{}: 允許區域傳送
  • allow-recursion{}: 通常定義在全局options段,允許遞歸的主機
  • allow-update{}: 允許更新區域庫的內容,大多數情況為none

配置acl實現訪問控制,區域傳送只允許slaves定義的主機,所有主機的查詢操作都不被允許。

配置主服務器10.0.7.1

vim /etc/named.conf
acl slaves {
     10.0.7.2;
};

vim /etc/named.rfc1912.zones
zone "xiaohou.com" IN {
        type master;
        file "xiaohou.com.zone";
        allow-query { none; };
        allow-transfer { slaves; };
        allow-update { none; };
        };

配置允許遞歸的主機

vim /etc/named.conf
options {
        recursion yes;
        allow-recursion { 10.0.7.0/24; };
};

視圖view

我們一般常用視圖拿來構建智能DNS,一個bind服務器可以定義多個view,每個view中可以定義一個或多個zone,每個view用來匹配一組客戶端。

  • view實現智能DNS:
    多個view內可能需要對同一區域進行解析,但使用不同通的區域解析文件;

注意: view依據的來源地址並不是客戶端的最終地址,而是客戶端上配置的DNS節點的地址,如果上海聯通的用戶配置了北京電信的DNS,那么可能就會被調度到電信節點

用法:

view view_name {
      match-clients { };
}

注意:
一旦啟用了view,所有的zone都只能定義在view中;
僅在允許遞歸請求的客戶端所在的view中定義根區域;
客戶端請求到達時,自上而下對符合view的客戶端列表進行匹配;

配置10.0.7.1主服務器,named.conf

vim  /etc/named.conf
acl slaves {
     10.0.7.2;
};
acl shanghai {
     10.0.7.2;
};
acl beijing {
     10.0.7.3;
};
acl office {
     10.0.0.0/16;
};
options {
    listen-on port 53 { any; };
    directory     "/var/named";
    dump-file     "data/cache_dump.db";
    statistics-file "data/named_stats.txt";
    memstatistics-file "data/named_mem_stats.txt";
    allow-query     { any; };
        //作為授權域名服務器 no;
        //作為一個遞歸DNS服務器 yes;
    recursion yes;
        allow-recursion { office; };
    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
        empty-zones-enable no;
        forwarders  { 223.5.5.5;223.6.6.6; };
};

logging {
  channel error_log {
    file "data/error_log" versions 10 size 10m;
    severity warning;
    print-category yes;
    print-severity yes;
    print-time yes;
  };
  channel query_log {
    file "data/query_log" versions 10 size 100m;
    severity info;
    print-category yes;
    print-severity yes;
    print-time yes;
  };
  category default {
    error_log;
  };
  category queries {
    query_log;
  };
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

配置10.0.7.1主服務器,named.rfc1912.zones

vim /etc/named.rfc1912.zones
view  shanghai {
      match-clients { shanghai; };
      zone "xiaohou.com" {
          type master;
          file "sh.xiaohou.com.zone";
      };
};

view  beijing {
      match-clients { beijing; };
      zone "xiaohou.com" {
           type master;
           file "bj.xiaohou.com.zone";
      };
};

view  office {
      match-clients { office; };
      zone "localhost.localdomain" IN {
         type master;
      file "named.localhost";
      allow-update { none; };
      };

      zone "localhost" IN {
            type master;
       file "named.localhost";
       allow-update { none; };
      };

     zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
     type master;
    file "named.loopback";
    allow-update { none; };
     };

    zone "1.0.0.127.in-addr.arpa" IN {
       type master;
       file "named.loopback";
       allow-update { none; };
    };

    zone "0.in-addr.arpa" IN {
       type master;
       file "named.empty";
       allow-update { none; };
    };
    zone "xiaohou.com" IN {
        type master;
        file "xiaohou.com.zone";
        allow-update { none; };
        allow-transfer { slaves; };
        allow-query { any; };
    };
    zone "7.0.10.in-addr.arpa" IN {
    type master;
    file "10.0.7.arpa.zone";
    allow-update { none; };
    };
};

區域配置文件,sh.xiaohou.com.zone

vim  /var/named/sh.xiaohou.com.zone
$TTL 86400
$ORIGIN xiaohou.com.
@   IN  SOA     ns1.xiaohou.com. root.xiaohou.com. (
        2017031902  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
        IN  NS      ns1.xiaohou.com.
        IN  NS      ns2.xiaohou.com.
        IN  MX  10  mx1
        IN  MX  20  mx2
ns1     IN  A   10.0.7.1
ns2     IN  A   10.0.7.2
@       IN  A   10.0.7.1
www     IN  A   10.0.7.2
mx1     IN  A   10.0.7.3
mx2     IN  A   10.0.7.4

blog     IN  NS      ns1.blog
ns1.blog IN  A       10.0.7.3

區域配置文件

vim /var/named/bj.xiaohou.com.zone
$TTL 86400
$ORIGIN xiaohou.com.
@   IN  SOA     ns1.xiaohou.com. root.xiaohou.com. (
        2017031902  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
        IN  NS      ns1.xiaohou.com.
        IN  NS      ns2.xiaohou.com.
        IN  MX  10  mx1
        IN  MX  20  mx2
ns1     IN  A   10.0.7.1
ns2     IN  A   10.0.7.2
@       IN  A   172.16.1.17
www     IN  A   172.16.1.18
mx1     IN  A   172.16.1.19
mx2     IN  A   172.16.1.20

blog     IN  NS      ns1.blog
ns1.blog IN  A       10.0.7.3

如何分析用戶是移動還是聯通,北京還是上海?
答:我們可以使用純真IP數據庫進行解析。

DNS客戶端工具使用

dig

用法

 dig [-t type] [@server] [domain] +[no]trace

示例:

dig -t A @10.0.7.1 www.xiaohou.com
dig -t NS @10.0.7.1 www.xiaohou.com
#跟蹤解析過程
dig -t A @10.0.7.1 www.biadu.com +trace
#反向解析
dig -x 10.0.7.3 @10.0.7.1
模擬完全區域傳送:
dig -t axfr @10.0.7.2 xiaohou.com

rndc

rndc監聽於tcp的953端口,用於管理員對dns服務器進行控制

[root@node2 ~]# rndc status
#服務器和軟件的版本
version: 9.9.4-RedHat-9.9.4-38.el7_3.2 <id:8f9657aa>
#cpu數量
CPUs found: 2
#工作線程數
worker threads: 2
#upd監聽的端口個數
UDP listeners per interface: 2
#zone的個數
number of zones: 8
#debug的級別
debug level: 0
#區域傳送
xfers running: 0
xfers deferred: 0
#soa的查詢情況
soa queries in progress: 0
#查詢日志是否啟用
query logging is ON
#遞歸的客戶端
recursive clients: 0/0/1000
#tcp 客戶端
tcp clients: 0/100
#服務是否正常
server is up and running


其他選項
reload                             重新裝入配置文件和區域
reload zone [class [view]]         重新裝入單個區域
refresh zone [class [view]]        安排區域的立即維護
reconfig               僅重新裝入配置文件和新區域
stats                  將服務器統計信息寫入統計文件中
querylog               切換查詢日志
dumpdb                 將高速緩存轉儲到轉儲文件 (named_dump.db)
stop                   將暫掛更新保存到主文件並停止服務器
halt                   停止服務器,但不保存暫掛更新
trace                  將調試級別增加一級
trace level            更改調試級別
notrace                將調試級別設置為 0
flush                  刷新服務器的所有高速緩存
flush [view]           為某一視圖刷新服務器的高速緩存
status                 顯示服務器的狀態
restart                重新啟動服務器(尚未實現)

bind壓測工具

wget ftp://ftp.isc.org/isc/bind9/9.11.0-P3/bind-9.11.0-P3.tar.gz
tar xf bind-9.11.0-P3.tar.gz
cd bind-9.11.0-P3/contrib/queryperf/
./configure && make

編寫測試文件

vim  testdns.txt
www.baidu.com A
www.qq.com A
www.xiaohou.com A
www.sina.com A
www.youku.com A
www.aliyun.com A

測試結果

[root@node1 queryperf]# ./queryperf -d testdns.txt  -s 10.0.7.1

DNS Query Performance Testing Tool
Version: $Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $

[Status] Processing input data
[Status] Sending queries (beginning with 10.0.7.1)
[Timeout] Query timed out: msg id 1
[Timeout] Query timed out: msg id 4
[Timeout] Query timed out: msg id 5
[Timeout] Query timed out: msg id 6
[Status] Testing complete

Statistics:

  Parse input file:     once
  Ended due to:         reaching end of file

  Queries sent:         6 queries
  Queries completed:    6 queries
  Queries lost:         0 queries
  Queries delayed(?):   0 queries

  RTT max:             4.270617 sec
  RTT min:              0.067555 sec
  RTT average:          2.169086 sec
  RTT std deviation:    2.101550 sec
  RTT out of range:     0 queries

  Percentage completed: 100.00%
  Percentage lost:        0.00%

  Started at:           Tue Mar 21 23:56:27 2017
  Finished at:          Tue Mar 21 23:56:32 2017
  Ran for:              5.000125 seconds

  Queries per second:   1.199970 qps

其他詳細的配置可以查看:Bind9 管理員參考手冊

DNS監控

  • 系統監控:
    CPU,內存,網絡IO等監控
  • named進程監控:
    判斷named進程是否正常運行
  • 解析服務監控:
    使用dig命令進行解析,監控


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM