Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SmartDNS

High Performance Recursive DNS Platform powered by Unbound and dnsdist

Developed and maintained by MyNOC.ID

Version Ubuntu Debian License Status


🌐 Documentation Language

🇮🇩 Bahasa Indonesia    |    🇬🇧 English


🇮🇩 Bahasa Indonesia

Tentang SmartDNS

SmartDNS adalah platform DNS Resolver otomatis berperforma tinggi yang dirancang untuk lingkungan:

  • ISP
  • Enterprise
  • VPS
  • Self-Hosted
  • Network Infrastructure

SmartDNS dibangun menggunakan Unbound sebagai recursive DNS resolver dan dnsdist sebagai DNS load balancer / frontend.

Installer secara otomatis mendeteksi hardware server, menghitung konfigurasi tuning yang sesuai, memasang recursive DNS resolver, mengaktifkan fitur keamanan dan blocklist, serta menyiapkan monitoring dan scheduler.

Mulai dari v1.0.0, SmartDNS juga memiliki sistem Telemetry dan Heartbeat untuk membantu monitoring instalasi dan versi software.


✨ Fitur

Smart Installer

  • One Command Installation
  • Automatic Hardware Detection
  • Smart CPU & RAM Tuning
  • Recursive DNS Resolver menggunakan Unbound
  • High Performance DNS Load Balancer menggunakan dnsdist
  • DNSSEC Validation
  • DNS Packet Cache
  • IPv4 & IPv6 Support
  • DNS Blocklist
  • Domain Whitelist
  • Domain Insecure Support
  • DNSDist Web Management
  • Automatic Blocklist Update
  • Automatic Health Check
  • Automatic Timezone Configuration
  • Automatic Hostname Configuration
  • Smart Scheduler menggunakan Cron
  • Interactive Installation Wizard

Monitoring

  • Automatic Heartbeat setiap 5 menit
  • Built-in Telemetry
  • Monitoring Dashboard
  • Node Inventory
  • Statistics Dashboard

🖥️ Operating System Support

SmartDNS v1.0.2 telah diuji pada:

Operating System Status
Ubuntu 22.04 LTS ✅ Supported
Ubuntu 24.04 LTS ✅ Supported
Debian 12 ✅ Supported

Ubuntu 24.04 LTS telah divalidasi melalui fresh installation pada v1.0.2.


📋 Minimum Requirements

Component Minimum
CPU 2 Core
RAM 2 GB
Storage 10 GB SSD
Network Public IPv4
Root Access Required

🚀 Recommended Requirements

Component Recommended
CPU 4 Core or Higher
RAM 4 GB or Higher
Storage 20 GB SSD
Network IPv4 + IPv6
OS Ubuntu 24.04 LTS / Ubuntu 22.04 LTS / Debian 12

📦 Installation

Clone repository:

git clone https://github.com/ichandkusuma/SmartDNS.git

Masuk ke directory:

cd SmartDNS

Jalankan installer:

bash install.sh

Installer akan melakukan:

  1. Detect operating system
  2. Detect CPU dan RAM
  3. Detect virtualization
  4. Detect network interface
  5. Detect Internet connectivity
  6. Calculate Smart Tuning
  7. Install required packages
  8. Configure Unbound
  9. Configure dnsdist
  10. Install DNS blocklist
  11. Configure scheduler
  12. Configure telemetry
  13. Validate configuration
  14. Restart services
  15. Run DNS health check

🔄 Updating SmartDNS

Pembaruan dan konfigurasi ulang:

cd SmartDNS
git pull
bash install.sh

Jika diminta untuk melakukan pembaruan paksa, gunakan perintah berikut.

cd SmartDNS
git fetch origin
git reset --hard origin/main
bash install.sh

🔄 Updating SmartDNS Patch

Untuk existing installation, update menggunakan:

cd SmartDNS
bash update.sh --patch

Existing installation akan mempertahankan:

  • UUID
  • Telemetry Data
  • Runtime Information
  • Existing Configuration
  • Scheduler

🧙 Installation Wizard

Installer secara otomatis mengatur:

  • Hostname
  • Timezone
  • CPU Threads
  • Cache Size
  • DNSSEC
  • IPv6
  • Packet Cache
  • DNSDist Web Password
  • DNSDist API Key
  • Recursive Port
  • Frontend Port
  • Spoof IPv4
  • Spoof IPv6
  • Resolver ACL
  • UUID
  • Heartbeat Registration

🌐 Default Service Ports

Service Port
DNS Resolver 53
Recursive Resolver 5300
DNSDist Web UI 8083

🛡️ DNS Features

  • DNSSEC Validation
  • Recursive Resolver
  • DNS Cache
  • IPv4 & IPv6 Support
  • DNS Blocklist
  • Domain Whitelist
  • Domain Insecure
  • DNSDist Web UI

🚫 DNS Blocklist

SmartDNS menyediakan DNS blocklist yang dapat diperbarui secara otomatis.

Blocklist akan:

  1. Download source
  2. Validate downloaded content
  3. Extract domain
  4. Normalize domain
  5. Remove duplicate entries
  6. Generate CDB database
  7. Reload dnsdist

