11个版本 (7个破坏性版本)
0.8.0 | 2021年12月31日 |
---|---|
0.7.0 | 2021年2月19日 |
0.6.1 | 2021年2月5日 |
0.6.0 | 2020年11月15日 |
#454 in 命令行界面
每月下载量 30次
26KB
481 行
Singularity
将已知恶意域名拉入黑洞列表的命令行工具。主要目的是与PDNS Recursor一起使用。该工具可以从多个adlist源拉入黑洞域名,并以各种格式输出到多个位置。
安装
需要Rust的稳定构建版本,最好是最新版本。最低支持版本:1.52.0。
- 来自crates.io:
cargo install singularity
- 从源:
cargo install --path .
用法
- 基本用法:
singularity
CLI选项
可以使用--help
标志查看所有CLI选项。选项有
-v
,--verbose
:启用额外的调试输出到stdout-c
,--config
:使用自定义配置文件而不是默认配置文件-t
,--timeout
:等待每个HTTP请求成功的超时时间(以毫秒为单位)(默认:1000)
配置文件
默认情况下,工具将使用当前系统依赖位置的配置文件。在Linux上,这是$HOME/.config/singularity/singularity.conf
。如果不存在,则会创建该文件并包含空值。
完整的配置文件示例
whitelist = ["my-cool-domain.com"]
[[adlist]]
source = "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"
format = "hosts"
[[adlist]]
source = "file:/absolute/path"
format = "domains"
[[adlist]]
source = "https://raw.githubusercontent.com/notracking/hosts-blocklists/master/dnsmasq/dnsmasq.blacklist.txt"
format = "dnsmasq"
[[output]]
type = "hosts"
destination = "/etc/powerdns/hosts"
blackhole_address = "0.0.0.0"
include = ["extra-hosts"]
[[output]]
type = "hosts"
destination = "/etc/hosts"
deduplicate = true
[[output]]
type = "pdns-lua"
destination = "/etc/powerdns/blackhole.lua"
blackhole_address = "::"
output_metric = true
metric_name = "blocked-queries"
白名单
一个域名数组,您希望不包括在最终输出中。这些匹配是精确的,因此google.com
只会匹配google.com
,但不会匹配其任何子域名。配置选项可以完全省略,以使用默认空白名单。
广告列表
一个描述广告列表源的数组。它们有两个键
source
:广告列表源URL。URL方案可以是http
、https
或file
。如果是一个file
URL,则其路径将在本地系统中解释为绝对文件系统路径。format
:广告列表条目所在的格式。对于默认的hosts
值,可以省略此选项。值可以是以下之一:hosts
:标准的/etc/hosts
风格的条目;0.0.0.0 malicious.domain
。假设每个条目中的地址是不指定的0.0.0.0
IP 地址。具有不同IP地址或以IP地址作为域名的条目将被忽略。domains
:每行只是一个域名:malicious.domain
。dnsmasq
:每行是dnsmasq的address
或server
配置行;address=/example.com/#
无论来源或格式如何,任何以 #
开头的广告列表中的行都将被忽略,并且不会包含在输出中。
输出
一个对象数组,描述了输出黑名单域的位置和方式。每个输出的类型由 type
键指定。可能类型如下:
hosts
:输出标准 hosts 格式,其中每行以<blackhole_address> <name>
的格式。可以通过在include
数组选项中设置它们的路径来将其他 hosts 文件包含在输出中。pdns-lua
:输出一个 Lua 脚本,可用于 PDNS Recursor 的lua-dns-script
配置选项。脚本将硬编码每个黑名单域。通过使用preresolve()
函数,脚本将以A
记录或包含blackhole_address
的AAAA
记录响应对黑名单域的查询。记录的类型取决于blackhole_address
是否是 IPv4 或 IPv6 地址。默认情况下,脚本将输出一个名为blocked-queries
的度量,每次脚本响应被阻止的域名时都会增加。它可以通过与其他 Recursor 度量相同的方式访问。可以通过output_metric
设置来禁用此度量,并且可以通过metric_name
设置来自定义度量的名称。这两个设置都可以省略以使用它们的默认值。
每种输出类型的附加配置
blackhole_address
:在黑洞响应中使用的地址deduplicate
:在输出中删除重复条目。在使用多个来源时可能会出现重复条目。
依赖项
~13-25MB
~438K SLoC