码迷,mamicode.com
首页 > 其他好文 > 详细

+++++++子域授权与编译安装(二)

时间:2017-09-18 22:30:37      阅读:316      评论:0      收藏:0      [点我收藏+]

标签:博客   linux   运维   

子域授权、转发区域<子域解析父域>、DNS安全配置<acl定义,内置变量,acl安全指令>、dns使用view实现智能dns、CDN,全局负载均衡、编译安装bind、dns压力测试


一、恢复快照

二、缓存服务器

三、(正、反)区域解析库配置

四、主从同步

五、子域授权

六、转发区域

七、安全配置

八、view实现智能DNS

九、编译安装BIND

十、压力测试


拓扑模型

技术分享


一、配置ntp服务器<192.168.58.131>

1、安装ntp
# yum -y -q install ntp

2、配置ntp
# cp -v /etc/ntp.conf{,.bak}
在文件中添加:
restrict 192.168.58.0 mask 255.255.255.0 nomodify notrap

3、启动ntp
# service ntpd start


二、缓存服务器<192.168.58.131>

1、安装程序包
# yum -y -q install bind bind-utils bind-libs

2、修改配置
#  cp -v /etc/named.conf{,.bak}
# vim /etc/named.conf
options {
        listen-on port 53 { 192.168.58.129; 127.0.0.1; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
        recursion yes;

        dnssec-enable no;
        dnssec-validation no;

        /* Path to ISC DLV key */
        /*bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";*/
};

3、启动服务
# service named start

4、查看服务是否监听在53端口
# ss -tunlp | grep 53
udp    UNCONN     0      0         192.168.58.131:53                    *:*      users:(("named",1784,513))
udp    UNCONN     0      0              127.0.0.1:53                    *:*      users:(("named",1784,512))
udp    UNCONN     0      0                    ::1:53                   :::*      users:(("named",1784,514))
tcp    LISTEN     0      3                    ::1:53                   :::*      users:(("named",1784,22))
tcp    LISTEN     0      3         192.168.58.131:53                    *:*      users:(("named",1784,21))
tcp    LISTEN     0      3              127.0.0.1:53                    *:*      users:(("named",1784,20))
tcp    LISTEN     0      128                  ::1:953                  :::*      users:(("named",1784,24))
tcp    LISTEN     0      128            127.0.0.1:953                   *:*      users:(("named",1784,23))


三、(正、反)区域解析库配置

正向配置

1、配置/etc/named.rfc1912.zones
# vim +  /etc/named.rfc1912.zones
zone "magedu.com" IN {
        type master;
        file "magedu.com.zone";
};

2、测试文件
# named-checkconf 

3、添加区域解析库
# vim /var/named/magedu.com.zone
$TTL 1D
$ORIGIN magedu.com.
@       IN      SOA     @       lccnx.foxmail.com.      (
                20170917
                1H
                10M
                1W
                1D)
        IN      NS      ns1
        IN      NS      ns2
        IN      MX 10   mx1
        IN      MX 20   mx2
ns1     IN      A       192.168.58.131
ns2     IN      A       192.168.58.129
mx1     IN      A       192.168.58.131
mx2     IN      A       192.168.58.129
www     IN      A       192.168.58.131
www     IN      A       192.168.58.129
*       IN      A       192.168.58.131
magedu.com.     IN      A       192.168.58.131
ftp     IN      CNAME   www

4、权限
# ls -l /var/named       //显示文件的属主、权限
总用量 32
drwxrwx--- 2 named named 4096 9月  17 18:49 data
drwxrwx--- 2 named named 4096 9月  17 18:50 dynamic
-rw-r--r-- 1 root  root   358 9月  17 18:56 magedu.com.zone   
-rw-r----- 1 root  named 3289 4月  11 23:01 named.ca
-rw-r----- 1 root  named  152 12月 15 2009 named.empty
-rw-r----- 1 root  named  152 6月  21 2007 named.localhost
-rw-r----- 1 root  named  168 12月 15 2009 named.loopback
drwxrwx--- 2 named named 4096 7月   5 17:51 slaves
# ps axu | fgrep named    //named进程名:named
named     1784  0.0  4.0  48040 10128 ?        Ssl  18:49   0:00 /usr/sbin/named -u named
root      1806  0.0  0.2   5752   648 pts/0    S+   18:57   0:00 fgrep named
# id named   //named用户的组属于name
uid=25(named) gid=25(named) 组=25(named)
# chgrp named /var/named/magedu.com.zone 
# chmod 640 /var/named/magedu.com.zone
# ls -l /var/named
总用量 32
drwxrwx--- 2 named named 4096 9月  17 18:49 data
drwxrwx--- 2 named named 4096 9月  17 18:50 dynamic
-rw-r----- 1 root  named  358 9月  17 18:56 magedu.com.zone
-rw-r----- 1 root  named 3289 4月  11 23:01 named.ca
-rw-r----- 1 root  named  152 12月 15 2009 named.empty
-rw-r----- 1 root  named  152 6月  21 2007 named.localhost
-rw-r----- 1 root  named  168 12月 15 2009 named.loopback
drwxrwx--- 2 named named 4096 7月   5 17:51 slaves

5、测试文件
# named-checkzone "magedu.com" /var/named/magedu.com.zone 
zone magedu.com/IN: loaded serial 20170917
OK

6、重载配置文件
# pgrep named
1784
# kill -HUP 1784
# rndc status
version: 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.4
CPUs found: 1
worker threads: 1
number of zones: 20
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

7、测试解析
# dig -t A www.magedu.com @192.168.58.131

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.4 <<>> -t A www.magedu.com @192.168.58.131
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32246
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.magedu.com.			IN	A

;; ANSWER SECTION:
www.magedu.com.		86400	IN	A	192.168.58.129
www.magedu.com.		86400	IN	A	192.168.58.131

;; AUTHORITY SECTION:
magedu.com.		86400	IN	NS	ns2.magedu.com.
magedu.com.		86400	IN	NS	ns1.magedu.com.

;; ADDITIONAL SECTION:
ns1.magedu.com.		86400	IN	A	192.168.58.131
ns2.magedu.com.		86400	IN	A	192.168.58.129

;; Query time: 2 msec
;; SERVER: 192.168.58.131#53(192.168.58.131)
;; WHEN: Sun Sep 17 19:01:53 2017
;; MSG SIZE  rcvd: 132

# host -t A www.magedu.com 192.168.58.131
Using domain server:
Name: 192.168.58.131
Address: 192.168.58.131#53
Aliases: 

www.magedu.com has address 192.168.58.131
www.magedu.com has address 192.168.58.129

反向配置

# pwd
/var/named
# cp -p magedu.com.zone lcc.org   //复制,修改为反向区域解析库
# ls -l
总用量 36
drwxrwx--- 2 named named 4096 9月  17 18:49 data
drwxrwx--- 2 named named 4096 9月  17 18:50 dynamic
-rw-r----- 1 root  named  358 9月  17 18:56 lcc.org
-rw-r----- 1 root  named  358 9月  17 18:56 magedu.com.zone
-rw-r----- 1 root  named 3289 4月  11 23:01 named.ca
-rw-r----- 1 root  named  152 12月 15 2009 named.empty
-rw-r----- 1 root  named  152 6月  21 2007 named.localhost
-rw-r----- 1 root  named  168 12月 15 2009 named.loopback
drwxrwx--- 2 named named 4096 7月   5 17:51 slaves

1、添加配置
# vim + /etc/named.rfc1912.zones
zone "58.168.192.in-addr.arpa" IN {
        type master;
        file "lcc.org";     //directory目录起始的相对路径下的文件
};

2、测试文件
# named-checkconf

3、修改反向区域解析库
# vim /var/named/lcc.org
$TTL 1D 
$ORIGIN 58.168.192.in-addr.arpa.
@       IN      SOA     @       lccnx.foxmail.com.      (
                20170917
                1H
                10M
                1W
                1D)
        IN      NS      ns1.magedu.com.
        IN      NS      ns2.magedu.com.
131     IN      PTR     ns1.magedu.com.
129     IN      PTR     ns2.magedu.com.
131     IN      PTR     mx1.magedu.com.
129     IN      PTR     mx2.magedu.com.
131     IN      PTR     www.magedu.com.
129     IN      PTR     

4、测试文件 
# named-checkzone "58.168.192.in-addr.arpa" /var/named/lcc.org
zone 58.168.192.in-addr.arpa/IN: loaded serial 20170917
OK

5、重载配置文件
# rndc reload
server reload successful
# rndc status
version: 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.4
CPUs found: 1
worker threads: 1
number of zones: 21      //多了一个zone
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

6、测试
# nslookup 
> server 192.168.58.131      //DNS服务器的IP
Default server: 192.168.58.131
Address: 192.168.58.131#53
> set q=PTR       //测试类型
> 192.168.58.129  //需要解析的IP
Server:		192.168.58.131
Address:	192.168.58.131#53

129.58.168.192.in-addr.arpa	name = ns2.magedu.com.
129.58.168.192.in-addr.arpa	name = mx2.magedu.com.
129.58.168.192.in-addr.arpa	name = www.magedu.com.
> 192.168.58.131
Server:		192.168.58.131
Address:	192.168.58.131#53

131.58.168.192.in-addr.arpa	name = www.magedu.com.
131.58.168.192.in-addr.arpa	name = ns1.magedu.com.
131.58.168.192.in-addr.arpa	name = mx1.magedu.com.
> exit

#

四、主从同步<192.168.3.129>

1、配置为缓存DNS服务器
        dnssec-enable no;
        dnssec-validation no;
        
        时间同步: ntpdate 192.168.58.131
        
正从
2、配置/etc/named.rfc1912.zones
# vim + /etc/named.rfc1912.zones
zone "magedu.com" IN {
        type slave;
        masters { 192.168.58.131; };
        file "slaves/magedu.com.zone";
};

3、测试语法
# named-checkconf

4、重载配置
# rndc reload
server reload successful

5、查看日志
# tail -f /var/log/messages 
Sep  9 19:43:45 localhost named[26184]: reloading zones succeeded
Sep  9 19:43:45 localhost named[26184]: zone magedu.com/IN: Transfer started.
Sep  9 19:43:45 localhost named[26184]: transfer of ‘magedu.com/IN‘ from 192.168.58.131#53: connected using 192.168.58.129#37616
Sep  9 19:43:45 localhost named[26184]: zone magedu.com/IN: transferred serial 20170917
Sep  9 19:43:45 localhost named[26184]: transfer of ‘magedu.com/IN‘ from 192.168.58.131#53: Transfer completed: 1 messages, 15 records, 342 bytes, 0.005 secs (68400 bytes/sec)
Sep  9 19:43:45 localhost named[26184]: zone magedu.com/IN: sending notifies (serial 20170917)

6、查看文件

反从
7、配置/etc/named.rfc1912.zones
# vim + /etc/named.rfc1912.zones
zone "58.168.192.in-addr.arpa" IN {
        type slave;
        masters { 192.168.58.131; };
        file "slaves/lcc.org";
};

8、测试文件
# named-checkconf

9、重载
# rndc reload
server reload successful

10、查看日志
# tail -f /var/log/messages 
Sep  9 19:46:40 localhost named[26184]: reloading zones succeeded
Sep  9 19:46:40 localhost named[26184]: zone 58.168.192.in-addr.arpa/IN: Transfer started.
Sep  9 19:46:40 localhost named[26184]: transfer of ‘58.168.192.in-addr.arpa/IN‘ from 192.168.58.131#53: connected using 192.168.58.129#42508
Sep  9 19:46:40 localhost named[26184]: zone 58.168.192.in-addr.arpa/IN: transferred serial 20170917
Sep  9 19:46:40 localhost named[26184]: transfer of ‘58.168.192.in-addr.arpa/IN‘ from 192.168.58.131#53: Transfer completed: 1 messages, 10 records, 277 bytes, 0.005 secs (55400 bytes/sec)
Sep  9 19:46:40 localhost named[26184]: zone 58.168.192.in-addr.arpa/IN: sending notifies (serial 20170917)

11、查看文件
# ls /var/named/slaves/
lcc.org  magedu.com.zone

12、修改主dns的serial和Resource Record
$TTL 1D
$ORIGIN 58.168.192.in-addr.arpa.
@       IN      SOA     @       lccnx.foxmail.com.      (
                20170918 //修改Serial
                1H
                10M
                1W
                1D)
        IN      NS      ns1.magedu.com.
        IN      NS      ns2.magedu.com.
131     IN      PTR     ns1.magedu.com.
129     IN      PTR     ns2.magedu.com.
131     IN      PTR     mx1.magedu.com.
129     IN      PTR     mx2.magedu.com.
131     IN      PTR     www.magedu.com.
129     IN      PTR     www.magedu.com.
129     IN      PTR     ftp.magedu.com. //添加一个RR

rndc reload

13、在从DNS查看结果<192.168.58.129>
$ORIGIN .
$TTL 86400      ; 1 day
58.168.192.in-addr.arpa IN SOA  58.168.192.in-addr.arpa. lccnx.foxmail.com. (
                                20170918   ; serial
                                3600       ; refresh (1 hour)
                                600        ; retry (10 minutes)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
                        NS      ns1.magedu.com.
                        NS      ns2.magedu.com.
$ORIGIN 58.168.192.in-addr.arpa.
129                     PTR     ns2.magedu.com.
                        PTR     mx2.magedu.com.
                        PTR     www.magedu.com.
                        PTR     ftp.magedu.com.
131                     PTR     ns1.magedu.com.
                        PTR     mx1.magedu.com.
                        PTR     
                        
14、修改主DNS<192.168.58.131>
# vim magedu.com.zone
$TTL 1D
$ORIGIN magedu.com.
@       IN      SOA     @       lccnx.foxmail.com.      (
                20170918     //序列号+1
                1H
                10M
                1W
                1D)
        IN      NS      ns1
        IN      NS      ns2
        IN      MX 10   mx1
        IN      MX 20   mx2
ns1     IN      A       192.168.58.131
ns2     IN      A       192.168.58.129
mx1     IN      A       192.168.58.131
mx2     IN      A       192.168.58.129
www     IN      A       192.168.58.131
www     IN      A       192.168.58.129
*       IN      A       192.168.58.131
magedu.com.     IN      A       192.168.58.131
ftp     IN      CNAME   www
pop3    IN      CNAME   www   //添加一个pop3RR

15、测试配置文件
#  named-checkzone "magedu.com" magedu.com.zone 
zone magedu.com/IN: loaded serial 20170918
OK

16、重
# rndc reload
server reload successful

17、查看从DNS
$ORIGIN .
$TTL 86400      ; 1 day
magedu.com              IN SOA  magedu.com. lccnx.foxmail.com. (
                                20170918   ; serial  //可见+1
                                3600       ; refresh (1 hour)
                                600        ; retry (10 minutes)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
                        NS      ns1.magedu.com.
                        NS      ns2.magedu.com.
                        A       192.168.58.131
                        MX      10 mx1.magedu.com.
                        MX      20 mx2.magedu.com.
$ORIGIN magedu.com.
*                       A       192.168.58.131
ftp                     CNAME   www
mx1                     A       192.168.58.131
mx2                     A       192.168.58.129
ns1                     A       192.168.58.131
ns2                     A       192.168.58.129
pop3                    CNAME   www           //pop3记录已经同步过来了
www                     A       192.168.58.131
                        A       192.168.58.129


五、子域授权<192.168.58.130>

1、在主DNS中,授权
# vim magedu.com.zone
$TTL 1D
$ORIGIN magedu.com.
@       IN      SOA     @       lccnx.foxmail.com.      (
                20170918
                1H
                10M
                1W
                1D)
        IN      NS      ns1
        IN      NS      ns2
        IN      MX 10   mx1
        IN      MX 20   mx2
ns1     IN      A       192.168.58.131
ns2     IN      A       192.168.58.129
mx1     IN      A       192.168.58.131
mx2     IN      A       192.168.58.129
www     IN      A       192.168.58.131
www     IN      A       192.168.58.129
*       IN      A       192.168.58.131
magedu.com.     IN      A       192.168.58.131
ftp     IN      CNAME   www
pop3    IN      CNAME   www

ops     IN      NS      ns1.ops.magedu.com.
ops     IN      NS      ns2.ops.magedu.com.
ns1.ops     IN      A       192.168.58.130
ns2.ops     IN      A       192.168.58.139

2、在另一个主机上配置
1)配置缓存DNS服务器
# yum -q -y install bind bind-libs bind-utils

2)配置/etc/named.conf文件
# cp -v /etc/named.conf{,.bak}

3)启动: # service named start
4)查看:# ss -tunlp | fgrep 53
5)配置/etc/named.rfc1912.zones
zone "ops.magedu.com" IN {
        type master;
        file "ops.magedu.com.zone";
};
6)测试: # named-checkconf
7)区域解析库:
$TTL 1D
$ORIGIN ops.magedu.com.
@	IN	SOA	@	lccnx.foxmail.com.	(
		20170917
		1H
		10M
		1W
		1D)
	IN	NS	ns1
	IN	NS	ns2
