Mijn dochter gebruikt Private Internet Access (PIA) om Amerikaanse Netflix te kijken op haar smartphone en laptop. Ze vertelde echter dat ze dan niet kon casten naar haar Chromecast en soms is kijken op een groter TV scherm toch wel fijner. Netflix heeft namelijk allerlei maatregelen getroffen om dit te voorkomen als je gebruik maakt van een VPN-truc.

Om dit op te lossen moet je de Chromecast verbinding laten maken met dezelfde verbinding als je VPN connectie op je smartphone en/of laptop. Ik heb dit opgelost door van een Raspberry Pi een Wi-Fi hotspot te maken, waarbij de internet verbinding via een VPN verbinding loopt.

In deze blog leg ik uit hoe ik voor elkaar heb gekregen. In mijn stappen hieronder maak ik gebruik van Private Internet Access (PIA) als VPN provider.

Raspbian

Als eerste heb ik de lite versie van Raspbian gedownload vanaf deze lokatie en met Win32DiskImager naar een SD kaart geschreven.

Vanuit veiligheidsoogpunt staat in de laatste versie van Raspbian SSH standaard uitgeschakeld. Hierdoor kun je niet remote inloggen met Putty. Dit is eenvoudig op te lossen door, nadat je image hebt gezet op je SD kaart, een leeg bestand met de naam ‘ssh’ te zetten in de boot partitie (de eerste drive-letter van je SD kaart).

Stop het SD kaartje in je Raspberry PI en sluit de USB power aan. Met behulp van je router kun je kijken welk IP-adres je Raspberry Pi heeft gekregen via DHCP. Hierna kun je met Putty inloggen op je Raspberry PI met user-naam ‘pi’ en wachtwoord ‘raspberry’. Vergeet niet je standaard paswoord te veranderen met het commando ‘passwd’.

Update de Raspberry Pi naar de laatste software:

Eventueel kun je hierna met ‘sudo raspi-config’ nog instellingen plegen naar jouw inzicht (host-name, lokalisatie en Advanced/Expand Filesystem).

Ook is het handig dat je Samba installeert zodat je eventueel altijd met een browser je files op je Raspberry Pi kunt benaderen:

Voeg nu de volgende regels toe aan de file ‘/etc/samba/smb.conf’

Restart je samba service met het volgende commando:

We hebben nu dus een werkend Operating Systeem op de SD kaart van een Raspberry PI staan.

Wi-Fi Hotspot

Om een Wi-Fi Hotpost op te zetten heb je ‘hostapd’ (hotspot) en ‘dnsmasq’ (DHCP, DNS) nodig. Installeer deze twee packages met de commando’s:

Aangezien we nogal wat aanpassingen gaan verrichten is het beste om de twee packages na installatie even te stoppen:

Configureer static IP adres voor eth0 / wlan0 interfaces

Hiervoor assign je een vast IP-adres aan je eth0 en wlan0 interface. Edit hiervoor de file ‘/etc/dhcpcd.conf’

Voeg de volgende regels toe aan deze file:

Configureer DHCP server

Als iemand met jouw Wi-Fi hotspot verbind dan moet deze natuurlijk een IP-adres krijgen. Je moet hiervoor de file ‘/etc/dnsmasq.conf’ aanpassen.

Verander de ‘resolv-file’ entry als volgt (de file ‘tun0.openvpn’ wordt straks in OpenVPN met het ‘updateresolvconf’ script gevuld bij het maken van een VPN verbinding):

Voeg de volgende regels toe aan deze file:

Configureer Hotspot

Hiervoor gebruik je de file ‘/etc/hostapd/hostapd.conf’.

Voeg de volgende regels toe aan deze file:

Kies voor NETWERK en WACHTWOORD je eigen waardes.

Nu moet je voor je Hotspot nog aangeven waar zijn configuratie file staat. Dit doe je in file ‘/etc/default/hostapd’

