天天看點

Bind view的master與slave部署與測試

一、view介紹

View功能很容易了解,就是将不同IP位址段發來的查詢響應到不同的DNS解析。例如需要對三個不同IP位址段進行配置,就需要明确這些IP位址段,這樣View功能才會有效。對于初學者,簡單了解它的文法非常必要。如果要有一個更清楚的認識,則可以到BIND官方網站查閱文檔。

也可以了解為這樣:現在為了解決南北互聯問題,主要使用cdn技術,cdn技術也可以說是一個bind view。但ip的acl是cdn的一個核心,這個我們自己沒辦法找到。

二、配置

安裝的話,可以參考之前的文章,本文就不描述了;

Master端的named.conf檔案

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

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

<code>[root@master named]# cat /etc/named.conf</code>

<code>//</code>

<code>// named.conf</code>

<code>// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS</code>

<code>// server as a caching only nameserver (as a localhost DNS resolver only).</code>

<code>// See /usr/share/doc/bind*/sample/ for example named configuration files.</code>

<code>options {</code>

<code>listen-on port </code><code>53</code> <code>{ any; };</code>

<code>#   listen-on-v6 port </code><code>53</code> <code>{ ::</code><code>1</code><code>; };</code>

<code>directory   </code><code>"/var/named"</code><code>;</code>

<code>dump-file   </code><code>"/var/named/data/cache_dump.db"</code><code>;</code>

<code>statistics-file </code><code>"/var/named/data/named_stats.txt"</code><code>;</code>

<code>memstatistics-file </code><code>"/var/named/data/named_mem_stats.txt"</code><code>;</code>

<code>allow-query     { any; };</code>

<code>recursion yes;</code>

<code>allow-transfer  { </code><code>192.168</code><code>.</code><code>56.105</code><code>;};</code>

<code>#also-notify { </code><code>192.168</code><code>.</code><code>56.105</code><code>;};</code>

<code>dnssec-enable yes;</code>

<code>dnssec-validation yes;</code>

<code>dnssec-lookaside auto;</code>

<code>/* Path to ISC DLV key */</code>

<code>bindkeys-file </code><code>"/etc/named.iscdlv.key"</code><code>;</code>

<code>managed-keys-directory </code><code>"/var/named/dynamic"</code><code>;</code>

<code>};</code>