ns1	IN	A	192.168.58.130
ns2	IN	A	192.168.58.139
www	IN	A	192.168.58.130
www	IN	A	192.168.58.139
8)权限
# chmod 640 ops.magedu.com.zone 
# chown :named ops.magedu.com.zone
9)测试
# named-checkzone "ops.magedu.com" ops.magedu.com.zone 
zone ops.magedu.com/IN: loaded serial 20170917
OK
10)重载
# rndc reload
11)测试
# dig -t A www.ops.magedu.com @192.168.58.130

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.4 <<>> -t A www.ops.magedu.com @192.168.58.130
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33988
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.ops.magedu.com.		IN	A

;; ANSWER SECTION:
www.ops.magedu.com.	86400	IN	A	192.168.58.139
www.ops.magedu.com.	86400	IN	A	192.168.58.130

;; AUTHORITY SECTION:
ops.magedu.com.		86400	IN	NS	ns2.ops.magedu.com.
ops.magedu.com.		86400	IN	NS	ns1.ops.magedu.com.

;; ADDITIONAL SECTION:
ns1.ops.magedu.com.	86400	IN	A	192.168.58.130
ns2.ops.magedu.com.	86400	IN	A	192.168.58.139

;; Query time: 1 msec
;; SERVER: 192.168.58.130#53(192.168.58.130)
;; WHEN: Sun Sep 17 22:10:00 2017
;; MSG SIZE  rcvd: 136
1、父域解析子域<192.168.58.131>
# dig -t A www.ops.magedu.com @192.168.58.131

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.4 <<>> -t A www.ops.magedu.com @192.168.58.131
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15973
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.ops.magedu.com.		IN	A

