WinCoder Blog

Configure Squid Proxy in Azure to Watch Olympics via Canadian Broadcast

The Rio 2016 Olympics are currently underway and millions around the world are tuning into the various events taking place. Like many, I want to watch the action in the comfort of my living room with my family and friends. Unfortunately, I was stuck with pretty much two options for watching the event. I could view the glory on NBCs delayed online stream or catch the action in my bedroom TV through Comcast Xfinity. Understand that I have a situation where the cable line is only available from my bedroom and my Xfinity credentials don’t seem to allow me to stream through the recently released NBC Sports App on Xbox One.

Then I discovered that the Canadian Broadcast Company allows live access to a very superior categorized collection of Olympic Events.

Notice the amazing buffet of live and recorded events:

cbc

 

One small problem though… If you try accessing a video stream from outside Canada you will be greeted by the following:

 

01_Problem

 

Sigh… If only I had a Canadian ISP or a computer located in Canada.

Wait a minute… Microsoft Azure has 2 datacenters in Canada!

 

Solution:

Let’s deploy a VM and configure a proxy with built-in authentication to allow us to route traffic through a machine located in Canada and bring the data into the living room!

Why not use a VPN or public proxy? This solution is similar, however, since you will be in control of the actual proxy, you will not have to worry about the VPN / Proxy operator snooping on your internet traffic or issues with network saturation. In addition, the proxy we will deploy will have an authentication mechanism which means that only users with a valid login to your proxy will be able to use your service. We will essentially roll our own VPN.

 

What you will need:

Active Microsoft Azure Subscription (Free Trial Available)

 

Step 1: Login to Azure and begin deployment of a Linux based VM image

(I chose Ubuntu 16.04 because it’s the latest and greatest)

1SelectVM

Step 2: Be sure to Deploy your VM into a Canadian Datacenter (Canada Central or Canada East)

2CreateVMInCanada

Step 3: Select your VM Size

Size really shouldn’t be an issue as the machine will operate as a basic proxy with an authentication layer

I chose the low-end A0 which currently cost $13.39 / month in compute charges

(Note that amount of bandwidth consumed will cause changes in price)

3SelectSize

Step 4: Leave Default Settings for Optional Features

4LeaveDefault

Step 5: Confirm and Deploy!

5ConfirmDeployment

Step 6: Note IP address of deployed VM

6ConfirmIp

Step 7: Fire up an SSH Client

(I used Bash on Ubuntu on Windows which is included in recent Windows 10 Anniversary Update)

7BashPrompt

Step 8: Connect to VM over SSH

8SshToRemoteMachine

Step 9: Install squid with sudo apt-get install squid3

9InstallSquid

Step 10: Modify squid.conf with sudo vi /etc/squid/squid.conf

Here is a copy of the config used on my VM

10Modify

Step 11: Create and edit a new PAM Module with sudo vi /etc/pam.d/squid

This will allow our proxy to operate with a layer of authentication so it is not open to the public for potential abuse

12CreateAndEditModule

Step 12: Modify newly created module with:

auth required pam_unix.so
account required pam_unix.so

13EditModule

Step 13:Give the squid service access to the shadow file with `gpasswd -a proxy shadow` then Restart squid with sudo /etc/init.d/squid start

14RestartAndAuthenticateSquid

Step 14: Create an inbound security rule to allow traffic to port 3128 on our VM

(By default, squid runs on http_port 3128)

To do this, begin by locating the resource group that your VM was deployed to:

15FindResourceGroup

Next, locate the security group that is associated with your VM

16FindSecGroup

Finally, create a New Inbound Rule with the following configuration:

17CreateInboundSecRule

Step 15: Configure browser to proxy traffic through now operational squid proxy running on VM located in Canadian Azure datacenter

In Edge this looks like:

Settings => View Advanced Settings

18AdvancedSettings

Open Proxy Settings => Manual Proxy Setup

Address = <ip address of VM>

Port = 3128

19ConfigureProxy

In Google Chrome this looks like:

Settings => (scroll to bottom) Show Advanced Settings… => Change Proxy Settings

InternetProperties

LAN settings => Proxy server

Check “Use a proxy server for your LAN…”

Address = <ip address of VM>

Port = 3128

LANsettings

 

That’s it!

Now when you visit a web page with your newly configured settings you should be prompted for credentials:

User name = <user account located on your VM>

Password = <Password used to login to VM with associated user>

20Prompt

After that, you can check your ip and confirm you are reporting a Canadian ip address

Try it out by heading to http://cbc.ca and accessing a stream

21CastToDevice

Note that in the Edge Browser you can right click and select “Cast Media to Device” if you are using a Miracast enabled device. This will list available devices to stream content to, simply select your device and enjoy the games!

26ConnectToDevice

Otherwise, stream using remote display in Windows 10, Chromecast, or connect over HDMI and enjoy!

Happy Hacking!

 

 


1 comment for “Configure Squid Proxy in Azure to Watch Olympics via Canadian Broadcast

Leave a Reply

Your email address will not be published. Required fields are marked *