+
This commit is contained in:
133
PowerDNS_install_SQIite3.md
Normal file
133
PowerDNS_install_SQIite3.md
Normal file
@ -0,0 +1,133 @@
|
||||
```sh
|
||||
sudo apt-get install pdns-backend-sqlite3 -y
|
||||
```
|
||||
|
||||
Для использования SQLIte копируем схему из https://doc.powerdns.com/authoritative/backends/generic-sqlite3.html
|
||||
```sh
|
||||
sudo apt-get install pdns-backend-sqlite3 -y
|
||||
```
|
||||
|
||||
```sh
|
||||
sudo apt install sqlite3 -y
|
||||
```
|
||||
|
||||
Create database:
|
||||
```sh
|
||||
sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 ".databases" &&
|
||||
sudo chown pdns:pdns /var/lib/powerdns/pdns.sqlite3
|
||||
```
|
||||
Create database structure
|
||||
```sql
|
||||
sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 <<'EOF'
|
||||
|
||||
PRAGMA foreign_keys = 1;
|
||||
|
||||
CREATE TABLE domains (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL COLLATE NOCASE,
|
||||
master VARCHAR(128) DEFAULT NULL,
|
||||
last_check INTEGER DEFAULT NULL,
|
||||
type VARCHAR(8) NOT NULL,
|
||||
notified_serial INTEGER DEFAULT NULL,
|
||||
account VARCHAR(40) DEFAULT NULL,
|
||||
options VARCHAR(65535) DEFAULT NULL,
|
||||
catalog VARCHAR(255) DEFAULT NULL
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX name_index ON domains(name);
|
||||
CREATE INDEX catalog_idx ON domains(catalog);
|
||||
|
||||
|
||||
CREATE TABLE records (
|
||||
id INTEGER PRIMARY KEY,
|
||||
domain_id INTEGER DEFAULT NULL,
|
||||
name VARCHAR(255) DEFAULT NULL,
|
||||
type VARCHAR(10) DEFAULT NULL,
|
||||
content VARCHAR(65535) DEFAULT NULL,
|
||||
ttl INTEGER DEFAULT NULL,
|
||||
prio INTEGER DEFAULT NULL,
|
||||
disabled BOOLEAN DEFAULT 0,
|
||||
ordername VARCHAR(255),
|
||||
auth BOOL DEFAULT 1,
|
||||
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX records_lookup_idx ON records(name, type);
|
||||
CREATE INDEX records_lookup_id_idx ON records(domain_id, name, type);
|
||||
CREATE INDEX records_order_idx ON records(domain_id, ordername);
|
||||
|
||||
|
||||
CREATE TABLE supermasters (
|
||||
ip VARCHAR(64) NOT NULL,
|
||||
nameserver VARCHAR(255) NOT NULL COLLATE NOCASE,
|
||||
account VARCHAR(40) NOT NULL
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX ip_nameserver_pk ON supermasters(ip, nameserver);
|
||||
|
||||
|
||||
CREATE TABLE comments (
|
||||
id INTEGER PRIMARY KEY,
|
||||
domain_id INTEGER NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
type VARCHAR(10) NOT NULL,
|
||||
modified_at INT NOT NULL,
|
||||
account VARCHAR(40) DEFAULT NULL,
|
||||
comment VARCHAR(65535) NOT NULL,
|
||||
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX comments_idx ON comments(domain_id, name, type);
|
||||
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
|
||||
|
||||
|
||||
CREATE TABLE domainmetadata (
|
||||
id INTEGER PRIMARY KEY,
|
||||
domain_id INT NOT NULL,
|
||||
kind VARCHAR(32) COLLATE NOCASE,
|
||||
content TEXT,
|
||||
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX domainmetaidindex ON domainmetadata(domain_id);
|
||||
|
||||
|
||||
CREATE TABLE cryptokeys (
|
||||
id INTEGER PRIMARY KEY,
|
||||
domain_id INT NOT NULL,
|
||||
flags INT NOT NULL,
|
||||
active BOOL,
|
||||
published BOOL DEFAULT 1,
|
||||
content TEXT,
|
||||
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX domainidindex ON cryptokeys(domain_id);
|
||||
|
||||
|
||||
CREATE TABLE tsigkeys (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name VARCHAR(255) COLLATE NOCASE,
|
||||
algorithm VARCHAR(50) COLLATE NOCASE,
|
||||
secret VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
|
||||
|
||||
EOF
|
||||
```
|
||||
|
||||
Configure database connection from PowerDNS to SQLIte
|
||||
```sh
|
||||
sudo tee /etc/powerdns/pdns.d/pdns.local.sqlite.conf <<'EOF'
|
||||
launch=gsqlite3
|
||||
gsqlite3-database=/var/lib/powerdns/pdns.sqlite3
|
||||
EOF
|
||||
```
|
||||
Set access level to file
|
||||
```sh
|
||||
sudo chown pdns: /etc/powerdns/pdns.d/pdns.local.sqlite.conf &&
|
||||
sudo chmod 640 /etc/powerdns/pdns.d/pdns.local.sqlite.conf
|
||||
```
|
||||
|
||||
In PowerDNS configured to auto read config from dir /etc/powerdns/pdns.d/
|
||||
Reference in New Issue
Block a user