> ## Documentation Index
> Fetch the complete documentation index at: https://e-gurl.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Supported Systems

> Operating systems and platforms supported by DNS-MNS, including Android (Beta)

# Supported Systems

DNS-MNS runs on Windows, macOS, Linux, OpenWrt, and Android. This page details supported versions and how DNS is configured on each platform.

## Compatibility Matrix

| Operating System | Versions      | DNS Method                        | Status          |
| ---------------- | ------------- | --------------------------------- | --------------- |
| Ubuntu           | 18.04+        | systemd-resolved / NetworkManager | Fully Supported |
| Debian           | 10+           | systemd-resolved / NetworkManager | Fully Supported |
| Fedora           | 30+           | systemd-resolved / NetworkManager | Fully Supported |
| Arch Linux       | Rolling       | systemd-resolved / NetworkManager | Fully Supported |
| CentOS/RHEL      | 8+            | systemd-resolved                  | Fully Supported |
| openSUSE         | 15+           | NetworkManager                    | Fully Supported |
| macOS            | 10.14+        | networksetup                      | Fully Supported |
| Windows 10       | All builds    | PowerShell                        | Fully Supported |
| Windows 11       | All builds    | PowerShell                        | Fully Supported |
| OpenWrt          | 19.07+        | UCI (dnsmasq integration)         | Fully Supported |
| Android          | 8.0+ (API 26) | VPN API                           | Beta            |

## Linux

DNS-MNS automatically detects your Linux distribution and uses the appropriate method.

### systemd-resolved

Used by most modern distributions including Ubuntu, Fedora, and Arch.

**Detection:** Checks if `systemd-resolved` service is running

**Configuration:**

* Creates `/etc/systemd/resolved.conf.d/dns-mns.conf`
* Restarts `systemd-resolved` service

**Verify:**

```bash theme={null}
resolvectl status
```

### NetworkManager

Common on desktop distributions with graphical environments.

**Detection:** Checks if `nmcli` command is available

**Configuration:**

* Modifies active connection via `nmcli`
* Sets `ipv4.ignore-auto-dns yes`

**Verify:**

```bash theme={null}
nmcli connection show "Your Connection" | grep dns
```

### resolv.conf Fallback

For minimal systems without systemd-resolved or NetworkManager.

**Configuration:**

* Backs up `/etc/resolv.conf`
* Writes new nameserver entries

<Warning>
  Changes to `/etc/resolv.conf` may be overwritten by DHCP. Consider using systemd-resolved or NetworkManager for persistent changes.
</Warning>

## macOS

macOS support is straightforward using built-in system commands.

### Requirements

* macOS 10.14 (Mojave) or newer
* No additional software required

### How It Works

Uses `networksetup` to configure all active network services:

```bash theme={null}
networksetup -setdnsservers "Wi-Fi" 1.1.1.1 1.0.0.1
```

**Supported Interfaces:**

* Wi-Fi
* Ethernet
* Thunderbolt Ethernet
* USB Ethernet

**Verify:**

```bash theme={null}
networksetup -getdnsservers "Wi-Fi"
scutil --dns
```

## Windows

### Pre-Built Binary (Recommended)

The `.exe` binary runs natively on Windows. No Git Bash or WSL needed.

