options {
listen-on port 53 { any; };
directory "/var/named";
};
logging {
channel default_debug {
file "data/named.run";
print-time yes;
severity dynamic;
};
channel query_log {
file "data/query.log" versions 3 size 20m;
severity info;
print-time yes;
print-category yes;
};
category queries {
query_log;
};
};
acl clients{
192.168.1.0/24;
};
view localhost {
match-clients { localhost; };
allow-query { localhost; };
allow-query-cache { localhost; };
recursion yes;
};
view clients {
match-clients { clients; };
allow-query { clients; };
allow-query-cache { clients; };
zone "." {
type forward;
forwarders { 127.0.0.1 port 54;};
forward only;
};
};
view external
{
match-clients { any; };
allow-query { any; };
allow-query-cache { any; };
recursion no;
allow-transfer { none; };
zone "." {
type master;
file "root.zone";
};
};
Bind View转发到PDNS
发布时间:May 17, 2014 // 分类:DNS // No Comments
PDNS实现智能DNS
发布时间:May 16, 2014 // 分类:DNS // No Comments
PDNS默认不支持bind view功能,通过PowerDNS Recursor加载Lua脚本判断再递归查询PowerDNS实现智能DNS。
#关闭数据包缓存,测试时开启查询时直接读缓存不经过lua preresolve()
disable-packetcache=yes
forward-zones=com=108.61.242.102
local-address=0.0.0.0
lua-dns-script=/tmp/b.lua
#转发所有域到pdns server
forward-zones=.=127.0.0.1:54
lua:
function preresolve ( remoteip, domain, qtype )
pdnslog("a test message.. received query "..domain.." from "..remoteip.." on "..getlocaladdress());
ret={}
if qtype ~= pdns.A then return -1, ret end --非A记录查询跳过,后端查询
local ips = {"192.168.1.1/32", "10.1.0.0/16", "127.0.0.0/24"}
if matchnetmask(remoteip, ips) and domain == "www.example.com."
then
ret[1]= {qtype=pdns.A, content="85.17.220.215", ttl=86400}
setvariable()
return 0, ret
else
setvariable()
return -1, ret
end
end
PDNS缓存
发布时间:May 16, 2014 // 分类:DNS // No Comments
packet cache:数据包缓存,优先级高
query cache:后台数据库查询缓存,packet cache无时查询
negquery-cache:无域名或域名无记录缓存
缓存操作:
PDNS Server:
pdns_control ccounts
pdns_control purge example.net
pdns_control purge
PDNS Recursor
rec_control get cache-entries packetcache-entries negcache-entries nsspeeds-entries
rec_control dump-cache /tmp/dns-cache
rec_control wipe-cache example.net
PowerDNS使用
发布时间:February 1, 2014 // 分类:DNS // No Comments
使用EPEL源可直接安装:
yum install pdns pdns-backend-mysql
添加MySQL数据库:
create database powerdns;
grant all privileges on powerdns.* to 'powerdns'@'localhost' identified by 'password';
use powerdns;
create table domains (
id INT auto_increment,
name VARCHAR(255) NOT NULL,
master VARCHAR(128) DEFAULT NULL,
last_check INT DEFAULT NULL,
type VARCHAR(6) NOT NULL,
notified_serial INT DEFAULT NULL,
account VARCHAR(40) DEFAULT NULL,
primary key (id)
) Engine=InnoDB;
CREATE UNIQUE INDEX name_index ON domains(name);
CREATE TABLE records (
id INT auto_increment,
domain_id INT DEFAULT NULL,
name VARCHAR(255) DEFAULT NULL,
type VARCHAR(10) DEFAULT NULL,
content VARCHAR(64000) DEFAULT NULL,
ttl INT DEFAULT NULL,
prio INT DEFAULT NULL,
change_date INT DEFAULT NULL,
primary key(id)
) Engine=InnoDB;
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
create table supermasters (
ip VARCHAR(64) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) DEFAULT NULL,
PRIMARY KEY (ip, nameserver)
) Engine=InnoDB;
将SQL信息添加到PowerDNS配置文件:
launch=gmysql
gmysql-host=localhost
gmysql-user=powerdns
gmysql-password=password
gmysql-dbname=powerdns
添加域名记录:
INSERT INTO domains (name, type) values ('example.com', 'NATIVE');
insert into `records`(`domain_id`,`name`,`type`,`content`,`ttl`,`prio`,`change_date`) values
(1,'example.com','SOA','localhost root@example.com 1',86400,NULL,NULL);
insert into `records`(`domain_id`,`name`,`type`,`content`,`ttl`,`prio`,`change_date`) values
(1,'example.com','NS','ns.example.com',86400,NULL,NULL);
insert into `records`(`domain_id`,`name`,`type`,`content`,`ttl`,`prio`,`change_date`) values
(1,'example.com','A','192.0.2.10',120,NULL,NULL);
insert into `records`(`domain_id`,`name`,`type`,`content`,`ttl`,`prio`,`change_date`) values
(1,'*.example.com','A','192.0.2.10',120,NULL,NULL);
insert into `records`(`domain_id`,`name`,`type`,`content`,`ttl`,`prio`,`change_date`) values
(1,'ns.example.com','A','192.0.2.10',120,NULL,NULL);
看看效果:
/etc/init.d/pdns monitor
PHP:
<?php
try {
$dbo = new PDO('mysql:host=localhost;dbname=powerdns', 'powerdns', 'password');
} catch (PDOException $e) {
$error = $e->getMessage();
die("PDO Execute Error : ".$error."\n");
}
$domain = 'www.haiyun.me';
$sql = "SELECT `id` FROM domains WHERE NAME = \"$domain\"";
$stmt = $dbo->query($sql);
//var_dump($stmt);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
var_dump($result);
if ($result) {
$id = $result['id'];
} else {
$sql = "INSERT INTO domains (name, TYPE) VALUES (\"$domain\", 'NATIVE')";
$dbo->query($sql);
$id = $dbo->lastInsertId();
}
$sql = "INSERT INTO `records` (`domain_id`, `name`, `TYPE`, `content`, `ttl`) VALUES (:id, :name, :type, :content, :ttl)";
$stmt = $dbo->prepare($sql);
$stmt->execute(array(':id'=>$id, ':name'=>'a.'.$domain, ':type'=>'A', ':content'=>'192.168.1.1', ':ttl'=>'600'));
$stmt->execute(array(':id'=>$id, ':name'=>'b.'.$domain, ':type'=>'A', ':content'=>'192.168.1.1', ':ttl'=>'600'));
?>
分类
- Apache (13)
- Nginx (45)
- PHP (86)
- IIS (8)
- Mail (17)
- DNS (16)
- Cacti (14)
- Squid (5)
- Nagios (4)
- Puppet (7)
- CentOS (13)
- Iptables (23)
- RADIUS (3)
- OpenWrt (41)
- DD-WRT (1)
- VMware (9)
- 网站程序 (2)
- 备份存储 (11)
- 常用软件 (20)
- 日记分析 (10)
- Linux基础 (18)
- 欧诺代理 (0)
- Linux服务 (18)
- 系统监控 (4)
- 流量监控 (7)
- 虚拟化 (28)
- 伪静态 (2)
- LVM (3)
- Shell (18)
- 高可用 (2)
- 数据库 (16)
- FreeBSD (3)
- 网络安全 (25)
- Windows (35)
- 网络工具 (22)
- 控制面板 (3)
- 系统调优 (10)
- Cisco (3)
- VPN (6)
- ROS (20)
- Vim (14)
- KMS (4)
- PXE (2)
- Mac (1)
- Git (1)
- PE (1)
- LNS (2)
- Xshell (7)
- Firefox (13)
- Cygwin (4)
- OpenSSL (9)
- Sandboxie (3)
- StrokesPlus (1)
- AutoHotKey (4)
- Total Commander (3)
- WordPress (3)
- iMacros (6)
- Typecho (2)
- Ollydbg (1)
- Photoshop (1)
- 正则 (3)
- Debian (3)
- Python (8)
- NoSQL (6)
- 消息队列 (4)
- JS (7)
- Tmux (3)
- GO (7)
- HHVM (2)
- 算法 (1)
- Docker (2)
- PT (15)
- N1 (16)
- K2P (6)
- LUKS (4)
最新文章
- 光猫拨号ImmortalWrt/OpenWRT路由获取ipv6遇到的问题
- php-fpm错误error_log日志配置
- debian-12/bookworm安装mariadb10.3和mysql5.6
- smokeping主从配置及遇到的问题
- openwrt/linux使用tcpdump/nflog ulogd记录iptables日志
- tmux bash shell自动保存history
- ImmortalWrt/OpenWRT为guest wifi网络配置ipv6 nat6
- PVE更新upgrade遇到The following packages have been kept back
- openwrt/immortalwrt修改odhcpd ipv6 preferred_lifetime和valid_lifetime
- golang版本udpxy iptv rtp多播转http单播
最近回复
- opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
- liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
- 海运: 不好意思,没有。
- zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
- 海运: 恩山有很多。
- swsend: 大佬可以分享一下固件吗,谢谢。
- Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
- 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
- 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
- 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...