2024-10-11 23:27:07 +03:00
|
|
|
{
|
2024-11-04 04:37:29 +03:00
|
|
|
config,
|
|
|
|
container,
|
|
|
|
lib,
|
|
|
|
pkgs,
|
|
|
|
...
|
|
|
|
}: let
|
|
|
|
cfg = config.container.module.dns;
|
|
|
|
in {
|
|
|
|
options.container.module.dns = {
|
|
|
|
enable = lib.mkEnableOption "the DNS server.";
|
|
|
|
address = lib.mkOption {
|
|
|
|
default = "10.1.0.6";
|
|
|
|
type = lib.types.str;
|
|
|
|
};
|
|
|
|
port = lib.mkOption {
|
|
|
|
default = 53;
|
|
|
|
type = lib.types.int;
|
|
|
|
};
|
|
|
|
};
|
2024-06-25 04:04:39 +03:00
|
|
|
|
2024-11-04 04:37:29 +03:00
|
|
|
config = lib.mkIf cfg.enable {
|
|
|
|
containers.dns = container.mkContainer cfg {
|
|
|
|
config = { ... }: container.mkContainerConfig cfg {
|
|
|
|
services.blocky = {
|
|
|
|
enable = true;
|
|
|
|
# REF: https://0xerr0r.github.io/blocky/main/configuration/
|
|
|
|
settings = {
|
|
|
|
bootstrapDns = "tcp+udp:1.1.1.1";
|
|
|
|
connectIPVersion = "v4";
|
|
|
|
ports.dns = cfg.port;
|
|
|
|
# httpPort = "80";
|
|
|
|
upstreams.groups = {
|
|
|
|
default = [
|
|
|
|
"https://dns.quad9.net/dns-query"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
caching = {
|
|
|
|
maxItemsCount = 100000;
|
|
|
|
maxTime = "30m";
|
|
|
|
minTime = "5m";
|
|
|
|
prefetchExpires = "2h";
|
|
|
|
prefetchMaxItemsCount = 100000;
|
|
|
|
prefetchThreshold = 5;
|
|
|
|
prefetching = true;
|
|
|
|
};
|
|
|
|
blocking = {
|
|
|
|
blockTTL = "1m";
|
|
|
|
blockType = "zeroIP";
|
|
|
|
loading = {
|
|
|
|
refreshPeriod = "24h";
|
|
|
|
strategy = "blocking";
|
|
|
|
downloads = {
|
|
|
|
attempts = 3;
|
|
|
|
cooldown = "10s";
|
|
|
|
timeout = "5m";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
# SRC: https://oisd.nl
|
|
|
|
# SRC: https://v.firebog.net
|
|
|
|
denylists = {
|
|
|
|
suspicious = [
|
|
|
|
"https://raw.githubusercontent.com/PolishFiltersTeam/KADhosts/master/KADhosts.txt"
|
|
|
|
"https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts" # https://github.com/StevenBlack/hosts
|
|
|
|
"https://v.firebog.net/hosts/static/w3kbl.txt"
|
|
|
|
];
|
|
|
|
ads = [
|
|
|
|
"https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext"
|
|
|
|
"https://raw.githubusercontent.com/bigdargon/hostsVN/master/hosts"
|
|
|
|
"https://v.firebog.net/hosts/AdguardDNS.txt"
|
|
|
|
"https://v.firebog.net/hosts/Admiral.txt"
|
|
|
|
"https://v.firebog.net/hosts/Easylist.txt"
|
|
|
|
];
|
|
|
|
tracking = [
|
|
|
|
"https://hostfiles.frogeye.fr/firstparty-trackers-hosts.txt"
|
|
|
|
"https://v.firebog.net/hosts/Easyprivacy.txt"
|
|
|
|
"https://v.firebog.net/hosts/Prigent-Ads.txt"
|
|
|
|
];
|
|
|
|
malicious = [
|
|
|
|
"https://gitlab.com/quidsup/notrack-blocklists/raw/master/notrack-malware.txt"
|
|
|
|
"https://osint.digitalside.it/Threat-Intel/lists/latestdomains.txt"
|
|
|
|
"https://phishing.army/download/phishing_army_blocklist_extended.txt"
|
|
|
|
"https://raw.githubusercontent.com/AssoEchap/stalkerware-indicators/master/generated/hosts"
|
|
|
|
"https://raw.githubusercontent.com/Spam404/lists/master/main-blacklist.txt"
|
|
|
|
"https://urlhaus.abuse.ch/downloads/hostfile/"
|
|
|
|
"https://v.firebog.net/hosts/Prigent-Crypto.txt"
|
|
|
|
"https://v.firebog.net/hosts/Prigent-Malware.txt"
|
|
|
|
];
|
|
|
|
other = [
|
|
|
|
"https://big.oisd.nl/domainswild"
|
|
|
|
"https://zerodot1.gitlab.io/CoinBlockerLists/hosts_browser"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
# allowlists = {
|
|
|
|
# other = [
|
|
|
|
# "/.*.vk.com/"
|
|
|
|
# ];
|
|
|
|
# };
|
|
|
|
clientGroupsBlock = {
|
|
|
|
default = [
|
|
|
|
"ads"
|
|
|
|
"malicious"
|
|
|
|
"other"
|
|
|
|
"suspicious"
|
|
|
|
"tracking"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
customDNS = {
|
|
|
|
mapping = let
|
|
|
|
block = host: { ${host} = "0.0.0.0"; };
|
|
|
|
in {
|
|
|
|
# All subdomains to current host.
|
|
|
|
# ${config.container.domain} = config.container.host;
|
|
|
|
"voronind.com" = "10.0.0.1";
|
|
|
|
}
|
|
|
|
// block "gosuslugi.ru"
|
|
|
|
// block "rutube.ru"
|
|
|
|
// block "vk.com"
|
|
|
|
;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2024-06-09 23:35:53 +03:00
|
|
|
}
|