Pi-hole FTL Configuration Reference
This page documents the available options of pihole-FTL. They are typically managed via the TOML-formatted configuration file /etc/pihole/pihole.toml. This file may be edited directly or you can use the command line (CLI) option, the web interface, the application programming interface (API) or environment variables.
Using the web interface, the API or the CLI is preferred as they can do error checking for you, trying to prevent any incompatible options which could prevent FTL from starting on a severely broken configuration.
To edit with the command line, use the format --config key.name value, e.g:
sudo pihole-FTL --config dns.dnssec true
Environment Variables
⚙️ Configuration Precedence Every Pi-hole setting in this file can be overridden using an environment variable. This is especially common in Docker deployments. Environment variable names follow the format:
FTLCONF_<section>_<key>
For example:
FTLCONF_dns_upstreams
FTLCONF_database_DBimport
⚠️ If a setting is defined via an environment variable, it becomes read-only. You will not be able to override it through the TOML file, the command line, or the web interface until the variable is removed from the environment.
[dns]
upstreams
Upstream DNS Servers to be used by Pi-hole. If this is not set, Pi-hole will not resolve any non-local queries.
Example: [ “8.8.8.8”, “127.0.0.1#5335”, “docker-resolver” ]
Allowed values are: Array of IP addresses and/or hostnames, optionally with a port (#...)
Default value: []
TOMLCLIEnvironment (Docker Compose)
[dns]
upstreams = [ "8.8.8.8", "127.0.0.1#5335", "docker-resolver" ]
sudo pihole-FTL --config dns.upstreams '[ "8.8.8.8", "127.0.0.1#5335", "docker-resolver" ]'
environment:
FTLCONF_dns_upstreams: |-
8.8.8.8
127.0.0.1#5335
docker-resolver
CNAMEdeepInspect
Use this option to control deep CNAME inspection. Disabling it might be beneficial for very low-end devices
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[dns]
CNAMEdeepInspect = true
sudo pihole-FTL --config dns.CNAMEdeepInspect true
environment:
FTLCONF_dns_CNAMEdeepInspect: true
blockESNI
Should _esni. subdomains of blocked domains also be blocked by default? Encrypted
Server Name Indication (ESNI) is certainly a good step into the right direction to
enhance privacy on the web. It prevents on-path observers, including ISPs, coffee
shop owners and firewalls, from intercepting the TLS Server Name Indication (SNI)
extension by encrypting it. This prevents the SNI from being used to determine which
websites users are visiting.
ESNI will obviously cause issues for pixelserv-tls which will be unable to generate
matching certificates on-the-fly when it cannot read the SNI. According to the IETF
draft (link above), we can easily restore pixelserv-tls's operation by replying
NXDOMAIN to _esni. subdomains of blocked domains as this mimics a “not configured
for this domain“ behavior.
ESNI is mostly obsolete. It was previously rolled out by Cloudflare and Firefox, but they, as well as almost every client and server, are now using Encrypted Client Hello (ECH) instead of ESNI. ECH is served via the HTTPS record on the same RRname, so it will automatically be blocked.
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[dns]
blockESNI = true
sudo pihole-FTL --config dns.blockESNI true
environment:
FTLCONF_dns_blockESNI: true
EDNS0ECS
Should we overwrite the query source when client information is provided through EDNS0 client subnet (ECS) information? This allows Pi-hole to obtain client IPs even if they are hidden behind the NAT of a router. This feature has been requested and discussed on Discourse where further information how to use it can be found: <https://discourse.pi-hole.net/t/support-for-add-subnet-option-from-dnsmasq-ecs-edns0-client-subnet/35940>
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[dns]
EDNS0ECS = true
sudo pihole-FTL --config dns.EDNS0ECS true
environment:
FTLCONF_dns_EDNS0ECS: true
ignoreLocalhost
Should FTL hide queries made by localhost?
Allowed values are: true or false
Default value: false
TOMLCLIEnvironment (Docker Compose)
[dns]
ignoreLocalhost = false
sudo pihole-FTL --config dns.ignoreLocalhost false
environment:
FTLCONF_dns_ignoreLocalhost: false
showDNSSEC
Should FTL analyze and show internally generated DNSSEC queries?
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[dns]
showDNSSEC = true
sudo pihole-FTL --config dns.showDNSSEC true
environment:
FTLCONF_dns_showDNSSEC: true
analyzeOnlyAandAAAA
Should FTL analyze only A and AAAA queries?
Allowed values are: true or false
Default value: false
TOMLCLIEnvironment (Docker Compose)
[dns]
analyzeOnlyAandAAAA = false
sudo pihole-FTL --config dns.analyzeOnlyAandAAAA false
environment:
FTLCONF_dns_analyzeOnlyAandAAAA: false
piholePTR
Controls whether and how FTL will reply with for address for which a local interface exists. Changing this setting causes FTL to restart.
Allowed values are:
“NONE”Pi-hole will not respond automatically on PTR requests to local interface addresses. Ensure pi.hole and/or hostname records exist elsewhere.“HOSTNAME”Serve the machine's hostname. The hostname is queried from the kernel through uname(2)->nodename. If the machine has multiple network interfaces, it can also have multiple nodenames. In this case, it is unspecified and up to the kernel which one will be returned. On Linux, the returned string is what has been set using sethostname(2) which is typically what has been set in /etc/hostname.“HOSTNAMEFQDN”Serve the machine's hostname (see limitations above) as fully qualified domain by adding the local domain. If no local domain has been defined (config option dns.domain.name), FTL tries to query the domain name from the kernel using getdomainname(2). If this fails, FTL appends“.no_fqdn_available”to the hostname.“PI.HOLE”Respond with“pi.hole”.
Default value: “PI.HOLE”
TOMLCLIEnvironment (Docker Compose)
[dns]
piholePTR = "PI.HOLE"
sudo pihole-FTL --config dns.piholePTR "PI.HOLE"
environment:
FTLCONF_dns_piholePTR: 'PI.HOLE'
replyWhenBusy
How should FTL handle queries when the gravity database is not available?
Allowed values are:
“BLOCK”Block all queries when the database is busy.“ALLOW”Allow all queries when the database is busy.“REFUSE”Refuse all queries which arrive while the database is busy.“DROP”Just drop the queries, i.e., never reply to them at all. Despite“REFUSE”sounding similar to“DROP”, it turned out that many clients will just immediately retry, causing up to several thousands of queries per second. This does not happen in“DROP”mode.
Default value: “ALLOW”
TOMLCLIEnvironment (Docker Compose)
[dns]
replyWhenBusy = "ALLOW"
sudo pihole-FTL --config dns.replyWhenBusy "ALLOW"
environment:
FTLCONF_dns_replyWhenBusy: 'ALLOW'
blockTTL
FTL's internal TTL to be handed out for blocked queries in seconds. This settings allows users to select a value different from the dnsmasq config option local-ttl. This is useful in context of locally used hostnames that are known to stay constant over long times (printers, etc.).
Note that large values may render whitelisting ineffective due to client-side caching of blocked queries.
Allowed values are: A positive integer value in seconds
Default value: 2
TOMLCLIEnvironment (Docker Compose)
[dns]
blockTTL = 2
sudo pihole-FTL --config dns.blockTTL 2
environment:
FTLCONF_dns_blockTTL: 2
hosts
Array of custom DNS records
Example: [ “127.0.0.1 mylocal”, “192.168.0.1 therouter” ]
Allowed values are:
Array of custom DNS records each one in HOSTS form: “IP HOSTNAME [HOSTNAME ...]”
Default value: []
TOMLCLIEnvironment (Docker Compose)
[dns]
hosts = [ "127.0.0.1 mylocal", "192.168.0.1 therouter" ]
sudo pihole-FTL --config dns.hosts '[ "127.0.0.1 mylocal", "192.168.0.1 therouter" ]'
environment:
FTLCONF_dns_hosts: |-
127.0.0.1 mylocal
192.168.0.1 therouter
domainNeeded
If set, queries for plain names, without dots or domain parts, are never forwarded to upstream nameservers
Allowed values are: true or false
Default value: false
TOMLCLIEnvironment (Docker Compose)
[dns]
domainNeeded = false
sudo pihole-FTL --config dns.domainNeeded false
environment:
FTLCONF_dns_domainNeeded: false
expandHosts
If set, the domain is added to simple names (without a period) in /etc/hosts in the same way as for DHCP-derived names
Allowed values are: true or false
Default value: false
TOMLCLIEnvironment (Docker Compose)
[dns]
expandHosts = false
sudo pihole-FTL --config dns.expandHosts false
environment:
FTLCONF_dns_expandHosts: false
bogusPriv
Should all reverse lookups for private IP ranges (i.e., 192.168.x.y, etc) which are
not found in /etc/hosts or the DHCP leases file be answered with “no such domain”
rather than being forwarded upstream?
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[dns]
bogusPriv = true
sudo pihole-FTL --config dns.bogusPriv true
environment:
FTLCONF_dns_bogusPriv: true
dnssec
Validate DNS replies using DNSSEC?
Allowed values are: true or false
Default value: false
TOMLCLIEnvironment (Docker Compose)
[dns]
dnssec = false
sudo pihole-FTL --config dns.dnssec false
environment:
FTLCONF_dns_dnssec: false
interface
Interface to use for DNS (see also dns.listeningMode) and DHCP (if enabled). Leave empty for auto-detection.
Allowed values are: a valid interface name
Default value: “”
TOMLCLIEnvironment (Docker Compose)
[dns]
interface = ""
sudo pihole-FTL --config dns.interface ""
environment:
FTLCONF_dns_interface: ''
hostRecord
Add an A, AAAA and PTR record to the DNS. This adds a singular name to the DNS with associated IPv4 (A) and IPv6 (AAAA) records
Example: “laptop,laptop.lan,192.168.0.1,1234::100”
Allowed values are:
A string in the format
“<name>[,<name>....],[<IPv4-address>],[<IPv6-address>][,<TTL>]”
Default value: “”
TOMLCLIEnvironment (Docker Compose)
[dns]
hostRecord = "laptop,laptop.lan,192.168.0.1,1234::100"
sudo pihole-FTL --config dns.hostRecord "laptop,laptop.lan,192.168.0.1,1234::100"
environment:
FTLCONF_dns_hostRecord: 'laptop,laptop.lan,192.168.0.1,1234::100'
listeningMode
Pi-hole interface listening modes
Allowed values are:
“LOCAL”Allow only local requests. This setting accepts DNS queries only from hosts whose address is on a local subnet, i.e., a subnet for which an interface exists on the server. It is intended to be set as a default on installation, to allow unconfigured installations to be useful but also safe from being used for DNS amplification attacks if (accidentally) running public.“SINGLE”Permit all origins, accept only on the specified interface. Respond only to queries arriving on the specified interface. The loopback (lo) interface is automatically added to the list of interfaces to use when this option is used. Make sure your Pi-hole is properly firewalled!“BIND”By default, FTL binds the wildcard address. If this is not what you want, you can use this option as it forces FTL to really bind only the interfaces it is listening on. Note that this may result in issues when the interface may go down (cable unplugged, etc.). About the only time when this is useful is when running another nameserver on the same port on the same machine. This may also happen if you run a virtualization API such as libvirt. When this option is used, IP alias interface labels (e.g. enp2s0:0) are checked rather than interface names.“ALL”Permit all origins, accept on all interfaces. Make sure your Pi-hole is properly firewalled! This truly allows any traffic to be replied to and is a dangerous thing to do as your Pi-hole could become an open resolver. You should always ask yourself if the first option doesn't work for you as well.“NONE”Do not add any configuration concerning the listening mode to the dnsmasq configuration file. This is useful if you want to manually configure the listening mode in auxiliary configuration files. This option is really meant for advanced users only, support for this option may be limited.
Default value: “LOCAL”
TOMLCLIEnvironment (Docker Compose)
[dns]
listeningMode = "LOCAL"
sudo pihole-FTL --config dns.listeningMode "LOCAL"
environment:
FTLCONF_dns_listeningMode: 'LOCAL'
queryLogging
Log DNS queries and replies to pihole.log
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[dns]
queryLogging = true
sudo pihole-FTL --config dns.queryLogging true
environment:
FTLCONF_dns_queryLogging: true
cnameRecords
List of CNAME records which indicate that <cname> is really <target>. If the <TTL> is
given, it overwrites the value of local-ttl
Allowed values are:
Array of CNAMEs, each one in the following form: “<cname>,<target>[,<TTL>]”
Default value: []
TOMLCLIEnvironment (Docker Compose)
[dns]
cnameRecords = []
sudo pihole-FTL --config dns.cnameRecords '[]'
environment:
FTLCONF_dns_cnameRecords: []
port
Port used by the DNS server
Allowed values are: Any available valid (1 - 65535) port number
Default value: 53
TOMLCLIEnvironment (Docker Compose)
[dns]
port = 53
sudo pihole-FTL --config dns.port 53
environment:
FTLCONF_dns_port: 53
localise
Enable/Disable the localise-queries option of dnsmasq. When this setting is disabled dnsmasq will return all possible values for local DNS Records. Enabled by default
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[dns]
localise = true
sudo pihole-FTL --config dns.localise true
environment:
FTLCONF_dns_localise: true
revServers
Reverse server (formerly called “conditional forwarding”)
If not configured as your DHCP server, Pi-hole typically won't be able to determine the names of devices on your local network. As a result, tables such as Top Clients will only show IP addresses.
One solution for this is to configure Pi-hole to forward these requests to your DHCP server (most likely your router), but only for devices on your home network. To configure this we will need to know the IP address of your DHCP server and which addresses belong to your local network.
Example: [ “true,192.168.0.0/24,192.168.0.1,fritz.box” ]
Allowed values are: Array of reverse servers each one in the following form:
“<enabled>,<ip-address>[/<prefix-len>],<server>[#<port>][,<domain>]”
Explanation of individual components:
“<enabled>”: either“true”or“false”“<ip-address>[/<prefix-len>]”: Address range for the reverse server feature in CIDR notation. If the prefix length is omitted, either 32 (IPv4) or 128 (IPv6) are substituted (exact address match). This is almost certainly not what you want here. Example:“192.168.0.0/24”for the range 192.168.0.1 - 192.168.0.255“<server>[#<port>]”: Target server to be used for the reverse server feature Example:“192.168.0.1#53”“<domain>”: Domain used for the reverse server feature (e.g.,“fritz.box”) Example:“fritz.box”
Default value: []
TOMLCLIEnvironment (Docker Compose)
[dns]
revServers = [ "true,192.168.0.0/24,192.168.0.1,fritz.box" ]
sudo pihole-FTL --config dns.revServers '[ "true,192.168.0.0/24,192.168.0.1,fritz.box" ]'
environment:
FTLCONF_dns_revServers: |-
true,192.168.0.0/24,192.168.0.1,fritz.box
[dns.domain]
name
The DNS domain used by your Pi-hole.
This DNS domain is purely local. FTL may answer queries from its local cache and configuration but never forwards any requests upstream unless you have configured a dns.revServer exactly for this domain. In the latter case, all queries for this domain are sent exclusively to this server (including reverse lookups).
For DHCP, this has two effects; firstly it causes the DHCP server to return the
domain to any hosts which request it, and secondly it sets the domain which it is
legal for DHCP-configured hosts to claim. The intention is to constrain hostnames so
that an untrusted host on the LAN cannot advertise its name via DHCP as e.g.
“google.com” and capture traffic not meant for it. If no domain suffix is specified,
then any DHCP hostname with a domain part (ie with a period) will be disallowed and
logged. If a domain is specified, then hostnames with a domain part are allowed,
provided the domain part matches the suffix. In addition, when a suffix is set then
hostnames without a domain part have the suffix added as an optional domain part.
For instance, we can set domain=mylab.com and have a machine whose DHCP hostname is
“laptop”. The IP address for that machine is available both as “laptop” and
“laptop.mylab.com”.
You can disable setting a domain by setting this option to an empty string.
Allowed values are: Any valid domain
Default value: “lan”
TOMLCLIEnvironment (Docker Compose)
[dns.domain]
name = "lan"
sudo pihole-FTL --config dns.domain.name "lan"
environment:
FTLCONF_dns_domain_name: 'lan'
local
If set, the domain configured by dns.domain.name is considered local and queries for this domain are never forwarded upstream unless a dns.revServer is configured for this domain.
If unset, queries for this domain are forwarded upstream to (possibly public) server which is probably not what you want unless you have added extra configuration for this domain or your upstream servers are able to handle local domains (e.g., router).
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[dns.domain]
local = true
sudo pihole-FTL --config dns.domain.local true
environment:
FTLCONF_dns_domain_local: true
[dns.cache]
size
Cache size of the DNS server. Note that expiring cache entries naturally make room for new insertions over time.
Setting this number too high will have an adverse effect as not only more space is needed, but also lookup speed gets degraded in the 10,000+ range. dnsmasq may issue a warning when you go beyond 10,000+ cache entries.
Allowed values are: A positive integer value
Default value: 10000
TOMLCLIEnvironment (Docker Compose)
[dns.cache]
size = 10000
sudo pihole-FTL --config dns.cache.size 10000
environment:
FTLCONF_dns_cache_size: 10000
optimizer
Query cache optimizer: If a DNS name exists in the cache, but its time-to-live has expired only recently, the data will be used anyway (a refreshing from upstream is triggered). This can improve DNS query delays especially over unreliable Internet connections. This feature comes at the expense of possibly sometimes returning out-of-date data and less efficient cache utilization, since old data cannot be flushed when its TTL expires, so the cache becomes mostly least-recently-used. To mitigate issues caused by massively outdated DNS replies, the maximum overaging of cached records is limited. We strongly recommend staying below 86400 (1 day) with this option.
Setting the TTL excess time to zero will serve stale cache data regardless how long it has expired. This is not recommended as it may lead to stale data being served for a long time. Setting this option to any negative value will disable this feature altogether.
Allowed values are: A positive integer value in seconds, or any negative to disable this feature
Default value: 3600
TOMLCLIEnvironment (Docker Compose)
[dns.cache]
optimizer = 3600
sudo pihole-FTL --config dns.cache.optimizer 3600
environment:
FTLCONF_dns_cache_optimizer: 3600
upstreamBlockedTTL
This setting allows you to specify the TTL used for queries blocked upstream. Once the TTL expires, the query will be forwarded to the upstream server again to check if the block is still valid. Defaults to caching for one day (86400 seconds). Setting this value to zero disables caching of queries blocked upstream.
Allowed values are: A positive integer value in seconds, or zero to disable caching of upstream blocked queries
Default value: 86400
TOMLCLIEnvironment (Docker Compose)
[dns.cache]
upstreamBlockedTTL = 86400
sudo pihole-FTL --config dns.cache.upstreamBlockedTTL 86400
environment:
FTLCONF_dns_cache_upstreamBlockedTTL: 86400
rrtype
This is dnsmasq's --cache-rr option, which allows you to define which DNS record types should be cached by PiHole. This option can take a comma-separated list of RR-types as input. The default value ANY caches all record types.
Allowed values are:
Valid DNS record types in the following form: <rrtype>``[,<rrtype>...]
Default value: “ANY”
TOMLCLIEnvironment (Docker Compose)
[dns.cache]
rrtype = "ANY"
sudo pihole-FTL --config dns.cache.rrtype "ANY"
environment:
FTLCONF_dns_cache_rrtype: 'ANY'
[dns.blocking]
active
Should FTL block queries?
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[dns.blocking]
active = true
sudo pihole-FTL --config dns.blocking.active true
environment:
FTLCONF_dns_blocking_active: true
mode
How should FTL reply to blocked queries?
Allowed values are:
“NULL”In NULL mode, which is both the default and recommended mode for Pi-hole FTLDNS, blocked queries will be answered with the“unspecified address”(0.0.0.0 or ::). The“unspecified address”is a reserved IP address specified by RFC 3513 - Internet Protocol Version 6 (IPv6) Addressing Architecture, section 2.5.2.“IP_NODATA_AAAA”In IP-NODATA-AAAA mode, blocked queries will be answered with the local IPv4 addresses of your Pi-hole. Blocked AAAA queries will be answered with NODATA-IPV6 and clients will only try to reach your Pi-hole over its static IPv4 address.“IP”In IP mode, blocked queries will be answered with the local IP addresses of your Pi-hole.“NX”In NXDOMAIN mode, blocked queries will be answered with an empty response (i.e., there won't be an answer section) and status NXDOMAIN. A NXDOMAIN response should indicate that there is no such domain to the client making the query.“NODATA”In NODATA mode, blocked queries will be answered with an empty response (no answer section) and status NODATA. A NODATA response indicates that the domain exists, but there is no record for the requested query type.
Default value: “NULL”
TOMLCLIEnvironment (Docker Compose)
[dns.blocking]
mode = "NULL"
sudo pihole-FTL --config dns.blocking.mode "NULL"
environment:
FTLCONF_dns_blocking_mode: 'NULL'
edns
Should FTL enrich blocked replies with EDNS0 information?
Allowed values are:
“NONE”In NONE mode, no additional EDNS information is added to blocked queries“CODE”In CODE mode, blocked queries will be enriched with EDNS info-code BLOCKED (15)“TEXT”In TEXT mode, blocked queries will be enriched with EDNS info-code BLOCKED (15) and a text message describing the reason for the block
Default value: “TEXT”
TOMLCLIEnvironment (Docker Compose)
[dns.blocking]
edns = "TEXT"
sudo pihole-FTL --config dns.blocking.edns "TEXT"
environment:
FTLCONF_dns_blocking_edns: 'TEXT'
[dns.specialDomains]
mozillaCanary
Should Pi-hole always reply with NXDOMAIN to A and AAAA queries of use-application-dns.net to disable Firefox automatic DNS-over-HTTP?
This follows the recommendation on <https://support.mozilla.org/en-US/kb/configuring-networks-disable-dns-over-https>
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[dns.specialDomains]
mozillaCanary = true
sudo pihole-FTL --config dns.specialDomains.mozillaCanary true
environment:
FTLCONF_dns_specialDomains_mozillaCanary: true
iCloudPrivateRelay
Should Pi-hole always reply with NXDOMAIN to A and AAAA queries of mask.icloud.com and mask-h2.icloud.com to disable Apple's iCloud Private Relay to prevent Apple devices from bypassing Pi-hole?
This follows the recommendation on <https://developer.apple.com/support/prepare-your-network-for-icloud-private-relay>
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[dns.specialDomains]
iCloudPrivateRelay = true
sudo pihole-FTL --config dns.specialDomains.iCloudPrivateRelay true
environment:
FTLCONF_dns_specialDomains_iCloudPrivateRelay: true
designatedResolver
Should Pi-hole always reply with NODATA to all queries to zone resolver.arpa to prevent devices from bypassing Pi-hole using Discovery of Designated Resolvers?
This is based on recommendations at the end of RFC 9462, section 4.
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[dns.specialDomains]
designatedResolver = true
sudo pihole-FTL --config dns.specialDomains.designatedResolver true
environment:
FTLCONF_dns_specialDomains_designatedResolver: true
[dns.reply.host]
force4
Use a specific IPv4 address for the Pi-hole host? By default, FTL determines the address of the interface a query arrived on and uses this address for replying to A queries with the most suitable address for the requesting client.
This setting can be used to use a fixed, rather than the dynamically obtained, address when Pi-hole responds to the following names:
“pi.hole”“<the device's hostname>”“pi.hole.<local domain>”“<the device's hostname>.<local domain>”
Allowed values are: true or false
Default value: false
TOMLCLIEnvironment (Docker Compose)
[dns.reply.host]
force4 = false
sudo pihole-FTL --config dns.reply.host.force4 false
environment:
FTLCONF_dns_reply_host_force4: false
IPv4
Custom IPv4 address for the Pi-hole host
Allowed values are:
A valid IPv4 address or empty string (“”)
Default value: “”
TOMLCLIEnvironment (Docker Compose)
[dns.reply.host]
IPv4 = ""
sudo pihole-FTL --config dns.reply.host.IPv4 ""
environment:
FTLCONF_dns_reply_host_IPv4: ''
force6
Use a specific IPv6 address for the Pi-hole host? See description for the IPv4 variant above for further details.
Allowed values are: true or false
Default value: false
TOMLCLIEnvironment (Docker Compose)
[dns.reply.host]
force6 = false
sudo pihole-FTL --config dns.reply.host.force6 false
environment:
FTLCONF_dns_reply_host_force6: false
IPv6
Custom IPv6 address for the Pi-hole host
Allowed values are:
A valid IPv6 address or empty string (“”)
Default value: “”
TOMLCLIEnvironment (Docker Compose)
[dns.reply.host]
IPv6 = ""
sudo pihole-FTL --config dns.reply.host.IPv6 ""
environment:
FTLCONF_dns_reply_host_IPv6: ''
[dns.reply.blocking]
force4
Use a specific IPv4 address in IP blocking mode? By default, FTL determines the address of the interface a query arrived on and uses this address for replying to A queries with the most suitable address for the requesting client.
This setting can be used to use a fixed, rather than the dynamically obtained, address when Pi-hole responds in the following cases:
- IP blocking mode is used and this query is to be blocked
- regular expressions with the ;reply=IP regex extension.
Allowed values are: true or false
Default value: false
TOMLCLIEnvironment (Docker Compose)
[dns.reply.blocking]
force4 = false
sudo pihole-FTL --config dns.reply.blocking.force4 false
environment:
FTLCONF_dns_reply_blocking_force4: false
IPv4
Custom IPv4 address for IP blocking mode
Allowed values are:
A valid IPv4 address or empty string (“”)
Default value: “”
TOMLCLIEnvironment (Docker Compose)
[dns.reply.blocking]
IPv4 = ""
sudo pihole-FTL --config dns.reply.blocking.IPv4 ""
environment:
FTLCONF_dns_reply_blocking_IPv4: ''
force6
Use a specific IPv6 address in IP blocking mode? See description for the IPv4 variant above for further details.
Allowed values are: true or false
Default value: false
TOMLCLIEnvironment (Docker Compose)
[dns.reply.blocking]
force6 = false
sudo pihole-FTL --config dns.reply.blocking.force6 false
environment:
FTLCONF_dns_reply_blocking_force6: false
IPv6
Custom IPv6 address for IP blocking mode
Allowed values are:
A valid IPv6 address or empty string (“”)
Default value: “”
TOMLCLIEnvironment (Docker Compose)
[dns.reply.blocking]
IPv6 = ""
sudo pihole-FTL --config dns.reply.blocking.IPv6 ""
environment:
FTLCONF_dns_reply_blocking_IPv6: ''
[dns.rateLimit]
count
Rate-limited queries are answered with a REFUSED reply and not further processed by FTL.
The default settings for FTL's rate-limiting are to permit no more than 1000 queries in 60 seconds. Both numbers can be customized independently. It is important to note that rate-limiting is happening on a per-client basis. Other clients can continue to use FTL while rate-limited clients are short-circuited at the same time.
For this setting, both numbers, the maximum number of queries within a given time, and the length of the time interval (seconds) have to be specified. For instance, if you want to set a rate limit of 1 query per hour, the option should look like dns.rateLimit.count=1 and dns.rateLimit.interval=3600. The time interval is relative to when FTL has finished starting (start of the daemon + possible delay by DELAY_STARTUP) then it will advance in steps of the rate-limiting interval. If a client reaches the maximum number of queries it will be blocked until the end of the current interval. This will be logged to /var/log/pihole/FTL.log, e.g. Rate-limiting 10.0.1.39 for at least 44 seconds. If the client continues to send queries while being blocked already and this number of queries during the blocking exceeds the limit the client will continue to be blocked until the end of the next interval (FTL.log will contain lines like Still rate-limiting 10.0.1.39 as it made additional 5007 queries). As soon as the client requests less than the set limit, it will be unblocked (Ending rate-limitation of 10.0.1.39).
Rate-limiting may be disabled altogether by setting both values to zero (this results in the same behavior as before FTL v5.7).
How many queries are permitted...
Allowed values are: A positive integer value
Default value: 1000
TOMLCLIEnvironment (Docker Compose)
[dns.rateLimit]
count = 1000
sudo pihole-FTL --config dns.rateLimit.count 1000
environment:
FTLCONF_dns_rateLimit_count: 1000
interval
... in the set interval before rate-limiting?
Allowed values are: A positive integer value in seconds
Default value: 60
TOMLCLIEnvironment (Docker Compose)
[dns.rateLimit]
interval = 60
sudo pihole-FTL --config dns.rateLimit.interval 60
environment:
FTLCONF_dns_rateLimit_interval: 60
[dhcp]
active
Is the embedded DHCP server enabled?
Allowed values are: true or false
Default value: false
TOMLCLIEnvironment (Docker Compose)
[dhcp]
active = false
sudo pihole-FTL --config dhcp.active false
environment:
FTLCONF_dhcp_active: false
start
Start address of the DHCP address pool
Example: “192.168.0.10”
Allowed values are:
A valid IPv4 address, or empty string (“”)
Default value: “”
TOMLCLIEnvironment (Docker Compose)
[dhcp]
start = "192.168.0.10"
sudo pihole-FTL --config dhcp.start "192.168.0.10"
environment:
FTLCONF_dhcp_start: '192.168.0.10'
end
End address of the DHCP address pool
Example: “192.168.0.250”
Allowed values are:
A valid IPv4 address, or empty string (“”)
Default value: “”
TOMLCLIEnvironment (Docker Compose)
[dhcp]
end = "192.168.0.250"
sudo pihole-FTL --config dhcp.end "192.168.0.250"
environment:
FTLCONF_dhcp_end: '192.168.0.250'
router
Address of the gateway to be used (typically the address of your router in a home installation)
Example: “192.168.0.1”
Allowed values are:
A valid IPv4 address, or empty string (“”)
Default value: “”
TOMLCLIEnvironment (Docker Compose)
[dhcp]
router = "192.168.0.1"
sudo pihole-FTL --config dhcp.router "192.168.0.1"
environment:
FTLCONF_dhcp_router: '192.168.0.1'
netmask
The netmask used by your Pi-hole. For directly connected networks (i.e., networks on
which the machine running Pi-hole has an interface) the netmask is optional and may
be set to an empty string (“”): it will then be determined from the interface
configuration itself.
For networks which receive DHCP service via a relay agent, we cannot determine the netmask itself, so it should explicitly be specified, otherwise Pi-hole guesses based on the class (A, B or C) of the network address.
Example: “255.255.255.0”
Allowed values are:
Any valid netmask, or an empty string (“”) for auto-discovery
Default value: “”
TOMLCLIEnvironment (Docker Compose)
[dhcp]
netmask = "255.255.255.0"
sudo pihole-FTL --config dhcp.netmask "255.255.255.0"
environment:
FTLCONF_dhcp_netmask: '255.255.255.0'
leaseTime
If the lease time is given, then leases will be given for that length of time. If not given, the default lease time is one hour for IPv4 and one day for IPv6.
Allowed values are:
The lease time can be in seconds, or minutes (e.g., “45m”) or hours (e.g., “1h”)
or days (like “2d”) or even weeks (“1w”). You may also use “infinite” as string
but be aware of the drawbacks
Default value: “”
TOMLCLIEnvironment (Docker Compose)
[dhcp]
leaseTime = ""
sudo pihole-FTL --config dhcp.leaseTime ""
environment:
FTLCONF_dhcp_leaseTime: ''
ipv6
Should Pi-hole make an attempt to also satisfy IPv6 address requests (be aware that IPv6 works a whole lot different than IPv4)
Allowed values are: true or false
Default value: false
TOMLCLIEnvironment (Docker Compose)
[dhcp]
ipv6 = false
sudo pihole-FTL --config dhcp.ipv6 false
environment:
FTLCONF_dhcp_ipv6: false
rapidCommit
Enable DHCPv4 Rapid Commit Option specified in RFC 4039. Should only be enabled if either the server is the only server for the subnet to avoid conflicts
Allowed values are: true or false
Default value: false
TOMLCLIEnvironment (Docker Compose)
[dhcp]
rapidCommit = false
sudo pihole-FTL --config dhcp.rapidCommit false
environment:
FTLCONF_dhcp_rapidCommit: false
multiDNS
Advertise DNS server multiple times to clients. Some devices will add their own proprietary DNS servers to the list of DNS servers, which can cause issues with Pi-hole. This option will advertise the Pi-hole DNS server multiple times to clients, which should prevent this from happening.
Allowed values are: true or false
Default value: false
TOMLCLIEnvironment (Docker Compose)
[dhcp]
multiDNS = false
sudo pihole-FTL --config dhcp.multiDNS false
environment:
FTLCONF_dhcp_multiDNS: false
logging
Enable logging for DHCP. This will log all relevant DHCP-related activity, including, e.g., all the options sent to DHCP clients and the tags used to determine them (if any). This can be useful for debugging DHCP issues. The generated output is saved to the file specified by files.log.dnsmasq below.
Allowed values are: true or false
Default value: false
TOMLCLIEnvironment (Docker Compose)
[dhcp]
logging = false
sudo pihole-FTL --config dhcp.logging false
environment:
FTLCONF_dhcp_logging: false
ignoreUnknownClients
Ignore unknown DHCP clients. If this option is set, Pi-hole ignores all clients which are not explicitly configured through dhcp.hosts. This can be useful to prevent unauthorized clients from getting an IP address from the DHCP server.
It should be noted that this option is not a security feature, as clients can still assign themselves an IP address and use the network. It is merely a convenience feature to prevent unknown clients from getting a valid IP configuration assigned automatically.
Note that you will need to configure new clients manually in dhcp.hosts before they can use the network when this feature is enabled.
Allowed values are: true or false
Default value: false
TOMLCLIEnvironment (Docker Compose)
[dhcp]
ignoreUnknownClients = false
sudo pihole-FTL --config dhcp.ignoreUnknownClients false
environment:
FTLCONF_dhcp_ignoreUnknownClients: false
hosts
Per host parameters for the DHCP server. This allows a machine with a particular hardware address to be always allocated the same hostname, IP address and lease time or to specify static DHCP leases
Example: [ “00:20:e0:3b:13:af,192.168.0.123,laptop,24h”,
“00:20:e0:ab:cd:ef,192.168.0.124,desktop,24h”]
Allowed values are:
Array of static leases each one in the following form:
“[<hwaddr>][,id:<client_id>|*][,set:<tag>][,tag:<tag>][,<ipaddr>][,<hostname>][,<lease_time>][,ignore]”
Default value: []
TOMLCLIEnvironment (Docker Compose)
[dhcp]
hosts = [ "00:20:e0:3b:13:af,192.168.0.123,laptop,24h",
"00:20:e0:ab:cd:ef,192.168.0.124,desktop,24h"]
sudo pihole-FTL --config dhcp.hosts '["00:20:e0:3b:13:af,192.168.0.123,laptop,24h","00:20:e0:ab:cd:ef,192.168.0.124,desktop,24h"]'
environment:
FTLCONF_dhcp_hosts: |-
00:20:e0:3b:13:af,192.168.0.123,laptop,24h
00:20:e0:ab:cd:ef,192.168.0.124,desktop,24h
[ntp.ipv4]
active
Should FTL act as network time protocol (NTP) server (IPv4)?
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[ntp.ipv4]
active = true
sudo pihole-FTL --config ntp.ipv4.active true
environment:
FTLCONF_ntp_ipv4_active: true
address
IPv4 address to listen on for NTP requests
Allowed values are:
A valid IPv4 address, or empty string (“”). For wildcard (0.0.0.0)
Default value: “”
TOMLCLIEnvironment (Docker Compose)
[ntp.ipv4]
address = ""
sudo pihole-FTL --config ntp.ipv4.address ""
environment:
FTLCONF_ntp_ipv4_address: ''
[ntp.ipv6]
active
Should FTL act as network time protocol (NTP) server (IPv6)?
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[ntp.ipv6]
active = true
sudo pihole-FTL --config ntp.ipv6.active true
environment:
FTLCONF_ntp_ipv6_active: true
address
IPv6 address to listen on for NTP requests
Allowed values are:
A valid IPv6 address, or empty string (“”). For wildcard (::)
Default value: “”
TOMLCLIEnvironment (Docker Compose)
[ntp.ipv6]
address = ""
sudo pihole-FTL --config ntp.ipv6.address ""
environment:
FTLCONF_ntp_ipv6_address: ''
[ntp.sync]
active
Should FTL try to synchronize the system time with an upstream NTP server?
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[ntp.sync]
active = true
sudo pihole-FTL --config ntp.sync.active true
environment:
FTLCONF_ntp_sync_active: true
server
NTP upstream server to sync with, e.g., “pool.ntp.org”. Note that the NTP server
should be located as close as possible to you in order to minimize the time offset
possibly introduced by different routing paths.
Allowed values are: A valid NTP upstream server
Default value: “pool.ntp.org”
TOMLCLIEnvironment (Docker Compose)
[ntp.sync]
server = "pool.ntp.org"
sudo pihole-FTL --config ntp.sync.server "pool.ntp.org"
environment:
FTLCONF_ntp_sync_server: 'pool.ntp.org'
interval
Interval in seconds between successive synchronization attempts with the NTP server
Allowed values are: A positive integer value in seconds
Default value: 3600
TOMLCLIEnvironment (Docker Compose)
[ntp.sync]
interval = 3600
sudo pihole-FTL --config ntp.sync.interval 3600
environment:
FTLCONF_ntp_sync_interval: 3600
count
Number of NTP syncs to perform and average before updating the system time
Allowed values are: A positive integer value
Default value: 8
TOMLCLIEnvironment (Docker Compose)
[ntp.sync]
count = 8
sudo pihole-FTL --config ntp.sync.count 8
environment:
FTLCONF_ntp_sync_count: 8
[ntp.sync.rtc]
set
Should FTL update a real-time clock (RTC) if available?
Allowed values are: true or false
Default value: false
TOMLCLIEnvironment (Docker Compose)
[ntp.sync.rtc]
set = false
sudo pihole-FTL --config ntp.sync.rtc.set false
environment:
FTLCONF_ntp_sync_rtc_set: false
device
Path to the RTC device to update.
Example: “/dev/rtc0”
Allowed values are:
A valid RTC device path, or empty string (“”) for auto-discovery
Default value: “”
TOMLCLIEnvironment (Docker Compose)
[ntp.sync.rtc]
device = "/dev/rtc0"
sudo pihole-FTL --config ntp.sync.rtc.device "/dev/rtc0"
environment:
FTLCONF_ntp_sync_rtc_device: '/dev/rtc0'
utc
Should the RTC be set to UTC?
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[ntp.sync.rtc]
utc = true
sudo pihole-FTL --config ntp.sync.rtc.utc true
environment:
FTLCONF_ntp_sync_rtc_utc: true
[resolver]
resolveIPv4
Should FTL try to resolve IPv4 addresses to hostnames?
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[resolver]
resolveIPv4 = true
sudo pihole-FTL --config resolver.resolveIPv4 true
environment:
FTLCONF_resolver_resolveIPv4: true
resolveIPv6
Should FTL try to resolve IPv6 addresses to hostnames?
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[resolver]
resolveIPv6 = true
sudo pihole-FTL --config resolver.resolveIPv6 true
environment:
FTLCONF_resolver_resolveIPv6: true
macNames
Control whether FTL should attempt to obtain client names from the network table by MAC address.
This can provide hostnames for devices that do not have a hostname or have multiple IP addresses (e.g. IPv4 and IPv6). However, MAC-derived names can be ambiguous (e.g., when a MAC appears for multiple IPs due to a router/NAT or MAC reuse), which may lead to incorrect hostnames being shown. Disabling this option can prevent such issues but may lead to more clients without hostnames.
Allowed values are: true or false
Default value: true
TOMLCLIEnvironment (Docker Compose)
[resolver]
macNames = true
sudo pihole-FTL --config resolver.macNames true
environment:
FTLCONF_resolver_macNames: true
`n
(本文超出站点单文档体积上限,已截断)