Blocklist dapat diperbarui secara manual menggunakan:

bash data/update-blocklist.sh

Automatic update dijalankan menggunakan Cron Scheduler.


⏰ Automatic Scheduler

Task Schedule
Heartbeat Every 5 Minutes
Blocklist Update Daily

Jadwal update dibuat otomatis oleh installer dan dapat disesuaikan dengan environment masing-masing.


⚙️ Generated Automatically

Saat installation, SmartDNS secara otomatis menghasilkan:

  • UUID
  • DNSDist Secret Key
  • DNSDist API Key
  • DNSDist Web Password
  • Optimized Cache Size
  • Optimized Thread Count
  • Resolver ACL
  • Installation Metadata

📡 Telemetry

SmartDNS mengirimkan heartbeat secara otomatis setiap 5 menit.

Informasi yang dikumpulkan meliputi:

  • Version
  • UUID
  • Operating System
  • CPU
  • Memory
  • DNSSEC Status
  • IPv6 Status
  • Query Log Status
  • Smart Tuning
  • First Seen
  • Last Seen

SmartDNS tidak mengumpulkan:

  • DNS Queries
  • Customer Traffic
  • Resolver Cache
  • Personal Information

🔍 Useful Commands

Restart Services

systemctl restart unbound
systemctl restart dnsdist

Check Service Status

systemctl status unbound
systemctl status dnsdist

Test DNS

dig @127.0.0.1 google.com
dig @::1 google.com

Test Recursive Resolver

dig @127.0.0.1 -p 5300 google.com

Check Configuration

unbound-checkconf
dnsdist --check-config

Manual Heartbeat

/usr/local/bin/smartdns-heartbeat

View Installation Metadata

cat /var/lib/smartdns/install.json

View Installation Path

cat /var/lib/smartdns/install.env

📁 Project Structure

SmartDNS/
├── cache/
├── data/
├── docs/
│   └── images/
│       ├── banner.png
│       └── social-preview.png
├── engine/
├── lib/
├── output/
├── scripts/
├── templates/
├── VERSION
├── install.sh
├── update.sh
└── README.md

📜 Changelog

See CHANGELOG.md for version history and release notes.


📄 License

MIT License

Presented by MyNOC.ID

https://mynoc.id


⚠️ Disclaimer

SmartDNS is intended for:

  • Educational environments
  • Laboratory environments
  • Enterprise environments
  • ISP environments
  • Self-hosted DNS infrastructure

Always validate configurations in your own environment before deploying to production.


⭐ If SmartDNS helps your infrastructure, please consider giving this repository a Star.

Made with ❤️ in Indonesia by MyNOC.ID


🇬🇧 English

About SmartDNS

SmartDNS is a high-performance automated DNS Resolver platform designed for:

  • ISP
  • Enterprise
  • VPS
  • Self-Hosted
  • Network Infrastructure

SmartDNS is built around Unbound as the recursive DNS resolver and dnsdist as the DNS load balancer / frontend.

The installer automatically detects server hardware, calculates optimized tuning parameters, deploys the recursive DNS resolver, configures security and blocklist features, and prepares monitoring and scheduler services.

Starting from v1.0.0, SmartDNS also includes built-in Telemetry and Heartbeat monitoring to help manage installations and software versions.


✨ Features

Smart Installer

  • One Command Installation
  • Automatic Hardware Detection
  • Smart CPU & RAM Tuning
  • Recursive DNS Resolver using Unbound
  • High Performance DNS Load Balancer using dnsdist
  • DNSSEC Validation
  • DNS Packet Cache
  • IPv4 & IPv6 Support
  • DNS Blocklist
  • Domain Whitelist
  • Domain Insecure Support
  • DNSDist Web Management
  • Automatic Blocklist Update
  • Automatic Health Check
  • Automatic Timezone Configuration
  • Automatic Hostname Configuration
  • Smart Scheduler using Cron
  • Interactive Installation Wizard

Monitoring

  • Automatic Heartbeat every 5 minutes
  • Built-in Telemetry
  • Monitoring Dashboard
  • Node Inventory
  • Statistics Dashboard

🖥️ Operating System Support

SmartDNS v1.0.2 has been tested on:

Operating System Status
Ubuntu 22.04 LTS ✅ Supported
Ubuntu 24.04 LTS ✅ Supported
Debian 12 ✅ Supported

Ubuntu 24.04 LTS has been validated through a fresh installation on v1.0.2.


📋 Minimum Requirements

Component Minimum
CPU 2 Core
RAM 2 GB
Storage 10 GB SSD
Network Public IPv4
Root Access Required

🚀 Recommended Requirements

Component Recommended
CPU 4 Core or Higher
RAM 4 GB or Higher
Storage 20 GB SSD
Network IPv4 + IPv6
OS Ubuntu 24.04 LTS / Ubuntu 22.04 LTS / Debian 12

📦 Installation

Clone the repository:

git clone https://github.com/ichandkusuma/SmartDNS.git

