架了VPN,DNS又有点小问题了。在内网有些内部的地址要解析,只是内部的DNS对twitter和facebook的解析,得到的结果ping在VPN的主机上ping不到,又不想只用8.8.8.8这样的公开的DNS,而丢失对内部地址的解析。只好自己架一个DNS做个代理,对于内部的地址,就去内部的DNS请求,其它的都用8.8.8.8。

装了最常见的bind9,配置named.conf文件,一般在/etc/下

options {
    directory "/opt/local/var/named";

    // uncomment the following lines to turn on DNS forwarding,
        // and change the forwarind ip address(es) :
        //forward first;
        forwarders {
            8.8.8.8;
        };  

        listen-on { 127.0.0.1; };

        // to allow only specific hosts to use the DNS server:
        allow-query {
            127.0.0.1;
        };  
    
    pid-file "/opt/local/var/run/named.pid";
};

这是做一个简单的转发,所有DNS请求都转到8.8.8.8去,试了下,能正常工作。

以内网地址是example.com结尾的为例,对内网的地址解析去特定的内网DNS,假定192.168.0.100

zone "example.com" in {
    type forward;
    forward first;
    forwarders {
        192.168.0.100;
    };
};

配置文件的问题在重启named的时候会打在syslog里。如果希望跟踪DNS的具体解析,可以在conf里加上

logging{
  channel named_log{
   file "/var/log/named/named.log" versions 3;
   severity info;
   print-severity yes;
   print-time yes;
   print-category yes;
 };
 category default{
  named_log;
 };
};