;; ANSWER SECTION:
www.ops.magedu.com.	86400	IN	A	192.168.58.130
www.ops.magedu.com.	86400	IN	A	192.168.58.139

;; AUTHORITY SECTION:
ops.magedu.com.		86400	IN	NS	ns2.ops.magedu.com.
ops.magedu.com.		86400	IN	NS	ns1.ops.magedu.com.

;; ADDITIONAL SECTION:
ns1.ops.magedu.com.	86400	IN	A	192.168.58.130
ns2.ops.magedu.com.	86400	IN	A	192.168.58.139

;; Query time: 15 msec
;; SERVER: 192.168.58.131#53(192.168.58.131)
;; WHEN: Sun Sep 17 22:12:10 2017
;; MSG SIZE  rcvd: 136

2、子域解析父域
# dig -t A www.magedu.com @192.168.58.130

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.4 <<>> -t A www.magedu.com @192.168.58.130
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 562
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 16

;; QUESTION SECTION:
;www.magedu.com.			IN	A

;; ANSWER SECTION:
www.magedu.com.		477	IN	A	101.200.188.230

;; AUTHORITY SECTION:
magedu.com.		172677	IN	NS	ns1.alidns.com.
magedu.com.		172677	IN	NS	ns2.alidns.com.

;; ADDITIONAL SECTION:
ns1.alidns.com.		172677	IN	A	106.11.141.121
ns1.alidns.com.		172677	IN	A	106.11.211.51
ns1.alidns.com.		172677	IN	A	106.11.211.61
ns1.alidns.com.		172677	IN	A	140.205.41.11
ns1.alidns.com.		172677	IN	A	140.205.41.21
ns1.alidns.com.		172677	IN	A	140.205.81.11
ns1.alidns.com.		172677	IN	A	140.205.81.21
ns1.alidns.com.		172677	IN	A	106.11.141.111
ns2.alidns.com.		172677	IN	A	106.11.211.52
ns2.alidns.com.		172677	IN	A	106.11.211.62
ns2.alidns.com.		172677	IN	A	140.205.41.12
ns2.alidns.com.		172677	IN	A	140.205.41.22
ns2.alidns.com.		172677	IN	A	140.205.81.12
ns2.alidns.com.		172677	IN	A	140.205.81.22
ns2.alidns.com.		172677	IN	A	106.11.141.112
ns2.alidns.com.		172677	IN	A	106.11.141.122