<code>logging {</code>

<code>channel default_debug {</code>

<code>file </code><code>"data/named.run"</code><code>;</code>

<code>severity </code><code>dynamic</code><code>;</code>

<code>#zone </code><code>"."</code> <code>IN {</code>

<code>#   type hint;</code>

<code>#   file </code><code>"named.ca"</code><code>;</code>

<code>#};</code>

<code>acl Telecomacl {</code>

<code>192.168</code><code>.</code><code>56.104</code><code>;</code>

<code>acl Unicomacl {</code>

<code>192.168</code><code>.</code><code>56.105</code><code>;</code>

<code>acl Othersacl {</code>

<code>any;</code>

<code>view </code><code>"Telecom"</code> <code>{</code>

<code>match-clients { </code><code>"Telecomacl"</code><code>; </code><code>192.168</code><code>.</code><code>56.109</code><code>; !</code><code>192.168</code><code>.</code><code>56.107</code><code>; !</code><code>192.168</code><code>.</code><code>56.108</code><code>;};</code>

<code>zone    </code><code>"test.com"</code> <code>IN {</code>

<code>type        master;</code>

<code>notify  yes;</code>

<code>also-notify { </code><code>192.168</code><code>.</code><code>56.105</code><code>;};</code>

<code>allow-transfer { </code><code>192.168</code><code>.</code><code>56.109</code><code>; };</code>

<code>file    </code><code>"Telecom.test.com"</code><code>;</code>

<code>zone    </code><code>"."</code> <code>IN {</code>

<code>type        hint;</code>

<code>file        </code><code>"named.ca"</code><code>;</code>

<code>view </code><code>"Unicom"</code> <code>{</code>

<code>match-clients { </code><code>"Unicomacl"</code><code>; </code><code>192.168</code><code>.</code><code>56.107</code><code>; !</code><code>192.168</code><code>.</code><code>56.109</code><code>; !</code><code>192.168</code><code>.</code><code>56.108</code><code>; };</code>

<code>type            master;</code>

<code>allow-transfer { </code><code>192.168</code><code>.</code><code>56.107</code><code>; };</code>

<code>file    </code><code>"Unicom.test.com"</code><code>;</code>

<code>zone    </code><code>"."</code>     <code>IN {</code>

<code>type            hint;</code>

<code>file            </code><code>"named.ca"</code><code>;</code>

<code>view </code><code>"Others"</code> <code>{</code>

<code>match-clients { </code><code>"Othersacl"</code><code>; </code><code>192.168</code><code>.</code><code>56.108</code><code>; !</code><code>192.168</code><code>.</code><code>56.109</code><code>; !</code><code>192.168</code><code>.</code><code>56.107</code><code>; };</code>

<code>allow-transfer { </code><code>192.168</code><code>.</code><code>56.108</code><code>; };</code>

<code>file    </code><code>"Others.test.com"</code><code>;</code>

Slave的named.conf配置

<code>[root@slave named]# cat /etc/named.conf</code>

<code>#   bindkeys-file </code><code>"/etc/named.iscdlv.key"</code><code>;</code>

<code>view    </code><code>"Telecom"</code> <code>{</code>

<code>match-clients { </code><code>"Telecomacl"</code><code>;  </code><code>192.168</code><code>.</code><code>56.109</code><code>; !</code><code>192.168</code><code>.</code><code>56.107</code><code>; !</code><code>192.168</code><code>.</code><code>56.108</code><code>; };</code>

<code>transfer-source </code><code>192.168</code><code>.</code><code>56.109</code><code>;</code>

<code>type    slave;</code>

<code>masters { </code><code>192.168</code><code>.</code><code>56.104</code><code>; };</code>

<code>view    </code><code>"Unicom"</code> <code>{</code>

<code>transfer-source </code><code>192.168</code><code>.</code><code>56.107</code><code>;</code>

<code>view    </code><code>"Others"</code> <code>{</code>

<code>transfer-source </code><code>192.168</code><code>.</code><code>56.108</code><code>;</code>

Zone的配置(master與slave裡都是一樣的)

Telecom.test.com的

<code>[root@master named]# cat Telecom.test.com</code>

<code>$TTL 1D</code>

<code>@   IN SOA  ns1.test.com.  root.localhost. (</code>

<code>2013071098</code>  <code>; serial</code>

<code>60</code>  <code>; refresh</code>

<code>1H  ; retry</code>

<code>1W  ; expire</code>

<code>3H )    ; minimum</code>

<code>NS  ns1.test.com.</code>

<code>NS  ns2.test.com.</code>

<code>A   </code><code>192.168</code><code>.</code><code>56.104</code>

<code>server  A   </code><code>192.168</code><code>.</code><code>56.101</code>

<code>client1 A   </code><code>192.168</code><code>.</code><code>56.103</code>

<code>ubuntu  A   </code><code>192.168</code><code>.</code><code>56.102</code>

<code>ns1 A   </code><code>192.168</code><code>.</code><code>56.104</code>

<code>ns2 A   </code><code>192.168</code><code>.</code><code>56.105</code>

<code>test2   A   </code><code>192.168</code><code>.</code><code>8.1</code>

<code>test1   A   </code><code>192.168</code><code>.</code><code>8.12</code>

<code>test3   A   </code><code>192.168</code><code>.</code><code>8.3</code>

<code>www A   </code><code>1.1</code><code>.</code><code>1.1</code>

<code>Telecom.test.com的</code>

<code>[root@master named]# cat Unicom.test.com</code>

<code>www A   </code><code>2.2</code><code>.</code><code>2.2</code>

<code>Others.test.com的</code>

<code>[root@master named]# cat Others.test.com</code>

<code>www A   </code><code>3.3</code><code>.</code><code>3.3</code>

還需要記住,上面的named.conf與zone都配置好後,需要把master與slave的ip都加入到/etc/resolv.conf裡,格式類似為

<code>[root@master named]# cat /etc/resolv.conf</code>

<code>; generated by /sbin/dhclient-script</code>

<code>nameserver </code><code>192.168</code><code>.</code><code>56.104</code>

<code>nameserver </code><code>192.168</code><code>.</code><code>56.105</code>

如果不添加,主機就無法通過master與slave主機來檢視dns資訊。

目前我這個是把acl與view都集中在一個named.conf配置檔案裡,一般如果你不是頻繁的修改acl内容或者view内容,可以直接使用我這樣的配置,這樣同步是話,可以直接通過slave來複制主的zone到slave裡,不需要你自己進行管理(我是使用slave端多網卡,通過transfer-source來指定複制源的方面來進行slave複制master的zone,一般如果不使用這樣的方法,你有多個view的話,slave負責master的zone就會出現複制後的zone是多個,但多個zone的配置是完全一樣的,是以要不就采用slave多網卡,要不就使用下面的rsync)。如果你頻繁修改的話,可以把acl放到另外的一個檔案裡,然後在named.conf裡include,但這樣的話,這個acl檔案還有zone的檔案,在master與slave複制的時候,就需要你自己來弄了,你可以使用rsync+inotify或者rsync+Crontab來進行複制。

三、下面是測試

<code>[root@master named]# ifconfig eth0</code>

<code>eth0      Link encap:Ethernet  HWaddr </code><code>08</code><code>:</code><code>00</code><code>:</code><code>27</code><code>:</code><code>59</code><code>:BB:1F</code>

<code>inet addr:</code><code>192.168</code><code>.</code><code>56.104</code>  <code>Bcast:</code><code>192.168</code><code>.</code><code>56.255</code>  <code>Mask:</code><code>255.255</code><code>.</code><code>255.0</code>

<code>inet6 addr: fe80::a00:27ff:fe59:bb1f/</code><code>64</code> <code>Scope:Link</code>

<code>UP BROADCAST RUNNING MULTICAST  MTU:</code><code>1500</code>  <code>Metric:</code><code>1</code>

<code>RX packets:</code><code>1593</code> <code>errors:</code><code>0</code> <code>dropped:</code><code>0</code> <code>overruns:</code><code>0</code> <code>frame:</code><code>0</code>

<code>TX packets:</code><code>1177</code> <code>errors:</code><code>0</code> <code>dropped:</code><code>0</code> <code>overruns:</code><code>0</code> <code>carrier:</code><code>0</code>

<code>collisions:</code><code>0</code> <code>txqueuelen:</code><code>1000</code>

<code>RX bytes:</code><code>137736</code> <code>(</code><code>134.5</code> <code>KiB)  TX bytes:</code><code>157084</code> <code>(</code><code>153.4</code> <code>KiB)</code>

<code>[root@master named]# dig www.test.com</code>

<code>; &lt;&lt;&gt;&gt; DiG </code><code>9.8</code><code>.2rc1-RedHat-</code><code>9.8</code><code>.</code><code>2</code><code>-</code><code>0.17</code><code>.rc1.el6_4.</code><code>4</code> <code>&lt;&lt;&gt;&gt; www.test.com</code>

<code>;; global options: +cmd</code>

<code>;; Got answer:</code>

<code>;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: </code><code>46214</code>

<code>;; flags: qr aa rd ra; QUERY: </code><code>1</code><code>, ANSWER: </code><code>1</code><code>, AUTHORITY: </code><code>2</code><code>, ADDITIONAL: </code><code>2</code>

<code>;; QUESTION SECTION:</code>

<code>;www.test.com.          IN  A</code>

<code>;; ANSWER SECTION:</code>

<code>www.test.com.       </code><code>86400</code>   <code>IN  A   </code><code>1.1</code><code>.</code><code>1.1</code>

<code>;; AUTHORITY SECTION:</code>

<code>test.com.       </code><code>86400</code>   <code>IN  NS  ns1.test.com.</code>

<code>test.com.       </code><code>86400</code>   <code>IN  NS  ns2.test.com.</code>

<code>;; ADDITIONAL SECTION:</code>

<code>ns1.test.com.       </code><code>86400</code>   <code>IN  A   </code><code>192.168</code><code>.</code><code>56.104</code>

<code>ns2.test.com.       </code><code>86400</code>   <code>IN  A   </code><code>192.168</code><code>.</code><code>56.105</code>

<code>;; Query time: </code><code>1</code> <code>msec</code>

<code>;; SERVER: </code><code>192.168</code><code>.</code><code>56.104</code><code>#</code><code>53</code><code>(</code><code>192.168</code><code>.</code><code>56.104</code><code>)</code>

<code>;; WHEN: Mon Jul </code><code>15</code> <code>10</code><code>:</code><code>07</code><code>:</code><code>52</code> <code>2013</code>

<code>;; MSG SIZE  rcvd: </code><code>114</code>

<code>[root@slave ~]# ifconfig eth0</code>

<code>eth0      Link encap:Ethernet  HWaddr </code><code>08</code><code>:</code><code>00</code><code>:</code><code>27</code><code>:</code><code>92</code><code>:7F:</code><code>34</code>

<code>inet addr:</code><code>192.168</code><code>.</code><code>56.105</code>  <code>Bcast:</code><code>192.168</code><code>.</code><code>56.255</code>  <code>Mask:</code><code>255.255</code><code>.</code><code>255.0</code>

<code>RX packets:</code><code>1330</code> <code>errors:</code><code>0</code> <code>dropped:</code><code>0</code> <code>overruns:</code><code>0</code> <code>frame:</code><code>0</code>

<code>TX packets:</code><code>1518</code> <code>errors:</code><code>0</code> <code>dropped:</code><code>0</code> <code>overruns:</code><code>0</code> <code>carrier:</code><code>0</code>

<code>RX bytes:</code><code>125612</code> <code>(</code><code>122.6</code> <code>KiB)  TX bytes:</code><code>163198</code> <code>(</code><code>159.3</code> <code>KiB)</code>

<code>[root@slave ~]# dig www.test.com</code>

<code>;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: </code><code>40968</code>

<code>www.test.com.       </code><code>86400</code>   <code>IN  A   </code><code>2.2</code><code>.</code><code>2.2</code>

<code>;; WHEN: Mon Jul </code><code>15</code> <code>02</code><code>:</code><code>09</code><code>:</code><code>43</code> <code>2013</code>

<code>root@server:~# ifconfig eth0</code>

<code>eth0      Link encap:Ethernet  HWaddr </code><code>08</code><code>:</code><code>00</code><code>:</code><code>27</code><code>:</code><code>66</code><code>:7a:7a</code>

<code>inet addr:</code><code>192.168</code><code>.</code><code>56.101</code>  <code>Bcast:</code><code>192.168</code><code>.</code><code>56.255</code>  <code>Mask:</code><code>255.255</code><code>.</code><code>255.0</code>

<code>inet6 addr: fe80::a00:27ff:fe66:7a7a/</code><code>64</code> <code>Scope:Link</code>

<code>RX packets:</code><code>752</code> <code>errors:</code><code>0</code> <code>dropped:</code><code>0</code> <code>overruns:</code><code>0</code> <code>frame:</code><code>0</code>

<code>TX packets:</code><code>1064</code> <code>errors:</code><code>0</code> <code>dropped:</code><code>0</code> <code>overruns:</code><code>0</code> <code>carrier:</code><code>0</code>

<code>RX bytes:</code><code>66541</code> <code>(</code><code>66.5</code> <code>KB)  TX bytes:</code><code>100256</code> <code>(</code><code>100.2</code> <code>KB)</code>

<code>root@server:~# dig www.test.com</code>

<code>; &lt;&lt;&gt;&gt; DiG </code><code>9.8</code><code>.</code><code>1</code><code>-P1 &lt;&lt;&gt;&gt; www.test.com</code>

<code>;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: </code><code>43605</code>

<code>www.test.com.       </code><code>86400</code>   <code>IN  A   </code><code>3.3</code><code>.</code><code>3.3</code>

<code>;; Query time: </code><code>3</code> <code>msec</code>

<code>;; WHEN: Mon Jul </code><code>15</code> <code>10</code><code>:</code><code>11</code><code>:</code><code>20</code> <code>2013</code>

下面測試當master的named當掉的時候的結果

<code>[root@master named]# /etc/init.d/named stop</code>

<code>Stopping named: .                                          [  OK  ]</code>

<code>1</code><code>、  在</code><code>192.168</code><code>.</code><code>56.104</code><code>裡檢視www.test.com</code>

<code>RX packets:</code><code>1833</code> <code>errors:</code><code>0</code> <code>dropped:</code><code>0</code> <code>overruns:</code><code>0</code> <code>frame:</code><code>0</code>

<code>TX packets:</code><code>1342</code> <code>errors:</code><code>0</code> <code>dropped:</code><code>0</code> <code>overruns:</code><code>0</code> <code>carrier:</code><code>0</code>

<code>RX bytes:</code><code>155319</code> <code>(</code><code>151.6</code> <code>KiB)  TX bytes:</code><code>171750</code> <code>(</code><code>167.7</code> <code>KiB)</code>

<code>;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: </code><code>26442</code>

<code>;; SERVER: </code><code>192.168</code><code>.</code><code>56.105</code><code>#</code><code>53</code><code>(</code><code>192.168</code><code>.</code><code>56.105</code><code>)</code>

<code>;; WHEN: Mon Jul </code><code>15</code> <code>10</code><code>:</code><code>18</code><code>:</code><code>15</code> <code>2013</code>

<code>RX packets:</code><code>1507</code> <code>errors:</code><code>0</code> <code>dropped:</code><code>0</code> <code>overruns:</code><code>0</code> <code>frame:</code><code>0</code>

<code>TX packets:</code><code>1633</code> <code>errors:</code><code>0</code> <code>dropped:</code><code>0</code> <code>overruns:</code><code>0</code> <code>carrier:</code><code>0</code>

<code>RX bytes:</code><code>139266</code> <code>(</code><code>136.0</code> <code>KiB)  TX bytes:</code><code>175684</code> <code>(</code><code>171.5</code> <code>KiB)</code>

<code>;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: </code><code>9825</code>

<code>;; Query time: </code><code>4</code> <code>msec</code>

<code>;; WHEN: Mon Jul </code><code>15</code> <code>02</code><code>:</code><code>18</code><code>:</code><code>49</code> <code>2013</code>

<code>RX packets:</code><code>860</code> <code>errors:</code><code>0</code> <code>dropped:</code><code>0</code> <code>overruns:</code><code>0</code> <code>frame:</code><code>0</code>

<code>TX packets:</code><code>1228</code> <code>errors:</code><code>0</code> <code>dropped:</code><code>0</code> <code>overruns:</code><code>0</code> <code>carrier:</code><code>0</code>

<code>RX bytes:</code><code>75440</code> <code>(</code><code>75.4</code> <code>KB)  TX bytes:</code><code>114113</code> <code>(</code><code>114.1</code> <code>KB)</code>

<code>;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: </code><code>56763</code>

<code>;; WHEN: Mon Jul </code><code>15</code> <code>10</code><code>:</code><code>19</code><code>:</code><code>16</code> <code>2013</code>

下面是我對named.conf裡是否指定使用notify yes做了一個測試

1、沒有指定使用notify yes

<a target="_blank" href="http://blog.51cto.com/attachment/201308/143814636.jpg"></a>

2、指定使用notifyyes

<a target="_blank" href="http://blog.51cto.com/attachment/201308/144201231.jpg"></a>

具體的測試情況,可以參考我附件裡的word文檔

根據上面的測試結果,我認為如果你的acl檔案裡(不在named.conf裡),對修改後更新的速度還有要求(比如要求1分鐘内slave就需要能修改更新),最好還是在slave裡使用rsync+sersync或者rsync+inotify來進行同步acl的檔案,還有zone的配置。

如果對修改更新速度沒有太多的要求,可以指定使用notify yes。

具體的選擇看自己的需求了。

具體的測試過程我就不寫了,在附件裡的word文檔裡有。

<a href="http://down.51cto.com/data/2363369" target="_blank">附件:http://down.51cto.com/data/2363369</a>

 本文轉自 reinxu 51CTO部落格,原文連結:http://blog.51cto.com/dl528888/1279643,如需轉載請自行聯系原作者

繼續閱讀