Our Authoritative Server, Recursor and dnsdist products are 100% open source. For the service provider market, OX also sells the PowerDNS Platform which builds on our Open Source products to deliver an integrated DNS solution with 24/7 support and includes features as parental control, malware filtering, automated attack mitigation, and long-term query logging & searching.
熟悉DNS工作原理的同学可以大致地将DNS记录的查询分为两种:查询本地缓存和向上递归查询。和其他的如BIND、dnsmasq等将这些功能集成到一起的DNS软件不同,PowerDNS将其一分为二,分为了PowerDNS Authoritative Server和PowerDNS Recursor,分别对应这两种主要的需求,而我们常说的pdns指的就是PowerDNS Authoritative Server (后面简称PDNS Auth),主要用途就是作为权威域名服务器,当然也可以作为普通的DNS服务器提供DNS查询功能。
The PowerDNS Recursor is a high-performance DNS recursor with built-in scripting capabilities. It is known to power the resolving needs of over 150 million internet connections.
$ rpm -ivh mysql80-community-release-el7-3.noarch.rpm $ yum update $ yum install mysql-server $ mysqladmin --version mysqladmin Ver 8.0.23 for Linux on x86_64 (MySQL Community Server - GPL)
-- 修改密码 ALTER user 'root'@'localhost' IDENTIFIED BY '你的新密码'; -- 注意这里的'localhost'也有可能是别的参数,具体可以通过下面这条命令来进行查询: select user, host, authentication_string, plugin from mysql.user;
-- 创建一个mysql的用户名为powerdns,只能本机登录 -- 创建一个mysql的数据库名为powerdns,并允许powerdns用户访问 CREATE USER 'powerdns'@'localhost' IDENTIFIED BY '你的新密码'; CREATE DATABASE powerdns; GRANT ALL ON powerdns.* TO 'powerdns'@'localhost'; FLUSH PRIVILEGES;
-- 对于MYSQL8需要额外指定加密方式避免ERROR 2059 (HY000)的问题 ALTER USER 'powerdns'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';
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 UNSIGNED DEFAULT NULL, account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1';
CREATE UNIQUE INDEX name_index ON domains(name);
CREATE TABLE records ( id BIGINT 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, disabled TINYINT(1) DEFAULT 0, ordername VARCHAR(255) BINARY DEFAULT NULL, auth TINYINT(1) DEFAULT 1, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1';
CREATE INDEX nametype_index ON records(name,type); CREATE INDEX domain_id ON records(domain_id); CREATE INDEX ordername ON records (ordername);
CREATE TABLE supermasters ( ip VARCHAR(64) NOT NULL, nameserver VARCHAR(255) NOT NULL, account VARCHAR(40) CHARACTER SET 'utf8' NOT NULL, PRIMARY KEY (ip, nameserver) ) Engine=InnoDB CHARACTER SET 'latin1';
CREATE TABLE comments ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, name VARCHAR(255) NOT NULL, type VARCHAR(10) NOT NULL, modified_at INT NOT NULL, account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL, comment TEXT CHARACTER SET 'utf8' NOT NULL, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1';
CREATE INDEX comments_name_type_idx ON comments (name, type); CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
CREATE TABLE domainmetadata ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, kind VARCHAR(32), content TEXT, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1';
CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);
CREATE TABLE cryptokeys ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, flags INT NOT NULL, active BOOL, published BOOL DEFAULT 1, content TEXT, PRIMARY KEY(id) ) Engine=InnoDB CHARACTER SET 'latin1';
CREATE INDEX domainidindex ON cryptokeys(domain_id);
CREATE TABLE tsigkeys ( id INT AUTO_INCREMENT, name VARCHAR(255), algorithm VARCHAR(50), secret VARCHAR(255), PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1';
CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
$ pdnsutil create-zone example.org ns1.example.com Feb 24 16:54:48 gmysql Connection successful. Connected to database 'powerdns' on 'localhost'. Feb 24 16:54:48 gmysql Connection successful. Connected to database 'powerdns' on 'localhost'. Creating empty zone 'example.org' Feb 24 16:54:48 No serial for'example.org' found - zone is missing? Also adding one NS record
$ pdnsutil list-all-zones Feb 24 16:54:59 gmysql Connection successful. Connected to database 'powerdns' on 'localhost'. Feb 24 16:54:59 gmysql Connection successful. Connected to database 'powerdns' on 'localhost'. tinychen.com example.org
$ pdnsutil add-record example.org '' MX '25 mail.example.org' Feb 24 16:55:36 gmysql Connection successful. Connected to database 'powerdns' on 'localhost'. Feb 24 16:55:36 gmysql Connection successful. Connected to database 'powerdns' on 'localhost'. New rrset: example.org. 3600 IN MX 25 mail.example.org
$ pdnsutil add-record example.org. www A 192.168.100.100 Feb 24 16:56:09 gmysql Connection successful. Connected to database 'powerdns' on 'localhost'. Feb 24 16:56:09 gmysql Connection successful. Connected to database 'powerdns' on 'localhost'. New rrset: www.example.org. 3600 IN A 192.168.100.100