Adventures in Metered Internet Access

2018-08-10 UPDATE: if you are using Windows or Mac and will be on metered Internet, be sure to check out TripMode, an invaluable app for helping you control data usage (Mac users can also try Radio Silence). As mentioned, Linux has a lot less processes randomly talking to the network, but tc can be used to control ingress and egress speeds, Duoane and OpenSnitch allow per-process blocking.

I’m spending the month driving around New Zealand and I figure I’d write about one interesting tech travel challenges (and one of the major reasons that I’m in the process of switching to Linux from OS X). Those specifically interested in my yak shaving experiences on getting Linux set up on a Lenovo X250 of course can follow along, but this will be more focused.

I am currently on “Milford Sound Lodge Internet Access” which is a pretty decent satellite connection (about 20KB/s) considering that cell phone reception ended over 100km back (I have a Vodafone and Spark prepaid sims for this trip). The pricing is tiered, and the best per-MB pricing is 50MB for 10NZD (0.20NZD/MB) – I’m on day 2 and my third voucher right now. The captive portal is a short code provided by receipt-printed vouchers, and it’s actually pretty good/reliable as far as these things go. The portal itself is a simple Python cgi-bin, and I wouldn’t be surprised to find it backed by a solid embedded FreeBSD setup (curiousity got the better of me, It’s running an ancient Debian Linux (2.6 kernel), the web server is lighthttp).

I haven’t bothered using my Macbook Air – it chewed through 20MB of even more expensive internationl airplane wifi in a matter of minutes. There’s no way for me to effectively control all the various daemons or lock down the network (Little Snitch tracks and shows me everything, but inexplicably gives me no way to go into a lockdown mode).

I’m running Ubuntu 15.04 on my X250 at the moment. iptraf and iftop work well for tracking connections, and nethogs lets you see connections on a per-process basis. OOTB, things were decent – I wrote a script to stop unattended-upgrades and dropbox to avoid any surprises, however a few surprises: avahi-daemon doesn’t seem to stop chattering even when turned off. It’s purely local, but it was running up charges so I ended up uninstalling it for now. The other thing that was (not surprising) was that both Chromium/Chrome and Firefox chew through networking with their auto-updates. I could probably disable the updates (there may be other extensions as well though) and various syncing things, but instead I’m using uzbl at the moment (surf and vimprobable are other options) for lightweight browsing. I’m also using elinks (links/lynx as backups), which is much more efficient, of course. On my yak-shaving list: finding a terminal-based webkit browser, setting up a travel Firefox profile w/ uBlock, Noscript, images and all updates disabled for travel mode.

Besides the browser hijinks, my current setup is incredibly well behaved – a few bytes for occasional ntp updates that I haven’t been able to track down (it’s not in my init.d…), but I can live with that.

Interesting notes on mobile usage:

It turns out that iOS 8 is almost as badly behaved as OS X on Wifi. I turned off “Background App Refresh” and scoured all the other settings available to me, but iOS still ate up 5MB+ of data immediately after signing in. I haven’t let it get online again. I must be missing something. I’d assume that there are many places in the world with metered wifi connections?

Android 5.1 is slightly better behaved. You can Restrict Background Data (Settings > Data Usage > Menu), but of course, by default this only restricts cellular, not wifi connections. There’s a separate Network Restrictions option that lets you specify Metered Wifi Networks, however that works. Once this is set (after I burned through a couple MB of data) then it works as expected.