Alternative DNS roots

I’m intrigued by the concept of Alternative DNS roots, why not have access to all of the internet that you can? But there are a handful and they all want you to use only them as your only DNS server, and I don’t like that much (I prefer OpenDNS, which I use encrypted). So I wrote a little python script to spit out a configuration file that dnsmasq can use to only query the servers that provide the TLDs that you want to access.

Many (most?) home routers use dnsmasq too, so you can paste the output of this program into it as well to instantly get you access to all of these other domain names.

#!/usr/bin/python3
import subprocess
import sys

def getTLDS(command):
  process = subprocess.Popen(['bash', '-c', command], stdout=subprocess.PIPE)
  stdout, stderr = process.communicate()
  return stdout.decode(sys.stdout.encoding).split('\n')

class TLDEntry:
  name = ''
  tlds = []
  ns = []
  def __init__(self, name, tlds, ns):
    self.name = name
    self.tlds = tlds
    self.ns = ns

tldEntries = []

# OpenNIC, opennicproject.org
tldEntries.append(TLDEntry('OpenNIC', ['bbs', 'dyn', 'free', 'fur', 'geek', 'opennic.glue', 'gopher', 'indy', 'ing', 'micro', 'null', 'oss', 'parody'], ['66.244.95.20', '128.173.89.246']))
# NameCoin P2P DNS, dot-bit.org
tldEntries.append(TLDEntry('NameCoin', ['bit'], ['216.231.140.69', '178.32.31.41']))
# NewNations, new-nations.net
tldEntries.append(TLDEntry('NewNations', ['ko', 'ku', 'rm', 'te', 'ti', 'uu'], ['88.84.130.20', '194.50.176.206']))
# Name.Space, namespace.us
tldEntries.append(TLDEntry('Name.Space', getTLDS('wget --no-check-certificate -q -O- https://namespace.us/CompleteTLDList.pdf | pdftotext - - | grep "^\." | sed "s/^.//"'), ['209.48.2.16', '184.74.208.107', '209.48.4.2', '184.74.208.109']))
# Cesidian ROOT, cesidianroot.net
tldEntries.append(TLDEntry('Cesidian ROOT', getTLDS('wget -q -O- http://www.cesidianroot.net/ | grep "\.[^;]*<br>" | grep -v "\.<br>" | grep -o "\.[^<]*" | sed "s/^.//"'), ['50.77.217.162', '69.93.127.50', '68.71.240.36']))

duplicates = dict()

for tldEntry in tldEntries:
  print("\n#", tldEntry.name)
  for tld in tldEntry.tlds:
    if len(tld) < 1:
      continue
    if tld in duplicates:
      print("# tld '.%s' of '%s' is a duplicate of '%s'" % (tld, tldEntry.name, duplicates.get(tld)))
      continue
    duplicates.setdefault(tld, tldEntry.name)
    prepend = 'server='
    for ns in tldEntry.ns:
      print('%s/%s./%s' % (prepend, tld, ns), end='')
      prepend = ','
    print()

You can output this to a new file, and add this in your dnsmasq.conf if you like:
conf-file=/etc/dnsmasq_alt.conf

Attached is the output, as long as you want to use the same DNS servers I use (if you don’t live in the US, you may want to change some of them).

What kind of things would use TLDs that aren’t standard?

All sorts of stuff, for example, http://mopar.ing points here now. I also registered mumble.ing to run a mumble server on. :slight_smile:

Open TLDs isn’t a stupid idea from a free speech perspective. Why should a few companies monetise on selling names on the internet, and be allowed to take the domain away from you if they don’t like what you are doing?

how do i get one?

[quote=“t4, post:5, topic:439813”][quote author=Moparisthebest link=topic=542506.msg3975892#msg3975892 date=1334639040]
All sorts of stuff, for example, http://mopar.ing points here now. I also registered mumble.ing to run a mumble server on. :slight_smile:
[/quote]
how do i get one?[/quote]

All of the links are on http://www.opennicproject.org/

Go to:
http://register.ing/
To get a .ing or a .micro for free, but others have to be using the correct DNS servers to have access to it.

Yea I can’t use any .ing domains :frowning:

You can if you change your DNS server or use the output from the script I posted. :slight_smile:

google doesn’t like -ing

No, but you can search those TLDs with an engine like this:
http://grep.geek/
:slight_smile:

[quote=“Moparisthebest, post:10, topic:439813”][quote author=t4 link=topic=542506.msg3976299#msg3976299 date=1334696364]
google doesn’t like -ing
[/quote]

No, but you can search those TLDs with an engine like this:
http://grep.geek/
:)[/quote]
i meant the DNS servers, but that is also an interesting find

What happens when one of those roots becomes a real root, which is a lot more likely now that anything can be registered as a root?

All sorts of funky bad things happen, it’s happened at least once on “Cesidian ROOT, cesidianroot.net”, you can read a blog post about what they did.

Also, some of these ‘alternative root’ organizations have applied to ICANN for official status, but it hasn’t gone through yet.

if len(tld) < 1:
could also be
if tld:

An empty list returns false.

[quote=“STH, post:14, topic:439813”]if len(tld) < 1:
could also be
if tld:

An empty list returns false.[/quote]

Hmm, good to know for the future, but it really isn’t that clear in it’s intent.