;; Query time: 1 msec
;; SERVER: 192.168.58.130#53(192.168.58.130)
;; WHEN: Sun Sep 17 22:12:59 2017
;; MSG SIZE  rcvd: 347

六、转发区域<192.168.1.130>

1、全部转发
# vim /etc/named.conf
options {
        listen-on port 53 { 192.168.58.0/24; 127.0.0.1; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
        recursion yes;
        forward first;
        forwarders { 192.168.58.131; };

        dnssec-enable no;
        dnssec-validation no;

        /* Path to ISC DLV key */
//      bindkeys-file "/etc/named.iscdlv.key";

//      managed-keys-directory "/var/named/dynamic";
};

# named-checkconf
# rndc reload
# dig -t A www.magedu.com @192.168.58.130

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.4 <<>> -t A www.magedu.com @192.168.58.130
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15274
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.magedu.com.			IN	A

;; ANSWER SECTION:
www.magedu.com.		86400	IN	A	192.168.58.129
www.magedu.com.		86400	IN	A	192.168.58.131

;; AUTHORITY SECTION:
magedu.com.		86400	IN	NS	ns2.magedu.com.
magedu.com.		86400	IN	NS	ns1.magedu.com.

;; ADDITIONAL SECTION:
ns2.magedu.com.		86400	IN	A	192.168.58.129
ns1.magedu.com.		86400	IN	A	192.168.58.131

;; Query time: 6 msec
;; SERVER: 192.168.58.130#53(192.168.58.130)
;; WHEN: Sun Sep 17 22:21:14 2017
;; MSG SIZE  rcvd: 132

2、区域转发
# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
        type forward;
        forward first;
        forwarders { 192.168.58.129; };
};

