How to create your own US Netflix Smart DNS
The Australian selection of netflix is an absolute joke, so i wrote this article. Abbott’s got nothing to do with this, but i’m blaming him.
Tools:
- DigitalOcean $5 per month droplet (Students get $100 credit with your .edu.au email through the GitHub Student Developer Pack, enough for 20 months use)
- ab77's netflix-proxy on GitHub
- Ubuntu 14.04 with Docker 1.8.x
- Terminal for Mac OS X or PuTTy for Windows (I prefer using iTerm)
Creating your droplet:
To start things off we are going to need an account with DigitalOcean, making an account is free, and if you are a student you can take advantage of the $100 credit mentioned above. Also, if you use the links on this site, you’ll get $10 in credit and you’ll give me some credit as well!


Name the droplet anything you like, choose the $5 size and select either the New York or San Francisco regions if you want US Netflix. The region depends on where you want your server to physically reside, for this guide, its America. Scroll down a bit further on the page and you’ll see Select Image.


Following the settings above, making sure to choose Docker 1.8.* on 14.04. You will have to switch the tab at the top from Distributions to Applications. The asterisk is just a placeholder, don’t be too concerned if your Docker version is ahead of this guides. Leave all the Settings checkboxes unticked, and don’t add an SSH key. We’ll use a password to our access our server, the SSH key is much more secure but more complex to setup initially. Once all the settings match, go ahead and create your droplet. This can take up to a minute so be patient.


Once the droplet has been created, you’ll see the screen below


Take note of the IP underneath your server name. In this case our IP is 104.131.41.143
You’ll become familiar with this number throughout the guide. So at this point your server is running, somewhere in New York.
Some days have passed between when I wrote the last part and this part. So I have created a new droplet with a different IP to above, just imagine it’s 104.131.41.143 in the pictures and following text.
Connecting to the droplet:
Now the droplet is created, you should have received an email with the information to your server from DigitalOcean. Below is the information you are looking for in the email.
Droplet Name: Test-Server
IP Address: 104.236.19.245
Username: root
Password: 93c485bf44c423249d
If you’re on a Windows machine, you’ll have to download and run PuTTy. For Windows users, go ahead and run PuTTy with these settings, and hit Open. (Remember to replace my IP with the one in the email). It’ll ask you for the username (it’s root) and the password (it’s in the email).


For Mac users, open up Terminal. To connect to our server, we need to run this command, taking the information from the email.
ssh [email protected]
After running that it will ask if you want to add to the list of known hosts. type out yes and hit enter. It’s going to ask for your password next. The password is in the email, go ahead and start typing it, don’t freak out if it doesn’t show any dots or any visual que that you are typing something, this is normal. Just keep typing and hit enter to finish.
Congratulations! You should be connected to your server. The first thing it’s going to get you to do is change the password you just entered.


Go ahead and type a password that you can remember, try to make it longer than 6 characters and include some special characters for good measure, maybe a few numbers too. You’ll have to enter your new password twice just to be safe. Once you’ve done that we can get to work!


The last line in your Terminal should look like the above. If you want to clear up all the text from earlier, just type clear and hit enter. Copy the script below paste it in, hit enter and let it run.
cd /opt && git clone https://github.com/ab77/netflix-proxy.git && cd netflix-proxy && ./build.sh
This is what it should look like whilst it’s running, don’t touch anything!


Depending on your internet speed it should take between 30–90 seconds to complete. You’ll know it’s done when the last few lines read:
DONE
/opt/netflix-proxy
Change your DNS to 104.236.19.245 and start watching Netflix out of region.
Done!
[email protected]:/opt/netflix-proxy#
The script is complete, your server is now running what it needs to, and it has automatically added the (external) IP of the internet you are currently using, so it’s best to do this whole process from the house you will be using to watch US Netflix. I’ll talk more about what is happening here later.
Go ahead and type exit and hit enter to log out of the server.
Change DNS settings of your devices:
All that’s left to do now is change the DNS settings of the device you will be using to watch Netflix. I’ll use the Apple TV as an example. Unblock-Us has written a nice guide on how to do this here. Do everything it says, except when it gets to entering the numbers, just enter the IP of your server, which is:
104.236.19.245
You can apply this method to any internet connected device that allows you to alter the DNS settings. Some devices will ask for a primary and secondary DNS address, that’s not a problem, just use the IP of your server twice.
You’re all done!
Now is the perfect time to grab a beverage and enjoy the far greater selection of content the American Netflix has to offer! If you’re interested in what is going on behind the scenes, and some extra information that might help you in a few days when your ISP changes your IP on you, keep reading.
Don’t be too worried about all you’re traffic now being routed through America, the whole reason why this is a “Smart” DNS is because it will only route traffic from Netflix (and a few other streaming sites) to America.
The Smart DNS is a lot faster than using a VPN as well. There is no doubt that this method is the best way to access american content on Netflix.
Extra Reading:
So it’s been a few days, you come home from work and want to watch a few shows but your Netflix isn’t co-operating. You can go back and set your DNS to Automatic and continue watching Australian Netflix or you can update your external IP in the firewall on your server. Earlier when we ran the script, it takes the IP we had at that time, and adds it to the list of IP’s allowed into the server. If you’ve ever wondered what a firewall is, this is it.
All we have to do is find our new IP and add it to the list manually. To find our new IP, we’ll ask google.


Pretty cool, huh! Next we have to log back into our server, so go ahead and scroll up and re-do the steps to login, ssh [email protected] etc. Come back when you’re in.
To add your new IP, just run these two commands, one at a time:
(Remember to replace your IP with my one below, make sure the /32 is left in tact.)
sudo iptables -I FRIENDS -s 118.208.102.420/32 -j ACCEPT
It’ll ask you for your password because we are using sudo, go ahead and type that in (hint: it’s the password you used to log into the server).
iptables-save > /etc/iptables/rules.v4 || iptables-save > /etc/iptables.rules
Don’t try to run those commands together, you have to copy the first one, paste it, hit enter, type your password, hit enter, then copy the second one, paste it, and hit enter again.
That’s it, your new IP is in the firewall and you should be good to watch US Netflix again. If you want to not have to do this as often as your ISP changes your IP, then you can either get a static IP from your ISP, get a Dynamic DNS server like DynDNS and create a script to update your IP every minute or so. Alternatively, you can increase the range of IP’s your firewall will accept.
I’ll show you how to do it, but it’s alot less secure than above. All we are gonna do is alter the first of the two commands above. You’ll notice the IP has four “sections” followed by a slash with another number e.g.
118.208.102.420/32
All this means is allow this exact IP. We can broaden the range by saying, allow the first two “sections” and then it doesn’t matter what the last two sections are, just allow them. The IP for this would be
118.208.0.0/16
So just replace the last two decimal “sections” with zeroes, and change the slash number to 16. Apply this to the first command above, run the second command as well and you are golden.
I’ve called them sections here, but they are actually called octets. The slash number is used in supernetting or CIDR, it’s just a fancy way of saying 255.255.0.0 or 255.255.255.255