یکی از قابلیت های جدیدی که از ورژن 9.8 به BIND اضافه شده است SDB می باشد، SDB این امکان را به ما میدهد که از یک دیتابیس به عنوان Backend برای BIND بهره ببریم.در حال حاضر SDB فقط از SQLite ، PostgreSQL و LDAP پشتیبانی میکند، که در این بخش نحوه راه اندازی آن با PostgreSQL را آموزش میدهیم.در ابتدا پکیج های مورد نیاز را نصب میکنیم :
[root@named ~]# yum install -y epel-release [root@named ~]# yum install -y bind bind-utils bind-sdb postgresql postgresql-server postgresql-odbc
سرویس PostgreSQL را استارت میکنیم :
[root@named ~]# postgresql-setup initdb [root@named ~]# systemctl start postgresql && systemctl enable postgresql
یک یوزر ایجاد میکنیم :
[root@named ~]# sudo -i -u postgres $ createuser root --login --superuser --createdb --createrole --encrypted -P -W Enter Password: Aa123456 Re-type Password: Aa123456
برای امنیت بیشتر؛ مکانیزم Authentication دیتابیس را به MD5 تغییر میدهیم :
[root@named ~]# vim /var/lib/pgsql/data/pg_hba.conf local all all md5 host all all 127.0.0.1/32 md5 [root@named ~]# systemctl restart postgresql
دیتابیس و جدول های مورد نیاز برای سرویس bind ایجاد میکنیم :
[root@named ~]# createdb bind --owner=root [root@named ~]# psql -d bind bind# CREATE TABLE forward_tbl ( name varchar(255) DEFAULT NULL, ttl int DEFAULT '86400', rdtype varchar(90) DEFAULT NULL, rdata varchar(255)); bind# CREATE TABLE reverse_tbl ( name varchar(255) DEFAULT NULL, ttl int DEFAULT '86400', rdtype VARCHAR(90) DEFAULT NULL, rdata varchar(255));
سپس رکورد ها را در دیتابیس درج میکنیم :
# Forward : bind# INSERT INTO forward_tbl VALUES ('itpro.local','86400','SOA','named.itpro.local. root.itpro.local. 201609100 3600 1800 2419200 86400'); bind# INSERT INTO forward_tbl VALUES ('itpro.local','86400','NS','named.itpro.local.'); bind# INSERT INTO forward_tbl VALUES ('named.itpro.local','86400','A','192.168.1.1'); bind# INSERT INTO forward_tbl VALUES ('nginx.itpro.local','86400','A','192.168.1.2'); bind# INSERT INTO forward_tbl VALUES ('PC1.itpro.local','86400','A','192.168.1.10'); bind# INSERT INTO forward_tbl VALUES ('PC2.itpro.local','86400','A','192.168.1.11'); # Reverse : bind# INSERT INTO reverse_tbl VALUES ('1.168.192.in-addr.arpa','86400','SOA','named.itpro.local. root.itpro.local. 201609100 3600 1800 2419200 86400'); bind# INSERT INTO reverse_tbl VALUES ('1.168.192.in-addr.arpa','86400','NS','named.itpro.local.'); bind# INSERT INTO reverse_tbl VALUES ('1.1.168.192.in-addr.arpa','86400','PTR','named.itpro.local.'); bind# INSERT INTO reverse_tbl VALUES ('2.1.168.192.in-addr.arpa','86400','PTR','nginx.itpro.local.'); bind# INSERT INTO reverse_tbl VALUES ('10.1.168.192.in-addr.arpa','86400','PTR','PC1.itpro.local.'); bind# INSERT INTO reverse_tbl VALUES ('11.1.168.192.in-addr.arpa','86400','PTR','PC2.itpro.local.');
سرویس Bind را پیکربندی میکنیم :
[root@named ~]# vim /etc/named.conf ------------------ options { listen-on port 53 { 127.0.0.1; 192.168.1.1; }; allow-query { any; }; . . . }; zone "itpro.local" { type master; database "pgsql bind forward_tbl 127.0.0.1 root Aa123456"; }; zone "1.168.192.in-addr.arpa" { type master; database "pgsql bind reverse_tbl 127.0.0.1 root Aa123456"; }; ------------------
قابلیت SDB را فعال میکنیم :
[root@named ~]# vim /etc/sysconfig/named ENABLE_SDB=yes
سرویس bind را استارت میکنیم :
[root@named ~]# systemctl start named-sdb && systemctl enable named-sdb
در آخر Firewalld و SELinux را پیکربندی میکنیم :
[root@named ~]# firewall-cmd --permanent add-port={53/udp,5432/tcp} [root@named ~]# firewall-cmd --reload [root@named ~]# setenforce 0
برای درج رکورد های جدید نیز میتوانید بصورت زیر عمل کنید :
[root@named ~]# pgsql -d bind -c "INSERT INTO forward_tbl VALUES ('PC3.itpro.local','86400','A','192.168.1.20');" [root@named ~]# pgsql -d bind -c "INSERT INTO reverse_tbl VALUES ('20.1.168.192.in-addr.arpa','86400','PTR','PC3.itpro.local.');"
نویسنده : احسان هدایتی
منبع : ITPRO