nullrouteまたは127.0.0.1マルチドメインを配置できるLAN用のプライマリDNSサーバーを設定しようとしています。
ブロックするドメインはリストにありますが、正規表現を使用して一部のドメインをブロックしたい(設定には必須)。
これを行うための私の候補ソフトウェアは、さまざまな便利な機能を備えた再帰キャッシュセキュリティDNSサーバーであるUnboundのようです。
しかし、Unboundは正規表現をサポートしていないようです!
さらに、Unboundは地域の複製に関して非常に面倒です。自分のドメインリストは複数の混合ソースで構成されているため、いくつかのスクリプトを使用して多くの重複エントリをフィルタリングするだけでなく、リスト内のドメインを使用してフィルタリングすることもできます。たとえば、次のようになります。
aaah.very.this.com
だけでなく
とても.this.com
これにより、ローカル冗長性があるため、Unboundはエラーで悲鳴を上げます。
これはマイナーな問題であり、ドメインリストをより整理して削除することができますが、主な問題は、ドメイン要求を処理するための正規表現がないことです。
*.comや*.bizなどをすべてブロックできますか?
[\w\.\-]+.com A 127.0.0.1
[\w\.\-]+.com AAAA ::1
私の正規表現は例です。より複雑な正規表現を使用できます。
ボーナス
もう少し不愉快なことができましたか? nullrouteまたは127.0.0.1を指すすべてのエントリとドメインホワイトリストのみを外部DNSに渡すことで解決できますか?
返信を送信する場合は、私が答えを知りたいので、この追加の質問を忘れないでください。
どうですか? Bind9、dnsmasq、アンバウンド、pdns-recursor...
答え1
DNSサービスレベルでドメイン/要求を傍受することと、IPネットブロックルートを127.0.0.1 / nullルートにリダイレクトすることは、2つの完全に異なります。
私の観点からは、DNSレベルはより効率的でリソース効率的です。
IPレベル/ヌルパスでブロックする方が効率的ですが、管理が面倒で広い範囲で使用すると、CPU使用率がわずかに高くなります。
DNSレベルでブラックリストを使用すると、しばしば数十万の名前に達する可能性があり、そのような大きなルーティングテーブルを持つことは不可能であることに注意してください。
私自身もdnsmasqやBINDを通じてブラックリストについて調べたことがある。 DNSブラックリストを使用して広告、マルウェアをブロックし、スマートテレビが再び電話(LGウェブサイト)をブロックします。
BINDの応答ポリシー領域を使用する理由は、名前の末尾に*という単純な正規表現を許可することで、ブラックリストのサイズを大幅に減らすことができるためです。DNS応答ポリシーゾーン
BINDのRPZは、すべての最新のLinuxディストリビューションと同様に、BIND 9.8以降からサポートされています。
RPZ機能を設定したため、BIND DNSサーバーは、文字列/正規表現に一致するドメイン/ DNS名が存在しないと単純に応答します。一致しない他のすべての名前は、一般的なプロセスによって解決されます。
私には数行の短い例があります/etc/bind/rpz.db
。
*.ad.lgappstv.com CNAME .
*.yumenetworks.com CNAME .
*.smartclip.net CNAME .
*.smartshare.lgtvsdp.com CNAME .
*.ibis.lgappstv.com CNAME .
*.doubleclick.net CNAME .
*.l.doubleclick.net CNAME .
*.302br.net CNAME .
*.liveadvert.com CNAME .
*.easysuperdownload-1.com CNAME .
*.easysuperdownload-2.com CNAME .
*.itrackpop.com CNAME .
あなたの例を使用して:
*.this.com CNAME .
*.biz CNAME .
TLD全体をブロックするのが最善の方法ではないかもしれません。
BIND は Unbound ほど繰り返すのは難しくありません。 aaaa.this.comとthis.comを許可しますが、this.comを複数回定義することはできません。
RPZの自己設定については、UnixとLinuxに関するこの質問に対する回答を参照してください。Bind9の大規模ゾーンファイル:広告ブロック
Raspberry Pi PIを使用してすでに作成された同様のプロジェクトについては、以下を参照してください。ファイホール:インターネット広告のブラックホールこのプロジェクトはまた、いくつかの既知の無料ブラックリストを案内します。
~からhttps://github.com/pi-hole/pi-hole/blob/master/adlists.default
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
# Other lists we consider safe:
http://adblock.gjtech.net/?format=unix-hosts
http://mirror1.malwaredomains.com/files/justdomains
http://sysctl.org/cameleon/hosts
https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist
https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
# hosts-file.net list. Updated frequently, but has been known to block legitimate sites.
http://hosts-file.net/ad_servers.txt
# Mahakala list. Has been known to block legitimage domains including the entire .com range.
# Warning: Due to the sheer size of this list, the web admin console will be unresponsive.
#http://adblock.mahakala.is/
# ADZHOSTS list. Has been known to block legitimate domains
#http://optimate.dl.sourceforge.net/project/adzhosts/HOSTS.txt
# Windows 10 telemetry list - warning this one may block windows update
#https://raw.githubusercontent.com/crazy-max/HostsWindowsBlocker/master/hosts.txt
# Securemecca.com list - Also blocks "adult" sites (pornography/gambling etc)
#http://securemecca.com/Downloads/hosts.txt
# Quidsup's tracker list
https://raw.githubusercontent.com/quidsup/notrack/master/trackers.txt
ホワイトリストに関しては明らかに可能です。
ドメインごとに実行する場合は、ルートネームサーバーのヒントを持たないプロキシBIND DNSサーバーを設定する必要があります。
ただし、許可された各ドメインは、外部世界との通信のためにDNSのフォワーダを使用して作成する必要があります。この理論的な記事は、アイデアを非常によくまとめています。DNSホワイトリストを使用してマルウェアをブロックする
もう一度 BIND で RPZ を使用すると、設定がはるかに簡単になり、プロキシ DNS サーバーを設定する必要はありません。
このページ構成のバリエーションとして、RPZ再訪問、RPZホワイトリストで一般的に構成されたBINDを持ち、通常のrpzポリシーのすべての項目をブラックアウトします(例:*または。)。
options {
....
response-policy {
zone "rpz-white" policy PASSTHRU; // my own white list
zone "rpz-foreign"; // obtained from producer
};
}
ホワイトリストは間違いなくすべてを拒否するクレイジーなアプローチですが、ホワイトリストを使用すると、ブラックリストの広範な一致から特定のドメインを除外できます。