# named-checkconf
# rndc reload

在从DNS上查询<192.168.58.129>
首先改变主DNSserial, rndc reload,同步之后
在从DNS上开启查询日志: rndc querylog
Sep 17 22:24:13 localhost named[26184]: query logging is now on
Sep 17 22:24:31 localhost named[26184]: client 192.168.58.130#30952: query: www.magedu.com IN A +EDC (192.168.58.129)

在进行查询
[root@localhost named]# dig -t A www.magedu.com @192.168.58.130

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.4 <<>> -t A www.magedu.com @192.168.58.130
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62811
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.magedu.com.			IN	A

;; ANSWER SECTION:
www.magedu.com.		86400	IN	A	192.168.58.129
www.magedu.com.		86400	IN	A	192.168.58.131

;; AUTHORITY SECTION:
magedu.com.		86400	IN	NS	ns2.magedu.com.
magedu.com.		86400	IN	NS	ns1.magedu.com.

;; ADDITIONAL SECTION:
ns2.magedu.com.		86400	IN	A	192.168.58.129
ns1.magedu.com.		86400	IN	A	192.168.58.131

;; Query time: 9 msec
;; SERVER: 192.168.58.130#53(192.168.58.130)
;; WHEN: Sun Sep 17 22:24:41 2017
;; MSG SIZE  rcvd: 132


七、安全配置

1、查询 allow-query { any; };
2、传送:主DNS仅允许从
allow-transfer { 192.168.58.129; };
其它: allow-transfer { none; };

acl slaves {          //在options之上
    192.168.58.129;
};

zone
allow-transfer { slaves; };  

3、递归,只为内部主机递归
acl mynet {          //在options之上
    192.168.58.0/24;
    127.0.0.1;
};
options {
    allow-transfer { mynet; };
};
4、查询只允许dhcp服务器,一般都不允许
zone
allow-update { none; };



模型

技术分享

八、view实现智能DNS

1、搭建实验环境<恢复快照>

1)不开snat和net.ipv4.ip_forward,从172.16网络的主机ping192.168.1网络内的主机

技术分享

技术分享

2)打开net.ipv4.ip_forward,从172.16网络的主机ping192.168.1网络内的主机

技术分享

技术分享


1、在172.16.128.1主机之上配置DNS

1、挂载光盘
# [ -d /media/cdrom ] || install -d /media/cdrom
# mount -r /dev/cdrom /media/cdrom
2、配置yum源
# rm -rf /etc/yum.repos.d/*
# vim /etc/yum.repos.d/CentOS-Base.repo
[Base]
name=Base repo for CentOS 6.9
failovermethod=priority
baseurl=file:///media/cdrom
gpgcheck=1
gpgkey=file:///media/cdrom/RPM-GPG-KEY-CentOS-6
enabled=1


3、重建缓存
# yum makecache

4、缓存服务器
# yum install bind bind-utils bind-libs

# cp -v /etc/ntp.conf{,.bak}
# vim
# service ntpd start
# cp -v /etc/named.conf{,.bak}
# vim /etc/named.conf
# named-checkconf
# service named start
# ss -tunlp | fgrep 53

5、配置view
所有zone在同一个文件中
1、删除/etc/named.conf文件中根域
2、在/etc/named.rfc1912.zones添加根域<仅在匹配的客户端可以递归的客户端的VIEW中添加根域>
3、添加后测试语法 
# named-checkconf
4、添加正向解析区域
1)配置
zone "magedu.com" IN {	
	type master;
	file "magedu.com.zone";
	allow-update { none; };
	allow-transfer { 127.0.0.1; };
};
2)解析库
# vim /var/named/magedu.com.zone
$TTL 1D
$ORIGIN magedu.com.
@	IN	SOA	@	lccnx.foxmail.com.	(
		20170918	
		1H
		10M
		1W
		1D)
	IN	NS	ns1.magedu.com.
