flutter 发表于 2014-10-11 17:06

能实现客户端条件转发功能吗?

各位,我搭建了一个DNS,用的BIND9.10,我想实现根据客户端地址来进行条件转发,有办法实现吗?

比如:客户地址段1用本机DNS1进行解析,客户地址段2转发到DNS2进行解析。

我知道让客户地址段2直接修改本地DNS配置最简单,但我现在不方便通知所有客户修改DNS。

貌似OPTIONS里的转发,要么不转发,要么都转发,针对ZONE特定域名转发我知道。

VIEW里,倒是可以匹配客户地址段,这里面如何配置转发??

大家有何高见?谢谢!

cryboy2001 发表于 2014-10-13 07:37

bind view功能

下面帖中的bind view配置看看
http://bbs.chinaunix.net/thread-4153855-1-1.html

woxizishen 发表于 2014-10-13 13:54

你要的功能其实就是我下面说的dns view功能,不用什么dns1和dns2,看完你就明白了。你无非就是想让一个域名在2个域名服务器上解析成不同ip地址,其实你整的有点复杂,看完下面你就知道怎么做了。


偶dns总结的部分内容:
DNS VIEW功能則和上面的輪詢完全不同,VIEW是把同一個域名根據用戶的IP網段分配到不同的主機上,這樣不光有一定的可控性,還可以根據地理區域,將用戶按照就近原則訪問離自己近的web服務器或郵件服務器。例如:
電信和網通的接口只有10GB,當電信用戶和網通用戶互訪是有一定的帶寬延遲,那麼通過VIEW功能正好解決此問題,通過view將所有電信用戶訪問到在電信網段的服務器上,將所有網通用戶訪問到網通網段的服務器上。範例:
acl dianxin { 110.110.110.110/16;};      電信
(這個acl可以配置成一個文件,直接通過include加載例如:
include "local_acl.conf";
然後在local_acl.conf配置上面這段話也行)


acl wangtong { 220.220.220.220/16;};    網通
acl others    {221.221.221.221/16;};   其他ISP
view “dianxintest” {
       Match-clients { “dianxin”;};
zone “.” IN {                     (設定各個view,必須要設定根域zone)
      type hnnt;
      file “named.ca”;
};

zone www.baidu.com IN {
      type master;
      file “www.baidu.com.zone”;   
};
};


下來看另外一個VIEW
View “wangtongtest” {
      Match-clients { “wangtong”;};
zone “.” IN {                        
      type hnnt;
      file “named.ca”;
};

zone www.baidu.com IN {
      type master;
      file “cn.www.baidu.com.zone”;      存放的zone文件名稱要和第一個view不同.
};
};
View “otherstest” {
      Match-clients { “others”;};
zone “.” IN {                        
      type hnnt;
      file “named.ca”;
};

zone www.baidu.com IN {
      type master;
      file “others.www.baidu.com.zone”;      存放的zone文件名稱要和前面的view不同.
};
};
Named.conf設定到上述即可。
Zone的設定很簡單,只要分別把這3個zone的A記錄的IP設定到你想分配到那三台web服務器上的IP即可。


flutter 发表于 2014-10-14 14:54

:PP 哎,到底是你没有看明白我的文字,还是我的文字表达的不够明白。

我知道VIEW的功能,就是同一个域名针对不同的客户A/B解析成不同的地址A1/B1

而我想做的,是A和B都向DNS1发出请求,A被DNS1解析了,B被DNS1转发了

如此而已。

cryboy2001 发表于 2014-10-14 15:41

本帖最后由 cryboy2001 于 2014-10-14 15:41 编辑

forwarders
设定转发使用的ip地址。默认的列表是空的(不转发)。转发也可以设置在每个域上,这样全局选项中的转发设置就不会起作用了。用户可以将不同的域转发到服务器上,或者对不同的域可以实现forward only或first的不同方式,也可以根本就不转发。


view "external" {

match-clients { any; };

recursion no;

zone "example.com" {

type master;

file "example-external.db";

[ forward (only|first) ; ]
用来代替全局的转发器列表。如果不在forward类型的域中设定,就不会有这个域查询的被转发;全局的转发设置则没有起作用。
[ forwarders

{ ip_addr ; [ ip_addr ; ... ] }; ]

};

};

woxizishen 发表于 2014-10-14 19:50

本帖最后由 woxizishen 于 2014-10-14 19:56 编辑

回复 4# flutter

俺把你理解成你就是因为后端放置了相同内容的多台服务器,想用view做简单的负载均衡。楼上的版主已经精准回答了,我就不多说了。

到时提醒下你,做view又做了MASTER/SLAVE同步的话,對於多個VIEW,slave只能下載到一個view。故若要slave下載所有view,則slave需要用到transfer-source 语句。




















   
页: [1]
查看完整版本: 能实现客户端条件转发功能吗?