1分以上TLDに対してBIND(DNS)を信頼できるようにする方法

1分以上TLDに対してBIND(DNS)を信頼できるようにする方法

.zip私のラップトップ(Fedora 38を実行)でTLDをブロックするためにバインディングを試しました。

  1. バインディングのインストール

  2. アップデート中named.conf:

    options {
        listen-on port 53 { 127.0.0.1; };
        listen-on-v6 port 53 { ::1; };
        directory   "/var/named";
        dump-file   "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { localhost; };
    
        /* 
        - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
        - If you are building a RECURSIVE (caching) DNS server, you need to enable 
        recursion. 
        - If your recursive DNS server has a public IP address, you MUST enable access 
        control to limit queries to your legitimate users. Failing to do so will
        cause your server to become part of large scale DNS amplification 
        attacks. Implementing BCP38 within your network would greatly
        reduce such attack surface 
        */
        recursion yes;
    
        forwarders { 8.8.8.8; };
    
        dnssec-validation yes;
    
        managed-keys-directory "/var/named/dynamic";
        geoip-directory "/usr/share/GeoIP";
    
        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
    
        /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
        include "/etc/crypto-policies/back-ends/bind.config";
    
        /* this makes it block everything */
        // response-policy { zone "zip"; };
    };
    
    logging {
            channel default_debug {
                    file "data/named.run";
                    severity dynamic;
            };
    };
    
    zone "zip" IN {
        type master;
        file "zip-rpz";
        allow-update { none; };
    };
    
    zone "." IN {
        type hint;
        file "named.ca";
    };
    
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";
    
  3. 次に追加/var/named/zip-rpz:

    $TTL 1D                ; default expiration time (in seconds) of all RRs without their own TTL value
    @       IN  SOA   ns.zip. postmaster.ns.zip. ( 2020091025 7200 3600 1209600 3600 )
    @       IN      NS      ns1                    ; nameserver
    *       IN      A       127.0.0.1              ; localhost
            IN      AAAA    ::                     ; localhost
    
  4. 仮申請

    sudo systemctl enable named
    sudo service named restart
    resolvectl dns wlp0s20f3 127.0.0.1
    

ただし、実行は次dig url.zipの1分ほど127.0.0.1を返します。その後、「正しい」IPが表示されます(ブラウザからサイトに再度アクセスできます)。なぜリセットされますか?

その行を削除してもforwarders結果は同じです。

設定するとrecursion no;何も修正できません。その他.zip URLより(127.0.0.1を指す)

答え1

私が解決したようですが?

私の記憶が正しいなら、問題は設定を長期間維持しないようsystemd-resolveだった...resolvectl

/etc/systemd/resolved.conf含めるファイルを変更した場合

...
[Resolve]
DNS=127.0.0.1
...

それから再起動し、(ついに)やるべきことをするように見えました。


どうやら私はまだなぜそうなのか気になる

resolvectl dns wlp0s20f3 127.0.0.1

一時的にのみ有効

関連情報