Browsed by
分类:PowerDNS

PowerDNS 设置LOG的问题

PowerDNS 设置LOG的问题

PowerDNS设置log比较复杂

修改配置文件找到

logging-facility修改成logging-facility=1

修改系统syslog.conf

增加

local1.=info                       /var/log/pdns.info
local1.=warn                       /var/log/pdns.warn
local1.=err                        /var/log/pdns.err
local1.=debug                      /var/log/pdns.debug

#localX,X为刚才设置的数字,这里为1

重启syslog一下就行了

自制像电信,移动的广告推送系统

自制像电信,移动的广告推送系统

现在上网都有广告推送系统,大家想来都碰到过
但这个推送系统,也可以用来推送公告,比如领导的花边新闻哪,水费电费催交哪,谁家的孩子玩了人家的狗哪之类的
现在的推送系统,要价都太………有点黑了,那我们来自制一个
原理:
1、利用防水墙,劫持所有53端口的访问,并转向于我们自建的DNS服务器
2、判断客户端IP是否在一个规定的时间内(如24小时),首次访问,如果是,转向自建WEB服务器
3、自建WEB服务器推送领导的花边新闻,当然领导掉阴沟里这类也可以,只要大家都喜欢的。
材料:PowerDNS+Lua,Nginx+Lua,php
OK,如果要想成功的搭建设这套系统,你要需要熟读上面各软件的官方手册,切记,熟读
PowerDNS使用Lua写个判断脚本 ,这里简单举例

function nxdomain ( ip, domain, qtype )
  print ("nxhandler called for: ", ip, domain, qtype)
 
  ret={}
  if qtype ~= pdns.A then return pdns.PASS, ret end  --  only A records
  if not string.find(domain, "^www%.") then return pdns.PASS, ret end  -- only things that start with www.
  if not matchnetmask(ip, "10.0.0.0/8", "192.168.0.0/16")  then return pdns.PASS, ret end -- only interfere with local queries
  ret[1]={qtype=pdns.A, content="192.0.2.13",ttl=30}    -- add IN A 192.0.2.13 自已的服务器
  ret[2]={qtype=pdns.CNAME, content="www.google.com",ttl=30}    -- add IN CNAME www.google.com ttl 30
  setvariable()
  return 0, ret                 -- return no error, plus records
end

 

上面代码的含义是,如果没查询到域名的DNS信息,就返回一个自定义的信息,这里返回自已的WEB服务器192.0.2.13,下面的CNAME是我写给大家看的演示,官方手册里没有相关的信息,自已摸索出来的,ttl 改成 30
脚本参考网址:https://doc.powerdns.com/md/recursor/scripting/

Nginix+Lua+Php就简单极了,网上教程一大把,内容就是泛域名的解析,参考nginx 官方手册,并参考nginx官方的配置WordPress的教程
Nginx wiki:http://wiki.nginx.org/Main
Nginx wordpress:http://wiki.nginx.org/Wordpress

Nginx.conf 的一个server配置案例

    server {
        listen       80;
        server_name  localhost;
        index  index.php;
        root /data/www;
        location /
               {
                 #try_files  $uri $uri/ /index.php?url=http://$http_host$request_uri;
                 include php5.conf;
                 fastcgi_param SCRIPT_FILENAME $document_root/index.php;
                 fastcgi_param QUERY_STRING url=http://$http_host$request_uri;
                 fastcgi_pass   127.0.0.1:9000;
         }


        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }

        error_page 404 /index.php;

    }

 

php5.conf

 
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;
 
fastcgi_pass_request_body on;
client_body_in_file_only clean;
 
fastcgi_param  REQUEST_BODY_FILE  $request_body_file;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
 
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  PATH_INFO          $fastcgi_path_info;
fastcgi_param  PATH_TRANSLATED    $document_root$fastcgi_path_info;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  PHP_SELF           $fastcgi_script_name;
 
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
fastcgi_param  HTTPS              $https;
 
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

 

因为我们要获得用户的真实访问网址,所以我们要模拟一个,像电信一样的,你的真实网址是-GO,这里我们转向php文件,让其操作,不使用lua,因为太麻烦了。

index.php内容

                         ad web site</br>
=========================================</br>
                    You site not find in network
                              sorry
=========================================</br>
<?php
echo "Your URL =>".$_GET["url"]."<br>";
?>

 

当然有的PHPER要跳出来说,你的$_GET[“url”]怎么无中生有生出来的,如果你这里也提出想应的问题,请学会详细阅读

fastcgi_param QUERY_STRING url=http://$http_host$request_uri;

 

nginx.conf中组建了一个url,谢谢

无图无真像,当访问一个不存在的域名时,直接显示的是我们推送服务器的页面

图片