Zet in deze file de volgende regel:

Private Internet Access VPN

Installeer OpenVPN met commando:

Haal de profielen van Private Internet Access (PIA) op voor je OpenVPN verbinding:

Kies nu het PIA profiel waarvoor je een WiFi Hotspot wilt opzetten (ik kies hieronder USA / New-York):

Creëer file ‘/etc/openvpn/login’ die je gebruikersnaam en wachtwoord bevat van je PIA:

Verander de permissies van deze file zodat alleen de root gebruiker deze kan lezen:

Stel nu OpenVPN zo in dat deze standaard bovenstaande file gebruikt om in te loggen.

Verander de volgende regel van:

naar

Voeg verder de volgende regels toe:

Je kunt nu controleren of je VPN verbinding daadwerkelijk werkt:

Hierbij zou de output ongeveer het volgende moeten zijn:

Je wilt dat deze verbinding voortaan automatisch wordt opgezet bij elke herstart van je Raspberry Pi. Enable VPN tijdens startup met:

Nu moet je nog wat aan routering doen. Als eerste moet je IP forwarding aanzetten met de volgende commando’s:

Tenslotte moet je NAT voor je verkeer aanzetten van/naar je VPN tunnel. Ik gebruik hiervoor tun0 en eth0 (waarop internet binnenkomt).

Een zeer goede uitleg over iptables vind je hier.

Bovenstaande iptables moet je nog persistent maken. Gebruik hiervoor de ‘iptables-persistent’ en ‘netfilter-persistent’ packages. Installeer deze met:

Om de iptables persistent op te slaan geef je het volgende commando:

Om de iptables regels toe te passen tijdens startup gebruik je het commando:

Blokkeren Chromecast DNS

De Chromecast heeft een hardcoded DNS setting naar Google die roet in het eten kan gooien. Daarom wil je deze ignoren. Dit doe je met de volgende iptables commando’s:

Sla vervolgens de huidige iptables op met het commando:

Reboot nu je Raspberry Pi:

Tenslotte

Als laatste actie moet je je Chromecast opnieuw instellen. De Wi-Fi verbinding moet namelijk voortaan naar je nieuwe hotspot gaan waarop je VPN connectie draait.

Het enigste wat mijn dochter nu voortaan moet doen om de Chromecast met Netflix te gebruiken is op haar Smartphone verbinding maken met het nieuwe hotspot. Vervolgens kan ze dan content casten naar haar Chromecast. Kan ze eindelijk Grey’s Anatomy verder kijken, want die was er namelijk bij Videoland opeens afgegooid.

Tips

Ik had in het begin wat problemen met het activeren van het Access-Point. De volgende commando’s lostte dit voor mij op:

Een foutje is zo gemaakt als je met het ‘iptables’ commando bezig bent. Hieronder wat commando’s die je kunnen helpen.

Tonen huidige iptables instellingen

Verwijderen iptables instellingen
Hieronder een aantal voorbeelden. Kies zelf welk type het is (b.v. FORWARD, POSTROUTING, etc.)

Verwijderen alles instellingen m.b.t iptables

Om te controleren of je alles goed hebt gedaan kun je een zogenaamde ‘DNS leak test’ uitvoeren. Dit kun je op de volgende site doen:

Je kunt hier tevens zien of je VPN zijn werk goed doet (je IP adres moet in het buitenland zijn en je DNS ook).

Conclusie

Met een aantal simpele stappen kun je je Raspberry Pi omtoveren in een Wi-Fi Hotspot die onder water een specifieke VPN verbinding heeft. Door je Chromecast en je Smartphone met dit specifieke hotspot verbinding te laten maken kun je toch Amerikaanse Netflix via je Chromecast kijken. Bovenstaand verhaal lijkt simpel, maar ik moet eerlijkheidshalve wel zeggen dat ik het hele weekend bezig bent geweest om dit allemaal uit te zoeken 😉 .