Dead simple wildcard DNS for any IP address.
[!NOTE] The project maintainer Roopinder Singh (1981–2024) have passed away. sslip.io could be considered a spirtual successor.
NIP.IO was powered by PowerDNS with a simple, custom PipeBackend: backend.py
Head to NIP.IO for more details. (now hosted by sslip.io)
NIP.IO is licensed under Apache 2.0, and was a free service ran by Exentrique Solutions.
While all configuration settings can be specified in a file called backend.conf, the following environment variables override those:
NIPIO_DOMAIN: NIP.IO main domain.
NIPIO_TTL: Default TTL for NIP.IO backend.
NIPIO_NONWILD_DEFAULT_IP: Default IP address for non-wildcard entries.
NIPIO_SOA_ID: SOA serial number.
NIPIO_SOA_HOSTMASTER: SOA hostmaster email address.
NIPIO_SOA_NS: SOA name server.
NIPIO_SOA_REFRESH: SOA refresh.
NIPIO_SOA_RETRY: SOA retry.
NIPIO_SOA_EXPIRY: SOA expiry.
NIPIO_SOA_MINIMUM_TTL: SOA minimum time-to-live (TTL).
NIPIO_NAMESERVERS: A space-separated list of domain=ip nameserver pairs. Example: ns1.nip.io=127.0.0.1 ns2.nip.io=127.0.0.1.
NIPIO_WHITELIST: A space-separated list of description=range pairs for whitelisted ranges in CIDR format.
An IP address must be in one of the whitelisted ranges for a response to be returned. Example: whitelist1=192.168.0.0/16 whitelist2=127.0.0.0/8.
NIPIO_BLACKLIST: A space-separated list of description=ip blacklisted pairs. Example: some_description=10.0.0.1 other_description=10.0.0.2.
NIPIO_CAA: A space-separated list of description=value pairs for CAA issue records returned for whitelisted IPs. Example: letsencrypt=letsencrypt.org.
This is useful if you're creating your own Dockerfile.
Some DNS resolvers, forwarders and routers have DNS rebinding protection which may result in failure to resolve local and private IP addresses. This service won't work in those situations. However, you may run a local nip.io instance in this case.
If you'd like to develop and hack with nip.io, then the easiest way is to install uv
and then run ./build.sh which invokes uv. ./build.sh will run linting and tests as well.
$ claude mcp add nip.io \
-- python -m otcore.mcp_server <graph>