Technical Features of adam:ONE (v4) anmuscle

This article covers the technical features of the multi-platform binary anmuscle, version 4.5.3 and up.

adam:ONE is software that runs on gateways, and in some instances as standalone. It features a web server as well as a fully-functional forwarding DNS server, designed for use on internal networks. It also interacts directly with the host’s firewall environment for the purposes of DTTS (Don’t Talk To Strangers) as a way of making DNS filtering leak-proof.

usage = ./adamnetmuscle [options]

 
–acme-account-private-key-file
     the private key file (in PEM format) registered with the ACME service
     provider

–acme-external-renewal
     an external service is responsible for renewing the certificate

–acme-service-fqdn
     the ACME service provider FQDN

–acme-service-port
     the ACME service provider port (default: 443)

–acme-version
     the ACME client version

–admin-pk
     base64 encoded public key for access to admin REST API

–append-domain-name-to-arpa-answers
     ARPA answers will be suffixed by a domain name

–authenticated-clients
     semi-colon separated list of client-id,client-pk

–block-private
     block private IP addresses in DNS responses as per RFC1918

–box-id
     override automatic box id detection

–brain-address
     override controller ipaddress@port

–brain-fqdn, -b
     override controller FQDN

–brain-messages-file
     file to store brain messages for when it cannot connect to the controller

–brain-messages-max-filesize
     maximum brain messages file size in bytes (default: 10485760, set to 0 to
     disable this limit)

–brain-port
     override controller port

–brain-read-timeout
     override default brain read timeout (in seconds)

–cerebrum-address
     override cerebrum ipaddress@port

–cerebrum-fqdn
     override controller FQDN

–cerebrum-port
     override cerebrum port

–cname-checking
     specify a way to check cnames against lists: none, all, allowlistonly,
     blocklistonly. This overrides a controller setting.

–config-file, -c
     file full of config options

–critical-fqdns
     comma separated list of critical fqdns which should always be accessible

–disable-arp
     disable ARP discovery (default: false)

–disable-autorestart
     disable automatic restart on an irrecoverable error

–disable-brain
     disable brain service

–disable-captive-portal-handling
     disable responding to some captive portal HTTP requests

–disable-cerebrum
     disable cerebrum service

–disable-cname-flattening
     disable CNAME flattening

–disable-default-upstream
     disable using of default upstream until profiles are retrieved

–disable-environmental-features
     disable all features affecting operating system

–disable-nd
     disable ND discovery (default: false)

–disable-netbios
     disable Netbios discovery (default: false)

–disable-packet-monitor
     disable packet monitoring

–disable-private-subnets-blocking
     disable blocking of private or non-routable IP addresses

–disable-reporter
     DEPRECATED: disable reporter service

–disable-sd
     disable SD (MDNS) discovery (default: false)

–disable-strict-cname-flattening
     DEPRECATED: not used at all

–disable-test-resolution
     DEPRECATED: disable automatic DNS resolution of the test domain

–dns-a-ttl
     TTL of A/AAAA records for blocked answers

–dns-blocked-record-types
     block resolution of enumerated record types (comma separated, uppercase
     string or numerical value)

–dns-cache-size, -d
     number of unique DNS queries to cache

–dns-default-blocks
     semi-colon separated list of default DNS blocks in the format
     [name,type,additional_data] where type can be subnet of nxdomain

–dns-default-endpoints
     semi-colon separated list of default DNS endpoints in the format
     [%doh_fqdn@port,]ip1@port1+ip2@port2,block_name

–dns-default-operation-mode
     optimized (default) or harmonized

–dns-enable-port-obfuscation
     obfuscate ports for outgoing DNS requests

–dns-history-size
     DNS history buffer size for data logger

–dns-listen-port
     default listen port for DNS server

–dns-listener
     comma separated list of either interface names or ipaddress@port/prefix
     groups (separated by a plus sign) for DNS server

–dns-max-fastest-solo-uses
     maximum number of times a fastest target will be chosen before others get
     re-queried (default: 10)

–dns-max-recursions
     maximum number of recursions (default: 32)

–dns-minimum-reduced-timeout
     lowest reduced timeout in milliseconds (default: 200)

–dns-query-limit-burst-factor
     rate multiple for burst limiting (a measure of how many packets are allowed
     hrough before limiting kicks in; default: 10)

–dns-query-limit-forced
     force query limit on all entities regardless their configuration

–dns-query-limit-max-rate
     maximum number of queries per second (upper bound guarantee on how quickly
     can packets arrive)

–dns-query-limit-rate
     average number of queries per second

–dns-reduced-timeout
     percentage (0-99) to which to reduce a timeout of eachconsecutively dead
     upstream endpoint (default: 50)

–dns-soa-ttl
     TTL of SOA records

–dns-upstream-dead-threshold
     a threshold of how many consecutively dead upstream endpoints are allowed
     before they get reported

–dns-upstream-timeout
     imeout in milliseconds for upstream DNS requests

–dns64-subnets
     comma separated list of DNS64 subnets for (un)mapping of IPv4 addresses

–dnssec-request
     request DNSSEC

–domain-name
     domain name for the local network

–dot-listen-port
     default listen port for DoT server

–dot-listener
     comma separated list of either interface names or ipaddress@port/prefix
     groups (separated by a plus sign) for DoT server

–dtts-access-anchor-name
     DEPRECATED: anchor name for DTTS WAN access rules

–dtts-any-source
     any source IP address will match for a given destination

–dtts-base-anchor-name
     base anchor name for all DTTS related rules

–dtts-bypass-anchor-name
     DEPRECATED: anchor name for DTTS permanent bypass rules

