One of the downsides to moving house is the complete loss of internet access for an extended period. Yes, technically, you can get it switched over seamlessly. In my case, though, the previous tenant hadn’t even cancelled his phone service, so it’s been a lot more long-winded and painful. I should have a phone line again by Wednesday (after 3 calls to BT, the last of which took 20 minutes). 48 hours after that, I’ll be able to order ADSL, the provision of which takes five working days.
But this is the UK, where former incumbent state operators still work on soviet bureaucracy timescales (c.f. Royal Mail).
I’d anticipated this cascade of incompetence, so I pre-emptively purchased a 3G UMTS dongle (a little Huawei USB device the size of a butane lighter) and bandwidth package. For £100, I got both the device and 12 GB to be used at any time over a period of 12 months. That’s a pretty reasonable offer that fits my expected usage pattern well. Also, £100 is small beer in the context of all the thieving bastards taking advantage of my change of address to screw me over.
So hurrah for modern technologies! Except … 3G is slow. Not in raw data transfer terms—it’s actually faster than the overly-contended ADSL connection was at my old place—but the latency is painful.
Web browsing entails lots of DNS queries to look up
(resolve) the address of a page—to say that
example. Firefox, rightly, doesn’t cache this information. It
defers to the operating system. The operating system, also rightly,
defers to the local DNS server. Under normal circumstances, this is
close enough (in four dimensions) that you don’t notice the tiny
amount of extra time taken to resolve DNS queries.
On my 3G dongle, though, it can easily take up to a second to return a response.
There’s a second problem, too, in that 3’s DHCP service doesn’t
always seem to return DNS information. You can fix this by
appending known-good DNS servers to
but it’s a hassle.
To summarise: I need a local DNS server that always knows where
to look upstream. I took some information from
Local DNS Cache for Faster Browsing with the caveat that, at
least according to the dnsmasq community
dnsmasq interferes with Network
Manager. Here’s my solution. I’ve used OpenDNS for this example, as
their DNS servers should work for anybody.
sudo apt-get install dnsmasq-base resolvconf
/etc/dnsmasq.conf to contain:
You can find commented-out lines with the left-hand values; uncomment them and add the right-hand side to each.
Create a file in
nameserver 18.104.22.168 nameserver 22.214.171.124
Use other DNS servers if you prefer.
Finally, uncomment/modify one line in
prepend domain-name-servers 127.0.0.1;
sudo /etc/init.d/dnsmasq restart
Reconnect to your internet connection, and try typing
google.com into the terminal a few times. After the first
lookup, it should be very fast.
There’s one wrinkle: in 8.04,
NetworkManager ignores all DNS settings for 3G connections, and
resolv.conf to whatver the DHCP server returned,
bypassing the local server. The best solution I’ve found so far is
/etc/network/interfaces and configure
iface ppp0 dns-nameservers 127.0.0.1