Netflix und die VPNs

Update: Netflix hat mittlerweile seine Blocking-Mechanismen verändert, die hier genannte Vorgehensweise funktioniert nicht mehr. Theoretisch könnte sie weiter funktionieren, wenn ich in der Lage wäre, nicht nur Netflix-IPs, sondern alle genutzten IP-Adressen der CDNs mittels ebtables umzubrouten. Das ist aber relativ schwer. Also hasse ich Netflix mittlerweile und die Content-Lobby gleich mit.

Wenn man sich mal anschaut, wie ich Filme und Serien beziehe, gibt es zwei große Standbeine. Zum einen habe ich eine BluRay-Ausleih-Flatrate für ~17€ im Monat. BluRays sind in ihrer Qualität leider nach wie vor unübertroffen, gerade wenn man auf die Audioqualität schaut. Natürlich kann man mit einer Brief-basierten Distribution nicht von jetzt auf gleich etwas streamen. Deswegen nutze ich dieses Angebot hauptsächlich für Filme.
Natürlich ist es schade, dass man diese Filme nicht aufbewahren und in einer Medienverwaltung wie Plex lagern kann, denn es ist illegal, den BluRay-Kopierschutz zu umgehen. Aber wenn wir mal ehrlich sind, schaut man die meisten Filme eh nur einmal.

Für Serien nutze ich hauptsächlich Netflix, weil es schneller und Binge-Watching mit der Plattform einfacher ist.
Gestern bekam ich zuhause zum ersten mal eine Fehlermeldung bei Netflix, die mich zu dieser Hilfeseite führte. Netflix macht, mit der Content-Lobby im Rücken, ernst – und versucht nun, VPN-Nutzer auszusperren.

Bei der Arbeit (und nein, ich schaue während der Arbeitszeit kein Netflix, es fiel mir nur neulich auf, als ich um 22h noch im Büro war) gibt es dieses Problem ebenfalls. Da es dort – zumindest mich – relativ wenig tangiert, forschte ich zunächst nicht weiter nach.

Hier nun ein Auszug aus meinen Chat mit einem Netflix-Support-Menschen:

Die Aussage in a nutshell ist, dass die Netflix-Server das Vorhandensein von VPNs, „Smart-DNS“-Services und Proxies nicht separat für jeden Account zu sperren versuchen, sondern über Account-Grenzen hinweg, auf Basis des Quell-Netzwerks, aus dem die Anfragen kommen.

Vielleicht sollten wir kurz noch klären, wie Netflix Geo-Protection umsetzt: das läuft alles auf DNS-Basis, deswegen funktionieren Apps wie „Smartflix“. Sie leiten die DNS-Anfragen des Netflix-Frontends je nach gewünschtem Content mit einer anderen Quell-Adresse weiter, die Geo-IP-mäßig zu dem Land gehört, in dem der zu streamende Inhalt verfügbar ist. Das eigentliche Streaming geschieht dann ohne einen Proxy oder VPN mit der tatsächlichen Absender-Adresse des Nutzers, sodass die Betreiber von Smartflix keine riesige Serverfarm brauchen, um all die Videodaten umzuleiten.

Scheinbar hat Netflix nun einen Weg gefunden, um einen Mismatch zwischen Absender-IP-Land und DNS-Server-IP-Land zu erkennen und führt auf Basis dessen eine Blacklist. Wer die Proxy-Fehlermeldung sieht, hat also oftmals selbst keinen Fehler gemacht – er greift nur aus einem blacklisted Subnet auf die Netflix-Server zu.

Um das noch einmal in aller Deutlichkeit zu sagen: Wenn einer meiner Kollegen (oder bspw. andere Menschen an einem öffentlichen Hotspot) auf die Idee kommen, Smartflix zu nutzen, haben sie mit dieser Entscheidung direkten Einfluss darauf, ob ich einen Dienst, für den ich monatlich Geld bezahle, nutzen kann.

Wie schon im Chat gesagt, kann und will ich nicht das Verhalten meiner Kollegen kontrollieren. Die Situation zuhause wird sich aus dem Umstand ergeben, dass mein gesamter Internet-Traffic über einen Server bei Netcup läuft. Zum Einen, um das Traffic-Shaping von Vodafone zu umgehen, zum Anderen, weil DOCSIS tendenziell unsicher ist.
Diesen Layer-2-VPN zu erkennen, ist technisch unmöglich, also wird es sich auch hier um das stumpfe Blacklisting eines Netcup-Subnets handeln. Yay. -.-

Was ich nun mache? Naja, wie gestern schon in einem Tweet erwähnt, nutze ich nun ebtables, um Netflix-Traffic am VPN vorbei zu brouten.
Hier nochmal ~alle Netflix-Netze zum Rauskopieren:

23.246.0.0/18
37.77.184.0/21
45.57.0.0/17
64.120.128.0/17
66.197.128.0/17
69.53.249.0/24
108.175.32.0/20
185.2.220.0/22
185.9.188.0/24
185.9.190.0/23
192.173.64.0/20
192.173.80.0/20
192.173.96.0/20
192.173.112.0/20
198.38.96.0/19
198.45.48.0/19

Weil man bei Kabel-Deutschland kein IPv6 bekommt, wenn das Modem im Bridge-Mode läuft, musste noch ein Weg her, um www.netflix.com nicht auf AAAA-Records auflösen zu lassen. Mit dnsmasq ist das relativ einfach:

/etc/dnsmasq.conf:

addn-hosts=/etc/dnsmasq.hosts
/etc/dnsmasq.hosts:
::    www.netflix.com

Allerdings funktionierte es mit der IPv6-Loopback-Adresse nicht. Wenn man eine random Link-Local-IPv6-Adresse generiert, geht's:

fd48:ce71:a56::0    www.netflix.com

Vielleicht konnte ich mit diesen Informationen ja Menschen helfen, die ähnliche Probleme wie ich haben.