–dtts-check-period
     poll period in seconds to ensure critical DTTS firewall entries are in place

–dtts-default-block-traffic
     block all traffic until authoritative information is received

–dtts-dns-response-delay
     delay in milliseconds before responding to DNS request after hole has been
     created

–dtts-enabler-lookup-type
     enabler lookup type for DTTS (0…slow, 1…medium, 2…fast, default: 0)

–dtts-enablers-anchor-name
     anchor name for where DTTS enablers are stored

–dtts-engine
     engine to power DTTS (default: pftables)

–dtts-extra-ttl
     extra DTTS hole TTL (as percentage by default)

–dtts-extra-ttl-absolute
     makes extra DTTS hole TTL value absolute in seconds

–dtts-keep-holes-around
     number of seconds to keep DTTS holes around after they expire (holes stay
     closed)

–dtts-max-ttl
     maximum DNS record TTL in seconds for DTTS purposes

–dtts-min-ttl
     minimum DNS record TTL in seconds for DTTS purposes

–dtts-pseudo-external-subnets
     comma separated list of subnets to be treated as external by DTTS

–dtts-route-advice
     comma separated list of a route failover information to be appended to every
     hole rule in the format: <ip_address>@<interface_name>,…

–dtts-rules-anchor-name
     anchor name for where DTTS rules are stored

–dtts-tag-name
     ag name to append to DTTS rules

–edns0-subnet-accept
     accept EDNS0 subnet information

–edns0-subnet-append
     append EDNS0 subnet information to DNS requests

–enable-dns64
     enable DNS64 handling of DNS requests/responses

–enable-tuntap
     enable automatic creation of tuntap interfaces for non-existent
     redirect-local (HTTP server) and listen-address (DNS server) addresses

–files-to-monitor
     semi-colon separated list of paths and parsing engines in the format
     [path,engine]. Available options:
     dhcpd_leases,dnsmasq_leases,hosts,resolv,unbound_leases,unbound_entries

–help, -h
     print help message

–http-fallback-always-match
     match against fallback interface even if IP address does not fall under any
     of its subnets (default: true)

–http-fallback-interface
     fallback interface for providing block page IP addresses

–http-listen-port
     listen port for HTTP server (default: 80)

–http-listener
     comma separated list of either interface names or ipaddress@port/prefix
     groups (separated by a plus sign) for HTTP server

–http-proxy-subnet
     subnet range for HTTP proxy (10.0.0.0/24)

–http-proxy-tunnel-lifetime
     lifetime of HTTP proxy tunnel in seconds

–https-listen-port
     listen port for HTTPS server (default: 443)

–https-listener
     DEPRECATED: use http-listener instead

–in-band-mac
     pair this MAC address with IP address in DNS resolution for the purpose of
     device tracking

–ip4-purge-lifetime
     how many seconds are IPv4 addresses attached to a device considered active

–ip4-purge-recent-keep
     number of most recently active IPv4 addresses to exclude from purging

–ip6-purge-lifetime
     how many seconds are IPv6 addresses attached to a device considered active

–ip6-purge-recent-keep
     number of most recently active IPv6 addresses to exclude from purging

–lan-interfaces
     comma separated list of interfaces used by neighbour discovery

–lock-file
     one instance check lock file name

–log-file
     logging sink file name

–log-files-rotate
     number of log files to rotate each with same max file size

–log-level
     available logging levels range from 0 to 6

–log-max-filesize
     maximum log file size in bytes

–mybox-redirect
     your router’s full URL redirect location (https://mybox.management:8080)

–netbios-listen-port
     public NETBIOS listening port

–netbios-reply-port
     NETBIOS broadcast reply-to port

–packet-always-monitor-subnets
     comma separated list of subnets to always packet monitor

–packet-monitor-buffer-size
     set the size of the zerocopy buffer in bytes

–packet-monitor-excluded-discovery-subnets
     comma separated list of subnets excluded from consideration for device
     discovery

–packet-monitor-history-size
     packet monitor history buffer size for reporting purposes

–packet-monitor-promiscuous
     set monitored interfaces to promiscuous mode

–packet-monitor-subnets
     comma separated list of extra LAN subnets for packet monitoring

–pid-file, -p
     file name to store a process id if running as a service

–prefer-ipv6
     prefer IPv6 in certain scenarios

–private-subnets
     comma separated list of private or non-routable subnets
     (10.0.0.0/8,::ffff:0:0/96)

–profile-id-doh-path-map
     comma separated list of profile ID to DoH path
     mappings(ID1:<doh_path1>,ID2:<doh_path2>,…)

–report-period
     send a packet or query report at regular intervals (in seconds, default: 15)

–report-when-history-full
     send a packet or query report when the history is full

–reporter-fqdn, -r
     DEPRECATED: override controller FQDN for reporting purposes

–run-as-user
     name of local user to drop privileges to

–service, -s
     run as a service in the background

–signature-pk-file
     file containing the signature public key

–signature-sk-file
     file containing the signature secret key

–ssl-ca-file
     file containing brain public key in PEM format

–ssl-cert-file
     file containing certificate for relevant SSL/TLS operations in PEM format

–ssl-dh-file
     file containing DH for relevant SSL/TLS operations in PEM format

–ssl-fqdn-file
     file containing fqdn for relevant SSL/TLS operations

–ssl-key-file
     file containing private key for relevant SSL/TLS operations in PEM format

–ssl-key-password-file
     file containing password for supplied private key for relevant SSL/TLS
     operations

–ssl-system-ca-file
     file containing system certificates in PEM format

–syslog-level
     available syslog levels range from 0 to 6

–tools-fqdns
     ools page FQDNs

–version, -v
     print version information