[System Development] Python-implemented Bind intelligent DNS Web management system, pythonbind
In the company's operation, DNS is still very important, not only does name resolution require DNS, but also some important services, such as server Load balancer and HTTP virtual hosts. Manual Bind management is risky. If an incorrect format is entered, the DNS service is paralyzed.
Previously I used Perl to develop a Bind DNS management system, but it must run on the same server as BIND DNS and does not support cluster operations. To meet the needs of Docker and distributed deployment, I used Python Django to re-develop a Bind DNS Web management system.
1. system features:
- Support View (providing resolution of different addresses for users with different addresses)
- DNS clusters are supported (primary and slave servers can be created, and "slave servers" are automatically synchronized from "Master servers)
- Separation of Web Management Server and DNS Server
- Use the default Bind mode instead of the dlz database mode (to ensure high service performance and stability)
- Dynamically modify records in DDNS Mode
According to the dlz test, the throughput of the dlz mode is 20 to 30 times lower than the default Bind mode. Therefore, I decided to adopt the default Bind mode.
2. function implementation:
Without using the dlz database mode, the system design and development are complex. I use the following methods to implement related functions:
- View Management: File Operations + rndc
- Domain Management: File Operations + rndc
- Record Management: dnspython
3.
Small screen (mobile phone) Adaptation: