Freelancer任务之八openvpn的DNS分发

雇主给了个难题,他搭建了一个openvpn,并且有两个DNS Server,一个是带AD广告过滤的,一个是不带的。这两个dns服务在同一个机器上,端口不同。

他想让在openvpn的client端配置一下,让客户使用不同的dns server。

找了半天,没有能修改dns port的配置。

于是曲线救国。

方案如下:客户端固定IP,根据不同的来源IP来分发到不同的DNS去。

本来是想用V2EX一个哥们自己写的glider,弄了半天,不知道怎么配,不过功能肯定是能实现的。最差就是自己改go代码了。

快速起见,用了另外一个哥们的dns-dispatcher,就是dns分发,glider是彻底的各种代理转发,链条代理,非常强悍。

克隆dns-dispatcher代码

1git clone https://github.com/cathuhoo/dns-dispatcher  

编译:

1make  

配置,我们只配置了udp的53端口,标准的DNS端口

 1vi dns-dispatch.config  
 2; This is a test configuration file
 3
 4[main]
 5file_resolvers = resolvers.txt  
 6file_policy = policy.txt  
 7file_log = /var/log/dns-dispatch.log  
 8file_pid = /var/run/dns-dispatch.pid  
 9num_threads = 3  
10service_port = 53  
11#tcpservice_port = 53
12daemonize = yes  

配置策略:

1vi policy.txt  
2ip2 | * | Forward:bind2  
3ip1 | * | Forward:bind1  

配置ip1和ip2

1vi ip1  
210.10.1.2
3
4vi ip2  
510.10.1.3  

配置bind1和bind2,两个dns在10.10.1.1上,端口分别是5301和5302

1vi resolvers.txt  
2bind1|10.10.1.1|5301  
3bind2|10.10.1.1|5302  

运行:

1sudo ./dns-dispatch -c dns-dispatch.config  

OK,搞定,所有的配置都在文件里,还有别的用法,大家用的话自己看文档吧。

最后分别从10.10.1.2和10.10.1.3上面用dig 请求dns server 10.10.1.1,会得到不同的结果

1dig -t www.bbb.com @10.10.1.1  

Lxc下如何让usb设备pass Through直接到达虚机
Freelancer任务之七memcache 放大攻击
comments powered by Disqus