Introduction
Introduction Statistics Contact Development Disclaimer Help
View source
# 2024-12-17 - No DNS, No Problem
The early Internet used /etc/hosts files to resolve names. These
were distributed on FTP sites. You can see a 1992 example below.
host.txt from textfiles.com
The /etc/hosts file quickly grew too large to be manageable.
See historical document below.
hosts.hst from textfiles.com
Internet users switched to DNS.
Recently, for various reasons, i became interested in avoiding DNS,
so i researched using an /etc/hosts file. I found one on
gopher.quest, but unfortunately it is incomplete.
hosts.txt at gopher.quest
I noticed that the Quarry gopher search engine contains a little over
300 live gopher hosts. I wrote the author about it, and he generously
created an /etc/hosts file from the Quarry database, linked below.
hosts.txt at gopher.icu
This is updated daily. On a linux system, you could replace
/etc/hosts with this file and assuming a sane C library, it should
"just work." It will resolve those names without DNS.
FreeDOS is slightly more complicated. Suppose the file is in
C:/etc/hosts.txt and will be used by mTCP and WATTCP.
For mTCP, edit mtcp.cfg, add:
HOSTSFILE C:/etc/hosts.txt
For WATTCP, edit wattcp.cfg, add:
hosts = C:/etc/hosts.txt
Now FreeDOS programs should resolve those names without DNS.
This covers gopher hosts. I would also like to include FTP and web
hosts referenced by my gopher maps. Below is a script i wrote to
mirror gopher content.
gopher-get.tcl
tclcurl.tgz SlackBuild
Using this script, i mirrored my gopher content.
$ mkdir gopherhole
$ cd gopherhole
$ tclsh gopher-get.tcl --binary-skip --images-skip \
--ignore gopher://tilde.pink/1/~bencollver/dir \
--ignore gopher://tilde.pink/1/~bencollver/dict \
--ignore gopher://tilde.pink/1/~bencollver/gamefaqs \
--ignore gopher://tilde.pink/1/~bencollver/ia \
--ignore gopher://tilde.pink/1/~bencollver/recipes \
gopher://tilde.pink/1/~bencollver
This took a while, so i let it run and came back later. This created
two directories.
* tilde.pink/0 (Plain text documents)
* tilde.pink/1 (Gopher maps)
I scraped the host names from these directories as follows.
$ find tilde.pink/1 -type f -exec \
grep -e URL:ftp: -e URL:http: -e URL:https: {} \; |\
sed -e 's,.*URL:[^:]*://,,' -e 's,/.*,,' >names-gopher.txt
$ find tilde.pink/0 -type f -exec \
awk -f setext-scrape-links.awk {} \; >names-setext.txt
$ cat names-gopher.txt names-setext.txt | sort |\
uniq >names-extra.txt
$ wc -l names-extra.txt
392 names-extra.txt
setext-scrape-links.awk
This shows that i reference approximately 400 non-gopher names. Now i
would like to resolve these to IP addresses. I wrote a short AWK
script to do this. I ignored unkown names because of old documents
that reference defunct names.
$ awk -f resolve.awk names-extra.txt >hosts-extra.txt
$ wc -l hosts-extra.txt
612 hosts-extra.txt
resolve.awk
Because DNS can resolve a name to multiple IP addresses, this list
grew from 392 to 612 lines. I appended this list to the Quarry hosts
file like so.
$ curl -o hosts-icu.txt gopher://gopher.icu/0/files/hosts.txt
$ cat hosts-icu.txt hosts-extra.txt >hosts-all.txt
$ wc -l hosts-all.txt
1058
For FreeDOS, filter out ":" to exclude IPv6 addresses. Also, mTCP
has an 80 character line length limit including EOL characters.
$ grep -v : hosts-all.txt |\
awk 'length($0) < 78 {print}' >hosts-dos.txt
Now i can copy hosts-all.txt to /etc/hosts
or copy hosts-dos.txt to C:/etc/hosts.txt
and i am good to go.
p.s.
The FreeDOS bundled mTCP has a bug. If you specify HOSTSFILE but no
NAMESERVER, then name resolution will always fail. You can work
around this by making sure mtcp.cfg has a NAMESERVER line. If you
don't use DNS at all, it can be:
NAMESERVER 127.0.0.1
tags: bencollver,retrocomputing,technical,unix
# Tags
bencollver
retrocomputing
technical
unix
You are viewing proxied material from tilde.pink. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.