Bind
Bind9 中的 ACL 條件區域
我正在嘗試僅為孩子應用“restrictmoderate.youtube.com”,並讓其他人使用 Bind9 訪問標準的“youtube.com”。
# cat named.conf include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones"; ========================================================================== # cat named.conf.options acl goodclients { 192.168.0.0/16; localhost; localnets; }; acl kids { 192.168.2.0/24; }; acl adults { 192.168.1.0/24; }; options { directory "/var/cache/bind"; recursion yes; allow-query { goodclients; }; // forward traffic to opendns forwarders { 208.67.222.222; 208.67.220.220; }; forward only; dnssec-enable yes; dnssec-validation yes; // Conform to RFC1035 auth-nxdomain no; // Force youtube.com to restrictmoderate.youtube.com response-policy { zone "rpz"; }; listen-on-v6 { none; }; querylog yes; }; ========================================================================== # cat named.conf.local //include "/etc/bind/zones.rfc1918"; logging{ channel simple_log { file "/var/log/bind/query.log" versions 3; severity info; print-time yes; print-severity yes; print-category yes; }; category default{ simple_log; }; }; zone "rpz" IN { type master; file "/etc/bind/rpdb.zone"; allow-query { kids; !adults; }; }; ========================================================================== # cat rpdb.zone $ORIGIN rpz. $TTL 1H @ IN SOA localhost. root.localhost. ( 7 1H 15m 30d 2h ) NS LOCALHOST. www.youtube.com IN CNAME restrictmoderate.youtube.com. m.youtube.com IN CNAME restrictmoderate.youtube.com. youtubei.googleapis.com IN CNAME restrictmoderate.youtube.com. youtube.googleapis.com IN CNAME restrictmoderate.youtube.com. www.youtube-nocookie.com IN CNAME restrictmoderate.youtube.com. google.com IN CNAME forcesafesearch.google.com. www.google.com IN CNAME forcesafesearch.google.com.
我不明白為什麼“rpz”區域適用於所有人(192.168.1.0/24 和 192.168.2.0/24),而我希望它只適用於“兒童”ACL(192.168.2.0/24) :
allow-query { kids; !adults; };
我究竟做錯了什麼?謝謝你的幫助。
RPZ 區域不是傳統的 DNS 區域,並且該
allow-query
指令的行為與您通常期望的不同。它主要用於限制複製。來自https://www.zytrax.com/books/dns/ch7/rpz.html:RPZ 區域可能會被查詢(如果一個 master 只能由一個 slave 讀取它的 SOA RR,如果是一個 slave,則從不)
. . .
如上所述,RPZ 主站只需要被有效的從站查詢以讀取其 SOA RR(用於區域傳輸操作)。列出所有從屬伺服器或引用 ACL 子句的允許查詢語句是合適的。根本不需要查詢 RPZ 從站。允許查詢 {none;}; 聲明適合實現這一點。
您最好的方法可能是使用您的 ACL 來實現視圖(不缺少指南和操作方法),而 rpz 區域僅位於“兒童”視圖中。此外,您可能需要考慮像這樣重寫您的 ACL 以獲得相同的效果
{ kids; !adults; }
(或添加“其他”ACL 以擷取不在您列出的 2 個子網中的所有內容):acl adults { 192.168.1.0/24; 127.0.0.1; }; acl kids { !adults; };
完全取決於你。
祝你好運!