This project implements an ad-blocking DNS server using Node MCU (ESP8266) microcontroller, capable of resolving domain names, performing reverse DNS lookups, and blocking unwanted advertisements. It provides a customizable DNS resolution service, offering flexibility and control over DNS responses while helping to improve browsing experience by blocking ads.
- Custom DNS Resolution: Resolve domain names according to predefined mappings.
- Reverse DNS Lookup: Provide reverse DNS lookup functionality for IP addresses.
- Ad-Blocking: Block unwanted advertisements by filtering DNS requests.
- Cache Management: Maintain a cache of recent DNS transactions to improve response times and reduce network traffic.
- Flexible Configuration: Easily configure WiFi settings and DNS mappings to adapt to different network environments.
- LED Indicator: Visual indication of the device's status using a built-in LED.
- Node MCU (ESP8266) microcontroller board
- USB cable for programming and power supply
- LED (optional) for visual indication
- Arduino IDE or PlatformIO for programming the Node MCU
- Required Libraries:
- ESP8266WiFiMulti
- WiFiUdp
- ArduinoJson
- Clone or download the project repository.
- Open the project in Arduino IDE or PlatformIO.
- Install the ArduinoJSON library if not already installed.
- Connect the Node MCU board to your computer via USB.
- Select the appropriate board and port in the Arduino IDE.
- Upload the sketch to the Node MCU board.
- Power on the Node MCU board.
- Monitor the serial output for debugging information (
74880
baud rate). - The built-in LED indicates the device's status:
- ON --> connected and DNS Server running
- Blinking --> Connection to host AP failed
- Configure the network settings using the serial monitor(send 'help' command for detailed information)
- If encountering connection issues, ensure correct WiFi credentials are provided.
- Check serial output for debugging information and error messages.
- Verify hardware connections and ensure the Node MCU board is properly powered.
- If the value provided is shown invalid, Use proper Value Identifiers(/x: and :x)