Index ¦ Archives ¦ Atom

IPv6 & chill

Si comme moi, afin de disposer chez vous d'un accès IPv6 digne de ce nom, vous utilisez les services de tunneling 6in4 de Hurricane Electric, il y a de grandes chances que la tentative de visionnage d'une vidéo sur Netflix se traduise par l'apparition du message suivant :

"You seem to be using an unblocker or proxy."

Netflix a la bonne idée de supporter IPv6, mais la possibilité de passer par des services de tunneling IPv6 (qui est une nécessité avec beaucoup de FAI) permet également d'avoir une IP (v6) de sortie d'un autre pays que celui dans lequel vous vous trouvez. Et vous permettrait par conséquent d'accéder à du contenu sur lesquels Netflix ne possède pas de droit dans votre pays.
Du coup, les ranges IPv6 de Hurricane Electric sont purement et simplement bannis par Netflix. D'où l'apparition du message plus haut, votre browser tentant naïvement d'accéder à Netflix avec le meilleur protocole IP disponible.

À part passer par un VPN, il ne reste pas vraiment d'autre solution que de forcer l'utilisation d'IPv4 sur Netflix, l'IPv4 du FAI n'étant logiquement pas bloquée.
Il serait impossible de le faire au niveau routage/firewall sans effets de bord en pagaille au niveau de votre connexion et de l'accès à d'autres sites (Netflix est hébergé sur les ranges publics d'AWS - je vous laisse imaginer le merdier), et la désactivation complète d'IPv6 n'étant même pas envisageable, le plus simple est de jouer au niveau du DNS.

Mon routeur jouant également le rôle de résolveur DNS grâce à Unbound, il est assez simple de tricher à son niveau pour qu'il ne renvoie pas d'enregistrements IPv6 lorsqu'un browser lui demande l'adresse des différents domaines de Netflix. Ne recevant de réponse valide que pour IPv4, le navigateur n'aura que ce moyen pour accéder au site.
Cette solution est bien sûr également applicable si vous disposez de Unbound comme résolveur/cache DNS local sur votre machine.

L'astuce est de définir des zones locales de type "typetransparent" (et non pas "transparent"), qui ont la particularité de surcharger une zone uniquement au niveau des enregistrements définis localement, et de continuer à résoudre le reste de la zone de manière habituelle.
On ajoute donc dans son unbound.conf :

    local-zone: netflix.com typetransparent
    local-data: "netflix.com AAAA ::"
    local-zone: www.netflix.com typetransparent
    local-data: "www.netflix.com AAAA ::"
    local-zone: customerevents.netflix.com typetransparent
    local-data: "customerevents.netflix.com AAAA ::"
    local-zone: nflximg.net typetransparent
    local-data: "nflximg.net AAAA ::"

Ainsi, on renvoie l'IP :: (unspecified, indique une absence d'adresse : RFC4291) pour ces 4 entrées DNS IPv6.
D'autres domaines sont utilisés par Netflix, mais mes tests ont montré que ne surcharger que ceux-ci suffisait à basculer entièrement en IPv4 au niveau de la lecture d'une vidéo.

On constate bien que si les réponses AAAA (IPv6) sont écrasées comme prévu, les enregistrements A (IPv4) ne sont eux pas affectés :

~/ $ dig AAAA netflix.com

; <<>> DiG 9.10.4-P3 <<>> AAAA netflix.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8338
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;netflix.com.           IN  AAAA

;; ANSWER SECTION:
netflix.com.        3600    IN  AAAA    ::

;; Query time: 0 msec
;; SERVER: 192.168.8.1#53(192.168.8.1)
;; WHEN: Wed Oct 05 01:58:54 CEST 2016
;; MSG SIZE  rcvd: 68
~/ $ dig A netflix.com

; <<>> DiG 9.10.4-P3 <<>> A netflix.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9869
;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 4, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;netflix.com.           IN  A

;; ANSWER SECTION:
netflix.com.        60  IN  A   52.31.20.238
netflix.com.        60  IN  A   52.31.28.248
netflix.com.        60  IN  A   52.30.59.81
netflix.com.        60  IN  A   52.30.240.219
netflix.com.        60  IN  A   52.48.1.130
netflix.com.        60  IN  A   52.31.5.90
netflix.com.        60  IN  A   52.48.104.170
netflix.com.        60  IN  A   52.48.183.155

;; AUTHORITY SECTION:
netflix.com.        172800  IN  NS  ns-1372.awsdns-43.org.
netflix.com.        172800  IN  NS  ns-1984.awsdns-56.co.uk.
netflix.com.        172800  IN  NS  ns-659.awsdns-18.net.
netflix.com.        172800  IN  NS  ns-81.awsdns-10.com.

;; Query time: 32 msec
;; SERVER: 192.168.8.1#53(192.168.8.1)
;; WHEN: Wed Oct 05 02:03:45 CEST 2016
;; MSG SIZE  rcvd: 304

Et ça marche.
Un peu dommage de devoir en arriver à bricoler pour se priver d'IPv6 sur un site justement compatible, mais pas vraiment le choix.

yolops.net, by dek | CC-BY-NC-SA 4.0 | theme by Giulio Fidente