DNS Manager is a custom DNS management system built on top of CoreDNS. It allows users to manage their own DNS blocking rules through a simple web interface.
- User-specific DNS blocking rules
- Web interface for managing blocking rules
- DNS-over-HTTPS (DoH) support
- Subdomain blocking
- Low-latency updates to blocking rules
- CoreDNS Server: A customized CoreDNS server with our custom plugin.
- Custom CoreDNS Plugin: Handles user-specific DNS rules and DoH requests.
- Web Frontend: A SvelteKit application for managing blocking rules.
- PostgreSQL Database: Stores user information and blocking rules.
- Go 1.16 or later
- Node.js and npm
- PostgreSQL
- CoreDNS source code
- Set up the PostgreSQL database (see
setup_and_run.md
for details). - Build the custom CoreDNS server with our plugin.
- Set up and run the SvelteKit frontend application.
For detailed setup instructions, please refer to setup_and_run.md
.
- Users set their DNS server to the address of your CoreDNS server.
- Users access the web interface to manage their blocking rules.
- The CoreDNS server applies user-specific rules to DNS queries.
- The custom CoreDNS plugin is located in
plugin/custom_user_plugin/
. - The SvelteKit frontend is in the
dns-manager-frontend/
directory.
- DNS caching can delay the effect of newly added blocking rules.
- Implement more aggressive caching mitigation strategies.
- Add user authentication for the web interface.
- Expand blocking capabilities (e.g., time-based rules, category-based blocking).
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.