ns1	IN	A	172.16.128.1
www	IN	A	172.16.100.13
3)权限
# chmod 640 /var/named/magedu.com.zone
# chown :named /var/named/magedu.com.zone 
4)重载配置文件
# rndc reload
5)测试
# dig -t A www.magedu.com @172.16.128.1

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6 <<>> -t A www.magedu.com @172.16.128.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12511
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.magedu.com.			IN	A

;; ANSWER SECTION:
www.magedu.com.		86400	IN	A	172.16.100.13

;; AUTHORITY SECTION:
magedu.com.		86400	IN	NS	ns1.magedu.com.

;; ADDITIONAL SECTION:
ns1.magedu.com.		86400	IN	A	172.16.128.1

;; Query time: 4 msec
;; SERVER: 172.16.128.1#53(172.16.128.1)
;; WHEN: Sun Sep 17 19:27:22 2017
;; MSG SIZE  rcvd: 82

# nslookup 
> server 172.16.128.1
Default server: 172.16.128.1
Address: 172.16.128.1#53
> set q=A  
> www.magedu.com 
Server:		172.16.128.1
Address:	172.16.128.1#53

Name:	www.magedu.com
Address: 172.16.100.13
> exit

5、添加view
172.16解析至内网
192.168.3其他解析至外网

172.16解析至内网
# vim /etc/named.conf
acl mynet {     
        172.16.0.0/16;
        127.0.0.1;
};
options {};

# vim /etc/named.rfc1912.zones
view internal {
	match-clients { mynet; };
	recursion yes;
zone "." IN {	
	type hint;
	file "named.ca";
};
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 "magedu.com" IN {	
	type master;
	file "magedu.com.zone";
	allow-update { none; };
	allow-transfer { 127.0.0.1; };
};
};

# named-checkconf
# rndc reload
# dig -t A www.magedu.com @172.16.128.1

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6 <<>> -t A www.magedu.com @172.16.128.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64602
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.magedu.com.			IN	A

;; ANSWER SECTION:
www.magedu.com.		86400	IN	A	172.16.100.13

;; AUTHORITY SECTION:
magedu.com.		86400	IN	NS	ns1.magedu.com.

;; ADDITIONAL SECTION:
ns1.magedu.com.		86400	IN	A	172.16.128.1

;; Query time: 2 msec
;; SERVER: 172.16.128.1#53(172.16.128.1)
;; WHEN: Sun Sep 17 19:34:33 2017
;; MSG SIZE  rcvd: 82

192.168.3其他解析至外网
# vim /etc/named.rfc1912.zones
view external {
        match-clients { any; };
        recursion no;
zone "magedu.com" IN {
        type master;
        file "magedu.com.external";
        allow-update { none; };
        allow-transfer { 127.0.0.1; };
};
};

# named-checkconf 
# rndc reload
server reload successful

# cp -p /var/named/magedu.com.zone /var/named/magedu.com.external  //权限
# vim /var/named/magedu.com.external 
$TTL 1D
$ORIGIN magedu.com.
@	IN	SOA	@	lccnx.foxmail.com.	(
		20170918	
		1H
		10M
		1W
		1D)
	IN	NS	ns1.magedu.com.
ns1	IN	A	172.16.128.1
www	IN	A	2.2.2.2

测试
# named-checkzone "magedu.com" magedu.com.external 
zone magedu.com/IN: loaded serial 20170918
OK

重载
# rndc reload

在192.168.3网络内的3.3主机上测试

技术分享

九、编译安装BIND

1、恢复快照

2、下载bind , C源码

# wget -c -nc https://www.isc.org/downloads/file/bind-9-10-6/

3、展开编译

4、编译后操作

5、配置文件

6、区域解析库

7、rndc文件

8、准备一个服务脚本


3、展开编译
# tar xf bind-9.10.6.tar.gz
#  cd bind-9.10.6
# yum groupinstall "Development Tools" "Server Platform Development"
# groupadd -r -g 53 named
# useradd -r -g 53 -u 53 named
# ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --disable-ipv6 --disable-chroot --enable-threads
			--disable-chroot  	chroot不方便使用 
			--prefix= 			便于删除 
			--enable-threads 	多核CPU,更好使用
# make -j 4 && make install
4、编译后操作
导出PATH
# ls /usr/local/bind9/
bin  include  lib  sbin  share  var
# vim /etc/profile.d/named.sh
declare -x PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH
# . /etc/profile.d/named.sh

库
#  vim /etc/ld.so.conf.d/named.conf
/usr/local/bind9/lib
# ldconfig -v

头文件
# ln -sv /usr/local/bind9/include /usr/include/named

MAN手册
# vim /etc/man.config
MANPATH /usr/man
MANPATH /usr/share/man
MANPATH /usr/local/man
MANPATH /usr/local/share/man
MANPATH /usr/X11R6/man
MANPATH /usr/local/bind9/share/man

5、配置文件
# vim /etc/named/named.conf
options {
        directory "/var/named";
        allow-query { any; };
        allow-recursion { any; };
};

zone "." IN {
        type hint;
        file "named.ca";
};

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

zone "0.0.127.in-addr.arpa" {
        type master;
        file "named.loopback";
        allow-update { any; };
};

6、区域解析库
# install -d /var/named
# vim /var/named/named.localhost
$TTL 1D
$ORIGIN localhost.
@       IN      SOA     @       lccnx.foxmail.com       (
                20170918
                1H
                10M
                1W
                1D)
        IN      NS      localhost.
        IN      A       127.0.0.1