1. Download `dns-mns-windows-amd64.exe` from the [Releases page](https://gitlab.com/E-Gurl/dns-mns/-/releases)
2. Right-click and select "Run as administrator" to enable DNS configuration
3. That's it -- no installation needed

### Shell Script (requires Bash environment)

**Option A: Git Bash**

1. Download from [git-scm.com/download/win](https://git-scm.com/download/win)
2. Install with default options
3. Open Git Bash
4. Run installation command

**Note:** Right-click Git Bash and select "Run as Administrator" to change DNS settings.

**Option B: WSL (Windows Subsystem for Linux)**

1. Open PowerShell as Administrator
2. Run: `wsl --install`
3. Restart computer
4. Open Ubuntu from Start Menu
5. Follow Linux instructions

### How It Works

Uses PowerShell commands:

```powershell theme={null}
Set-DnsClientServerAddress -InterfaceAlias "Wi-Fi" -ServerAddresses ("1.1.1.1","1.0.0.1")
```

**Supported Interfaces:**

* Wi-Fi
* Ethernet
* All network adapters shown in Network Connections

**Verify:**

```powershell theme={null}
Get-DnsClientServerAddress
```

## OpenWrt

DNS-MNS provides native support for OpenWrt routers with UCI integration.

### Supported Architectures

* **x86\_64** - x86 routers and virtual machines
* **MIPS** - Older routers (TP-Link WR841N, etc.)
* **MIPSel** - Some TP-Link and D-Link models
* **ARM v7** - Raspberry Pi 2/3, modern routers
* **ARM64** - Raspberry Pi 4, high-end routers

### Installation

```bash theme={null}
# Download the appropriate binary for your architecture
wget https://gitlab.com/E-Gurl/dns-mns/-/releases/latest/download/dns-mns-openwrt-x86_64

# Install
mv dns-mns-openwrt-x86_64 /usr/bin/dns-mns
chmod +x /usr/bin/dns-mns
```

### Two Operation Modes

**Upstream Mode (Recommended)**

* Dnsmasq remains on port 53
* DNS-MNS runs on a different port (default: 5353)
* Dnsmasq forwards queries to DNS-MNS

**Direct Mode**

* Dnsmasq DNS is disabled (port set to 0)
* DNS-MNS listens directly on port 53
* Dnsmasq continues to provide DHCP

### Configuration

```bash theme={null}
# Detect OpenWrt
dns-mns openwrt detect

# Setup in upstream mode
dns-mns openwrt setup --mode upstream

# Setup in direct mode
dns-mns openwrt setup --mode direct

# Check status
dns-mns openwrt status

# Restore original config
dns-mns openwrt restore
```

See the [OpenWrt Guide](/usage/openwrt) for detailed instructions.

## Android (Beta)

DNS-MNS is available as a standalone APK for Android devices.

### Requirements

* Android 8.0 (Oreo) or newer
* No root access required

### How It Works

Uses Android's VPN API to create a local VPN tunnel that intercepts and routes DNS queries:

* **arm64-v8a** - Most modern phones (Pixel, Samsung Galaxy, etc.)
* **armeabi-v7a** - Older 32-bit ARM devices
* **x86\_64** - Android emulators, ChromeOS
* **x86** - Older Intel-based tablets

### Installation

1. Download `dns-mns-android-0.0.4-beta.apk` from the [Releases page](https://gitlab.com/E-Gurl/dns-mns/-/releases)
2. Enable **Install from unknown sources** on your device
3. Install the APK and open DNS-MNS

<Warning>
  Android support is in **beta** (v0.0.4-beta). Some features may be incomplete or unstable. Please report issues on the [GitLab repository](https://gitlab.com/E-Gurl/dns-mns/-/issues).
</Warning>

## Dependencies

### Pre-Built Binary

The Go binary has **no external dependencies**. Everything is built in, including:

* ICMP ping testing
* DNS query testing (native Go, no `dig` needed)
* DNS configuration for all platforms

### Shell Script

| Tool | Purpose          | Linux    | macOS    | Windows  |
| ---- | ---------------- | -------- | -------- | -------- |
| bash | Script execution | 4.0+     | Built-in | Git Bash |
| ping | ICMP testing     | Built-in | Built-in | Built-in |

**Optional for shell script:**

| Tool      | Purpose              | Installation                                 |
| --------- | -------------------- | -------------------------------------------- |
| dig       | DNS response testing | `apt install dnsutils` / `brew install bind` |
| gawk      | Floating-point math  | `apt install gawk`                           |
| curl/wget | Installation         | Usually pre-installed                        |

## Checking Your System

Run these commands to verify compatibility:

```bash theme={null}
# Check bash version
bash --version

# Check if ping works
ping -c 1 1.1.1.1

# Check for dig (optional)
which dig

# Check for systemd-resolved (Linux)
systemctl status systemd-resolved

# Check for NetworkManager (Linux)
which nmcli
```

## Known Limitations

<AccordionGroup>
  <Accordion title="Linux">
    * Some immutable distros (Fedora Silverblue) may have restrictions
    * Container environments may not support DNS changes
    * WSL1 has limited DNS modification support (WSL2 works)
  </Accordion>

  <Accordion title="macOS">
    * VPN apps may override DNS settings
    * Some corporate MDM policies may prevent DNS changes
  </Accordion>

  <Accordion title="Windows">
    * Requires Administrator privileges
    * Some antivirus software may block DNS changes
    * Corporate group policies may prevent modifications
  </Accordion>
</AccordionGroup>
