LEXUGE/dcompass ↗
Created Feb 16, 2021 · View the LEXUGE/dcompass repository page
A high-performance programmable DNS component aiming at robustness, speed, and flexibility
An animated visualization of LEXUGE/dcompass's Git history from October 2020 to February 2021, built by 4 contributors. The codebase reached 877 lines, mostly Rust. The video runs 23 seconds.
Want this for your repo?
Render a free sample of any GitHub repo in seconds.
Contributors
4
Lines of Code
877
From
Oct 30, 2020
To
Feb 16, 2021
Advertisement
About LEXUGE/dcompass
dcompass is a high-performance DNS server component written in pure Rust, designed to handle approximately 50,000 queries per second. It functions as a programmable DNS router that allows users to script complex query routing logic using Rune, a Rust-like scripting language. The project emphasizes robustness, speed, and flexibility, enabling administrators to dynamically switch between network environments without downtime.
The tool supports multiple DNS query protocols including UDP, DNS over HTTPS (DoH), and DNS over TLS (DoT), with the ability to race multiple upstreams simultaneously using a hybrid method. Users can define sophisticated routing rules through configuration files that leverage matchers for GeoIP filtering, IP CIDR ranges, and domain-based blocking. The scripting engine provides access to individual DNS message components, allowing fine-grained manipulation of queries and responses, such as adding EDNS Client Subnet records or implementing custom DNS services.
dcompass targets system administrators and network engineers who need advanced DNS filtering and routing capabilities. The project is actively maintained with significant performance improvements between versions—version 0.3.0 introduced the Rune script engine which achieved 2-6x faster performance compared to previous implementations. Binaries are available for multiple architectures including x86_64, ARM, and MIPS, with NixOS packages and systemd service integration provided for Linux users.
Advertisement