# vim /var/named/named.loopback
$TTL 1D	
$ORIGIN 0.0.127.in-addr.arpa.
@	IN	SOA	@	lccnx.foxmail.com. (
		20170918
		1H
		10M
		1W
		1D)

	IN	NS	localhost.
1	IN	PTR	localhost.

# dig -t NS . > /var/named/named.ca

权限
# chmod 640 /var/named/named.ca
# chown :named /var/named/named.ca
# ls -l /var/named/named.ca
-rw-r----- 1 root named 2188 Sep  9 20:40 /var/named/named.ca

# chown :named /etc/named/named.conf  /var/named/named.lo*
# chmod 640 /etc/named/named.conf  /var/named/named.lo*
# ls -l /etc/named/named.conf  /var/named/named.lo*
-rw-r----- 1 root named 512 Sep  9 20:25 /etc/named/named.conf
-rw-r----- 1 root named 125 Sep  9 20:27 /var/named/named.localhost
-rw-r----- 1 root named 143 Sep  9 20:30 /var/named/named.loopback

7、rndc文件
# rndc-confgen  -r /dev/urandom > /etc/named/rndc.conf
key "rndc-key" {
      algorithm hmac-md5;
      secret "ZaRjlHwFaun/mfn648NDGQ==";
};

controls {
      inet 127.0.0.1 port 953
              allow { 127.0.0.1; } keys { "rndc-key"; };
};
8、测试起动
# chown root.named /usr/local/bind9/var/run
# ls -ld /usr/local/bind9/var/run
drwxr-xr-x 2 root named 4096 Sep  9 19:58 /usr/local/bind9/var/run
# chmod g+w /usr/local/bind9/var/run
# named -u named -f -g -d 3

9、查看监听端口
[root@localhost ~]# ss -tunlp | fgrep 53
udp    UNCONN     0      0          192.168.1.100:53                    *:*      users:(("named",6870,513))
udp    UNCONN     0      0              127.0.0.1:53                    *:*      users:(("named",6870,512))
tcp    LISTEN     0      10         192.168.1.100:53                    *:*      users:(("named",6870,22))
tcp    LISTEN     0      10             127.0.0.1:53                    *:*      users:(("named",6870,21))
tcp    LISTEN     0      128            127.0.0.1:953                   *:*      users:(("named",6870,23))

10、服务脚本
# install -d /usr/local/bind9/var/lock
#!/bin/bash
#
# Author: lcc.org
# Verion: 1.1.1
# chkconfig: - 12 88
# Description: BIND(Berkerley Information Name Domain) 

prog=$(echo $0 | sed ‘s,/$,,‘ | sed -r ‘s@(.*/)([^/]+)@\2@‘)
lockfile=/var/lock/subsys/$prog

start() {
	if killall -0 $prog 2> /dev/null; then
		if [ -e $lockfile ]; then
	  		echo "$prog is already started"
			return 0
		fi
	else
		if named -u named; then
			[ ! -e $lockfile ] &&  touch $lockfile 
			echo "start $prog finished"
		fi	
	fi
}

stop() {
	[ -e $lockfile ] && rm -rf $lockfile
	if killall -0 $prog 2> /dev/null; then
		pkill named && echo "stop $prog ok"
	else
		echo "stop $prog ok"
	fi	
}
	
status() {
	if [ -e $lockfile ] && killall -0 named 2> /dev/null; then
		echo "$prog is running...."
	elif [ ! -e $lockfile ] && ! killall -0 named 2> /dev/null; then
		echo "$prog is stpped yet..."
	else
		echo "WARINING....."
		stop	
	fi 
}
		
reload() {
	rndc reload 2> /dev/null
}
	
case $1 in
start)
	start
	;;
stop)
	stop
	;;
restart)
	stop
	start
	;;
status)
	status
	;;
reload)
	reload
	;;
*)
	echo "Usage: $0 {start|stop|restart|status|reload}"
	;;
esac

11、添加进/etc/rc.d/init.d/中
# chmod +x named
# cp -p named /etc/init.d/named
# chkconfig --add named
# chkconfig --list named
named          	0:off	1:off	2:off	3:off	4:off	5:off	6:off 

12、手动测试配置正反向解析区域,看是否有任何差错
.....


十、压力测试

1、进入源码目录中的contrib目录中
# cd ~/bind-9.10.6/contrib/
2、进入queryperf目录中
# cd queryperf
3、编译
# less README
# ./configure
# make

4、复制
# cp -a  queryperf /usr/local/bind9/bin/

5、benchmark

queryperf命令<DNS Bench Mark>

Usage: queryperf [-d datafile] [-s server_addr]

 

[root@localhost queryperf]# queryperf -d file -s 192.168.1.100

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 192.168.1.100)
[Status] Testing complete

Statistics:

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

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

  RTT max:         	0.184500 sec
  RTT min:              0.000148 sec
  RTT average:          0.003078 sec
  RTT std deviation:    0.001178 sec
  RTT out of range:     0 queries

  Percentage completed: 100.00%
  Percentage lost:        0.00%

  Started at:           Sun Sep 10 03:13:45 2017
  Finished at:          Sun Sep 10 03:15:34 2017
  Ran for:              109.150809 seconds

  Queries per second:   6431.468593 qps
  
TOP
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                          
 7774 named     20   0 50152  12m 2748 S 53.4  5.3   2:06.29 named                                                                                                                             
