Skip to content

acohn/netflix-v4

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

netflix-v4

This small Go program exists to solve an annoying problem: Netflix blocks Hurricane Electric's tunnelbroker.net tunnels, which have been used to circumvent copyright laws. However, Netflix's client will prefer to use a blocked IPv6 tunnel over a native IPv4 connection, and will then error out.

This program cannot be used to circumvent Netflix's region blocking. It simply forces Netflix clients to use IPv4, which is hopefully not discriminated against.

Installation on an EdgeRouter X

I use an Ubiquiti EdgeRouter X as my home router, and have configured the DNS forwarder (dnsmasq) on it to forward requests for netflix.com (and associated domains) to this program, which acts as a filtering DNS proxy, removing any AAAA records for Netflix domains. While this program could run on any always-available machine on the local network, it's most convenient to run it directly on the EdgeRouter itself. (Don't run it on, eg. a VPS, because then Netflix's CDN might not geolocate you correctly and you might get slower-loading content)

The Ubiquiti EdgeRouter X uses a little-endian MIPS CPU, which is one of the architectures targeted by recent versions of the Go compiler. To build a stripped (smaller, which matters when you're on a device with 256 MB of storage) binary for the EdgeRouter X's MIPS architecture:

$ go get -ud github.com/acohn/netflix-v4
$ GOOS=linux GOARCH=mipsle go build -ldflags "-s -w" github.com/acohn/netflix-v4

Once built, scp the binary onto your EdgeRouter, into the /config persistent partition, and configure it to be started on boot. I use a script like this in the /config/scripts/post-config.d/ directory, which is automatically run on boot:

#!/bin/bash

started='/tmp/nfx_started'

if [ -e $started ]; then
exit 0
fi

( sleep 30 && /usr/bin/sudo -u nobody -b /config/scripts/netflix-v4 ) &

touch $started

To configure your EdgeRouter to forward Netflix requests to this program, enter configuration mode in the EdgeRouter CLI and add the following:

set service dns forwarding options 'server=/netflix.com/nflximg.com/nflxext.com/nflxvideo.com/127.0.0.1#5353'

Inspiration and Acknowledgements

This is pretty much a straight Go port of Chris Howie's Python implementation. However, installing that script's dependencies directly on the EdgeRouter itself takes up a significant chunk of the EdgeRouter's available storage, which prevented me from upgrading the device firmware without uninstalling them. Additionally, the Python interpreter uses significantly more memory than this script.

This would have not been possible without Miek Gieben's excellent Go DNS library.

About

DNS proxy that strips out Netflix's IPv6 records

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages