3 votes

Siri sur macOS derrière un proxy d'entreprise

Je rencontre un problème où Siri ne peut pas se connecter à ses serveurs derrière notre connexion proxy d'entreprise. Ce qui est intéressant, c'est que ce n'est pas un problème sur nos iPhones derrière le même proxy.

Des idées ?

0 votes

Je suppose qu'ils contactent des serveurs différents et que ceux de macOS sont bloqués quelque part dans le réseau de votre organisation. Cependant, je n'en suis pas certain.

0 votes

D'accord avec @tubedogg. Votre iPhone peut ne pas pouvoir l'utiliser en wifi, il passe donc en cellulaire pour contacter les serveurs Apple.

5voto

James G Points 66

Je gère un proxy Squid pour mon organisation et lorsque j'essaie d'utiliser Siri dans Sierra, les entrées de journal suivantes sont enregistrées :

1474540244.610      0 macos-sierra-host.local TAG_NONE/400 4410 NONE error:invalid-request - HIER_NONE/- text/html

Je ne suis pas tout à fait sûr de ce qu'il demande, donc c'est le moment de sortir le marteau tcpdump je suppose. Je reviendrai si j'ai d'autres informations.

MODIFICATION 1 - 22-Sep-2016 10:58 UTC

On dirait que Siri n'utilise pas une URL valide lorsqu'il demande via un proxy. Voici les en-têtes HTTP de Squid après une tentative de connexion Siri :

HTTP/1.1 400 Requête incorrecte
Server: squid/3.5.20
Mime-Version: 1.0
Date: Thu, 22 Sep 2016 10:42:01 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 4064
X-Squid-Error: ERR_INVALID_REQ 0
Vary: Accept-Language
Content-Language: en
X-Cache: MISS from proxy.local
Via: 1.1 proxy.local (squid/3.5.20)
Connection: close

Les détails dans le message d'erreur (envoyé par Squid mais jamais vu par l'utilisateur) sont :

Une erreur de requête invalide a été rencontrée lors de la tentative de traitement de la demande :

&# 22;&# 3;&# 1;

Quelques problèmes possibles sont :

  • Méthode de requête manquante ou inconnue.
  • Identifiant HTTP manquant (HTTP/1.0).
  • La requête est trop grande.
  • Longueur du contenu manquante pour les requêtes POST ou PUT.
  • Caractère illégal dans le nom d'hôte ; les tirets bas ne sont pas autorisés.
  • La fonction Expect: HTTP/1.1 est demandée à partir d'un logiciel HTTP/1.0.

Donc - il semble que je vais devoir utiliser encore plus de tcpdump pour essayer de trouver à quoi ressemble cette demande originale (où elle va, etc.). Restez à l'écoute.

MODIFICATION 2 - 22-Sep-2016 11:16 UTC

Le problème est que Siri utilise TCP/443 mais n'utilise pas HTTPS. Par conséquent, un proxy HTTP comme Squid va bloquer ces connexions. La bonne nouvelle c'est que j'ai identifié que les connexions sortantes de Siri résolvent un enregistrement A pour origin.guzzoni-apple.com.akadns.net puis se connectent à celui-ci sur le port 443. À ce stade, il initie un handshake TLS et le reste est chiffré. Donc, merci Apple de l'avoir chiffré, mais pour utiliser un port réservé pour du trafic non-HTTPS. Sérieusement - quoi ?!

Voici une solution

J'ai fouillé dans de nombreuses (beaucoup) requêtes DNS et il semble qu'elles résolvent toutes origin.guzzoni-apple.com.akadns.net dans la plage d'adresses 17.252.0.0/16 - c'est une partie de la plage plus large d'Apple 17.0.0.0/8. Cela devrait vous permettre d'envoyer tout ce qui est destiné à 17.252.0.0 directement (soit via une configuration de proxy, soit PAC/WPAD). Malheureusement, cela risque également de capturer d'autres trafics que vous ne voulez pas contourner votre proxy aussi :-/

Jusqu'à ce qu'Apple décide d'utiliser un protocole HTTPS réel pour Siri sur Sierra ou d'utiliser un port différent (contrairement à l'actuel détournement de TCP/443 !!!), on est pratiquement fichus.

0 votes

Pas de soucis Coby. J'ai essayé plusieurs mécanismes différents pour envoyer directement les clients (fichier WPAD/PAC, ACL, même des exceptions de proxy côté client) mais Siri semble utiliser le proxy de toute façon. La seule façon que j'ai de faire fonctionner Siri sur Sierra est de désactiver complètement la configuration du proxy sur le client. J'ai parlé avec un ami qui a travaillé sur l'implémentation de Siri chez Apple et ils sont au courant (apparemment)... que cela se traduise par une "action" nous devrons attendre pour voir.

1voto

eMaX Points 11

Voici cette solution pour le fichier pac :

if (
   (shExpMatch(url, "*guzzoni.apple.com*")) ||
   (shExpMatch(url, "*.guzzoni-apple.com.akadns.net*"))
)
return "DIRECT";

Source : http://blog.mansshardt.net/siri-ios-macos-hinter-squid-proxy-zum-laufen-bringen/

0 votes

Le domaine guzzoni.apple.com est ce dont j'avais besoin d'ajouter à ma liste blanche dans mon cas. Pour moi, il se résout en guzzoni-apple-com.v.aaplimg.com

0voto

Tetsujin Points 95239

Pas vraiment une réponse mais plutôt un "point de départ"...

Il y a une liste complète des numéros de port utilisés par Apple sur
Apple KB : Ports TCP et UDP utilisés par les produits logiciels Apple
[trop long à copier ici]

Vous pouvez également ouvrir pratiquement tout l'espace d'adresse 17.x.x.x, car il est entièrement détenu par Apple.

Il affirme que Siri n'a besoin que du port 443, https/SSL [qui serait probablement déjà ouvert de toute façon]

0voto

cal Points 221

Je peux confirmer les conclusions de James dans mon organisation : Siri (macOS) ne fonctionne qu'avec le proxy désactivé. Nous utilisons un produit proxy différent (via un fichier PAC, FYI), mais les résultats sont les mêmes. Testé avec la version publique de macOS Sierra 10.12.2 (16C68).

@Tetsujin - Malgré le "8 janv. 2017", Apple ne l'a pas mis à jour pour inclure "Siri (macOS)"; ils spécifient actuellement uniquement "Siri (iOS)". Pour paraphraser le commentaire de James, "ce n'est pas le Siri de votre iPhone".

Aussi, si les journaux Squid de lui sont corrects et que origin.guzzoni-apple.com.akadns.net est ce que Siri (macOS) utilise ; alors l'exemption de wildcard pour le 17.0.0.0/8 d'Apple serait inutile (pour le domaine "akadns.net").

0voto

Phtagn Points 1

J'ai réussi à le faire fonctionner en mettant privoxy devant squid. Je n'ai aucune idée pourquoi ça fonctionne, remarquez, mais ça fonctionne de manière fiable. Je peux partager les fichiers de configuration si vous le souhaitez. J'ai essayé WPAD/PAC avant, mais Siri ne respecte pas et passe quand même par squid.

0 votes

Pas une réponse, juste essayer d'aller dans la bonne direction... cela pourrait aider quelqu'un d'autre ? J'ai passé 3 jours à essayer de comprendre cela (Siri + proxy squid). J'ai même configuré squid pour autoriser toutes les adresses IP et les ports (1-65k), et Siri est la seule chose qui ne fonctionne pas. Je suis intéressé par la solution de Phtagn qui consiste à utiliser privoxy. J'aimerais voir les fichiers de configuration s'il/elle est toujours présent(e).

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X