22591 root      20   0 20032  17m  676 S 45.2  7.4   0:05.06 queryperf    

VMSTAT
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0   4160   3876   8032 150904    0    0    74    75   62  128  2  3 90  6  0	
 2  0   4160   3868   8032 150904    0    0     0     0  965 12360  4 96  0  0  0	
 2  0   4160   3808   8032 150960    0    0    68     0  988 11908 20 80  0  0  0	
 2  0   4160   3688   8040 151040    0    0    72    12  981 11791  4 96  0  0  0	
 2  0   4160   3688   8040 151044    0    0     0     0  990 11952  4 96  0  0  0	
 2  0   4160   3628   8040 151044    0    0     0     0  979 11990  3 97  0  0  0	
 2  0   4160   3628   8040 151044    0    0     0     0  991 12712 16 84  0  0  0
 
 IOSTAT
 # iostat 1
Linux 2.6.32-696.el6.i686 (localhost.localdomain) 	09/10/2017 	_i686_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.25    0.46    2.62    5.61    0.00   90.06

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
scd0              0.00         0.01         0.00        376          0
sda               3.91       146.89       150.43    5265774    5392628
dm-0              4.04        20.10        28.64     720634    1026544
dm-1              0.05         0.18         0.25       6520       9032
dm-2              0.01         0.06         0.00       2018         56
dm-3             14.64       106.06        97.85    3802226    3507896
dm-4              3.30        20.31        23.68     728258     849040

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          19.39    2.04   78.57    0.00    0.00    0.00

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
scd0              0.00         0.00         0.00          0          0
sda             117.35      4693.88        57.14       4600         56
dm-0             72.45      3126.53         0.00       3064          0
dm-1              0.00         0.00         0.00          0          0
dm-2              0.00         0.00         0.00          0          0
dm-3              4.08       146.94         0.00        144          0
dm-4             67.35       481.63        57.14        472         56	

技术分享

[root@localhost queryperf]# rndc querylog
[root@localhost queryperf]# rndc status
version: BIND 9.10.6 <id:9d1ea0b>
boot time: Sat, 09 Sep 2017 17:45:08 GMT
last configured: Sat, 09 Sep 2017 18:04:13 GMT
CPUs found: 1
worker threads: 1
UDP listeners per interface: 1
number of zones: 103
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is ON          //开启查询日志,每次请求都会有IO产生
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

[root@localhost queryperf]# queryperf -d file -s 192.168.1.100

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 192.168.1.100)
top[Status] Testing complete

Statistics:

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

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

  RTT max:         	1.141619 sec
  RTT min:              0.000149 sec
  RTT average:          0.006632 sec
  RTT std deviation:    0.008464 sec
  RTT out of range:     0 queries

  Percentage completed: 100.00%
  Percentage lost:        0.00%

  Started at:           Sun Sep 10 03:22:50 2017
  Finished at:          Sun Sep 10 03:26:45 2017
  Ran for:              235.257594 seconds

  Queries per second:   2983.963187 qps
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                          
 7774 named     20   0 50152  13m 2784 S 50.8  5.4   3:39.84 named                                                                                                                             
23274 root      20   0 20032  17m  672 S 24.5  7.4   0:17.01 queryperf                      

# vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0   4160   8052   6944 148324    0    0    77    78   67  187  2  3 89  6  0	
 2  0   4160   8060   6944 148352    0    0    24    12  999 13770  4 96  0  0  0	
 1  1   4160   8052   6944 148348    0    0    12     0  977 12900  4 96  0  0  0	
 2  0   4160   7992   6952 148428    0    0    56    52  988 12689 21 79  0  0  0	
 2  0   4160   7872   6960 148436    0    0     0    56  989 14114  3 97  0  0  0	
 1  1   4160   7880   6960 148440    0    0    16    56  974 13079  3 97  0  0  0	
 1  1   4160   7872   6960 148528    0    0    84    88 1008 13114  8 92  0  0  0	
 2  0   4160   7880   6960 148540    0    0     0     0  981 13744 15 85  0  0  0	
 2  1   4160   7700   6968 148776    0    0   232    52 1013 14028  2 98  0  0  0	
 
 # iostat 1
Linux 2.6.32-696.el6.i686 (localhost.localdomain) 	09/10/2017 	_i686_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.27    0.54    3.01    5.79    0.00   89.40

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
scd0              0.00         0.01         0.00        376          0
sda               4.04       154.73       156.98    5587614    5669060
dm-0              4.09        20.75        28.96     749330    1045720
dm-1              0.05         0.18         0.25       6520       9032
dm-2              0.01         0.06         0.00       2018         56
dm-3             15.51       113.36       104.19    4093554    3762752
dm-4              3.29        20.19        23.58     729154     851440

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.12    1.04   95.83    0.00    0.00    0.00

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
scd0              0.00         0.00         0.00          0          0
sda               3.12        41.67        75.00         40         72
dm-0              0.00         0.00         0.00          0          0
dm-1              0.00         0.00         0.00          0          0
dm-2              0.00         0.00         0.00          0          0
dm-3             11.46        41.67        75.00         40         72
dm-4              0.00         0.00         0.00          0          0


本文出自 “Reading” 博客,请务必保留此出处http://sonlich.blog.51cto.com/12825953/1966447

+++++++子域授权与编译安装(二)

标签:博客   linux   运维   

原文地址:http://sonlich.blog.51cto.com/12825953/1966447

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!