I rarely watched TV online when I was located in the UK, but now I've moved to Finland with appalling local TV choices it has become more common.
The biggest problem with trying to watch BBC's iPlayer, and similar services, is the location restrictions.
Not a huge problem though:
- Rent a virtual machine.
- Configure an OpenVPN server on it.
- Connect from $current-country to it.
The next part is the harder one - making your traffic pass over the VPN. If you were simple you'd just say "Send everything over the VPN". But that would slow down local traffic, so instead you have to use trickery.
My approach was just to run a series of routing additions, similar to this (except I did it in the openvpn configuration, via pushed-routes):
ip -4 route add .... dev tun0
This works, but it is a pain as you have to add more and more routes. The simpler solution which I switched to after a while was just configuring mitmproxy on the remote OpenVPN end-point, and then configuring that in the browser. With that in use all your traffic goes over the VPN link, if you enable the proxy in your browser, but nothing else will.
I've got a network device on-order, which will let me watch netflix, etc, from my TV, and I'm lead to believe this won't let you setup proxies, or similar, to avoid region-bypass.
It occurs to me that I can configure my router to give out bogus DNS responses - if the device asks for "iplayer.bbc.com" it can return 10.10.10.10 - which is the remote host running the proxy.
I imagine this will be nice and simple, and thought I was being clever:
- Remote OpenVPN server.
- MITM proxy on remote VPN-host
- Which is basically a transparent HTTP/HTTPS proxy.
- Route traffic to it via DNS.
- e.g. For any DNS request, if it ends in .co.uk return 10.10.10.10.
Because I can handle DNS-magic on the router I can essentially spoof my location for all the devices on the internal LAN, which is a good thing.
Anyway I was reasonably pleased with the idea of using DNS to route traffic over the VPN, in combination with a transparent proxy. I was even going to blog about it, and say "Hey! This is a cool idea I've never heard of before".
Instead I did a quick google(.fi) and discovered that there are companies offering this as a service. They don't mention the proxying bit, but it's clearly what they're doing - for example OverPlay's SmartDNS.
So in conclusion I can keep my current setup, or I can use the income I receive from DNS hosting to pay for SmartDNS, or other DNS-based location-fakers.
Regardless. DNS. VPN. Good combination. Try it if you get bored.
Tags: dns, location, mitmproxy 8 comments
I used DNS64 + NAT64 + dnsmasq to access iPlayer. I have a NAT64 gateway in the UK, a DNS64 server that generates addresses pointing to that NAT64 gateway, and a local dnsmasq setup that forwards .bbc.co.uk and friends to that DNS64 server.