๐ŸŒฟ Epiphany (GNOME Web) & DNSaaS

Understanding Epiphany's minimalist approach and how to configure DNS at the system level.

๐ŸŒฟ Epiphany • Desktop โš ๏ธ No Built-in DoH ๐Ÿ”’ Uses System DNS

๐Ÿ“‹ Overview

Epiphany (also known as GNOME Web) is the default web browser for the GNOME desktop environment. It follows a minimalist design philosophy and does not have a built-in DNS-over-HTTPS (DoH) configuration setting.

๐Ÿ’ก How Epiphany Handles DNS

Epiphany uses the system's DNS settings for all name resolution. This means that to use DNSaaS with Epiphany, you need to configure DNS at the operating system level rather than within the browser itself.

โš ๏ธ Important Epiphany does not have a settings page for DNS-over-HTTPS (DoH) or custom DNS providers. This is by design to keep the browser simple and rely on the system's network configuration.

โš–๏ธ Epiphany vs Standard Browsers

๐ŸŒ Standard Browsers โœ… Built-in DoH Chrome, Firefox, Edge, Brave, Opera, Vivaldi
๐ŸŒฟ Epiphany โš ๏ธ No Built-in DoH Uses system DNS settings
Feature Standard Browsers Epiphany
Custom DoH Support โœ… Yes โŒ No
Token Authentication โœ… Supported โŒ Not in browser
DNS Configuration โœ… In-browser โš ๏ธ System-level
GNOME Integration โš ๏ธ Varies โœ… Seamless

๐Ÿ”ง Solution: Configure DNS at System Level Recommended

Since Epiphany doesn't have built-in DoH settings, you need to configure DNS at the operating system level. This will apply to all applications on your system, not just Epiphany.

1 Install dnsdist (Local DoH Proxy)

sudo apt install dnsdist

2 Configure dnsdist

sudo tee /etc/dnsdist/dnsdist.conf << 'EOF' setLocal("127.0.0.1:53") setACL({'127.0.0.0/8'}) local dohServer = newDOHServer("https://dns1.oss.co.za/testclient123") dohServer:setPool("dohpool") addAction(AllRule(), PoolAction("dohpool")) addAction(AllRule(), FailAction({newServer("1.1.1.1"), newServer("8.8.8.8")})) webserver("127.0.0.1:8083") EOF
โš ๏ธ Important Replace token_testclient123 with your actual token in the configuration above.

3 Start dnsdist Service

sudo systemctl enable --now dnsdist

4 Set System DNS to Localhost

sudo resolvectl dns $(ip route | grep default | awk '{print $5}' | head -1) 127.0.0.1

5 Test the Configuration

dig example.com A
โœ… Success Indicator
  • dig example.com A should return A records
  • dig adult.filterdns.net A should return DNS_PROBE_FINISHED_NXDOMAIN
  • Epiphany will now use your secure DNS service automatically

๐Ÿ”„ Alternative: Configure via Network Manager

If you prefer a GUI approach, you can configure DNS in GNOME's Network Manager settings:

1 Open Network Settings

Go to Settings โ†’ Network โ†’ click the gear icon next to your active connection.

2 Go to IPv4 or IPv6 Tab

Switch to the IPv4 or IPv6 tab depending on your network.

3 Set DNS to Localhost

Change DNS from Automatic to Manual and enter 127.0.0.1.

4 Apply and Restart

Click Apply and restart your network connection.

๐Ÿงช Verify Your Configuration

After configuring system-level DNS, you can verify it's working with Epiphany:

Test 1: Epiphany Browser Test

epiphany-browser https://dnsleaktest.com

Test 2: Blocked Domain Test

epiphany-browser http://adult.filterdns.net
โœ… Success Indicators
  • https://dnsleaktest.com should show dns1.oss.co.za or 102.220.218.218
  • http://adult.filterdns.net should show DNS_PROBE_FINISHED_NXDOMAIN
  • All DNS queries in Epiphany are now using your secure DNSaaS service

๐ŸŽฏ Summary


๐Ÿ“š References:
๐Ÿ”— Ubuntu DNSaaS Configuration Guide
๐Ÿ”— Epiphany (GNOME Web) Documentation
๐Ÿ”— dnsdist Documentation