mirror of
https://github.com/Ghibranalj/nomen.git
synced 2026-03-31 16:40:07 +07:00
No description
- Go 91.3%
- Shell 5.9%
- Dockerfile 2.8%
| .dockerignore | ||
| .gitignore | ||
| config.go | ||
| dns.go | ||
| docker-compose.dev.yml | ||
| docker-compose.yaml | ||
| Dockerfile | ||
| doh.go | ||
| doh.sh | ||
| fetch-and-cache.go | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| README.md | ||
| scraper.go | ||
Nomen
Local DNS server that resolves hostnames from Mikrotik DHCP leases.
Nomen is Latin for "name" — fitting for a DNS server that gives names to your local devices.
Features
- Scrapes DHCP leases from Mikrotik routers via RouterOS API
- Caches records in Redis with configurable TTL
- Falls back to DNS-over-HTTPS (Cloudflare) for external queries
- Supports custom TLDs for local domains
- Multiple Mikrotik routers supported
Configuration
Edit config.yaml:
Mikrotik:
- IP: "10.0.64.1"
Port: 8728
User: "admin"
Password: "password"
TLD: "alsut" # Leave empty for no TLD
DohServer: "https://1.1.1.1/dns-query"
RedisURL: "localhost:6379"
Port: 53
Proto: "udp"
ScrapeIntervalMinutes: 5
DnsTTLMinutes: 10
Running
Start Redis:
docker compose up -d
Run the server:
go run .
Testing
Query your DNS server:
dig @localhost -p 53 creeprair.alsut
Requirements
- Go 1.25+
- Redis
- Mikrotik router with API access