Enter the directory:

cd SmartDNS

Run the installer:

bash install.sh

The installer will:

  1. Detect the operating system
  2. Detect CPU and RAM
  3. Detect virtualization
  4. Detect network interface
  5. Detect Internet connectivity
  6. Calculate Smart Tuning
  7. Install required packages
  8. Configure Unbound
  9. Configure dnsdist
  10. Install the DNS blocklist
  11. Configure scheduler
  12. Configure telemetry
  13. Validate configuration
  14. Restart services
  15. Run DNS health checks

🔄 Updating SmartDNS

Update and reconfiguration:

cd SmartDNS
git pull
bash install.sh

If prompted to perform a forced update, use the following command:

cd SmartDNS
git fetch origin
git reset --hard origin/main
bash install.sh

🔄 Updating SmartDNS Patch

For existing installations, update using:

cd SmartDNS
bash update.sh --patch

Existing installations will retain:

  • UUID
  • Telemetry Data
  • Runtime Information
  • Existing Configuration
  • Scheduler

🧙 Installation Wizard

The installer automatically configures:

  • Hostname
  • Timezone
  • CPU Threads
  • Cache Size
  • DNSSEC
  • IPv6
  • Packet Cache
  • DNSDist Web Password
  • DNSDist API Key
  • Recursive Port
  • Frontend Port
  • Spoof IPv4
  • Spoof IPv6
  • Resolver ACL
  • UUID
  • Heartbeat Registration

🌐 Default Service Ports

Service Port
DNS Resolver 53
Recursive Resolver 5300
DNSDist Web UI 8083

🛡️ DNS Features

  • DNSSEC Validation
  • Recursive Resolver
  • DNS Cache
  • IPv4 & IPv6 Support
  • DNS Blocklist
  • Domain Whitelist
  • Domain Insecure
  • DNSDist Web UI

🚫 DNS Blocklist

SmartDNS provides a DNS blocklist that can be updated automatically.

The blocklist update process:

  1. Download sources
  2. Validate downloaded content
  3. Extract domains
  4. Normalize domains
  5. Remove duplicate entries
  6. Generate the CDB database
  7. Reload dnsdist

The blocklist can also be updated manually:

bash data/update-blocklist.sh

Automatic updates are scheduled using Cron.


⏰ Automatic Scheduler

Task Schedule
Heartbeat Every 5 Minutes
Blocklist Update Daily

The scheduler is generated automatically during installation and can be customized for the target environment.


⚙️ Generated Automatically

During installation, SmartDNS automatically generates:

  • UUID
  • DNSDist Secret Key
  • DNSDist API Key
  • DNSDist Web Password
  • Optimized Cache Size
  • Optimized Thread Count
  • Resolver ACL
  • Installation Metadata

📡 Telemetry

SmartDNS automatically sends a heartbeat every 5 minutes.

Collected information includes:

  • Version
  • UUID
  • Operating System
  • CPU
  • Memory
  • DNSSEC Status
  • IPv6 Status
  • Query Log Status
  • Smart Tuning
  • First Seen
  • Last Seen

SmartDNS does not collect:

  • DNS Queries
  • Customer Traffic
  • Resolver Cache
  • Personal Information

🔍 Useful Commands

Restart Services

systemctl restart unbound
systemctl restart dnsdist

Check Service Status

systemctl status unbound
systemctl status dnsdist

Test DNS

dig @127.0.0.1 google.com
dig @::1 google.com

Test Recursive Resolver

dig @127.0.0.1 -p 5300 google.com

Check Configuration

unbound-checkconf
dnsdist --check-config

Manual Heartbeat

/usr/local/bin/smartdns-heartbeat

View Installation Metadata

cat /var/lib/smartdns/install.json

View Installation Path

cat /var/lib/smartdns/install.env

📁 Project Structure

SmartDNS/
├── cache/
├── data/
├── docs/
│   └── images/
│       ├── banner.png
│       └── social-preview.png
├── engine/
├── lib/
├── output/
├── scripts/
├── templates/
├── VERSION
├── install.sh
├── update.sh
└── README.md

📜 Changelog

See CHANGELOG.md for version history and release notes.


📄 License

MIT License

Presented by MyNOC.ID

https://mynoc.id


⚠️ Disclaimer

SmartDNS is intended for:

  • Educational environments
  • Laboratory environments
  • Enterprise environments
  • ISP environments
  • Self-hosted DNS infrastructure

Always validate configurations in your own environment before deploying to production.


⭐ If SmartDNS helps your infrastructure, please consider giving this repository a Star.

Made with ❤️ in Indonesia by MyNOC.ID

About

SmartDNS is a high-performance, automated DNS infrastructure platform for ISPs, enterprises, and self-hosted networks. Powered by Unbound & dnsdist, it combines intelligent auto-tuning, DNSSEC, caching, ACLs, IPv4/IPv6, TrustPositif blocklists, health monitoring, automated updates, telemetry, and lifecycle management. Built by MyNOC.ID.

Topics

Resources

Stars

10 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages