Hat jemand eine vollständige Liste aller IP-Adressen, die vom Apple Push Notification Service verwendet werden?
Ich weiß, dass Apple ein Content-Delivery-Netzwerk verwendet, um diese Anfragen zu verteilen, und DNS-Lookups werden Server in der Nähe des Anforderers zurückliefern - das Problem besteht darin, all diese Server ausfindig zu machen, die Inhalte für die USA verarbeiten / p>
Zum Beispiel:
%Vor%usw.
Diese Liste ändert sich jedes Mal, wenn ich DNS abfrage - aber alle Adressen scheinen im selben 17.172.238.x-Bereich zu liegen - aber es gibt keine Garantie, dass ich morgen oder nächste Woche einen anderen Bereich sehen werde.
>Für den Test-Push-Server bekomme ich jedoch bereits Ergebnisse in verschiedenen Subnetzen. Manchmal bekomme ich einen Satz Adressen:
%Vor%und zu anderen Zeiten bekomme ich diese Adressen:
%Vor%Mein Server, der den Apple Push Notification Service verwendet, befindet sich hinter einer Unternehmensfirewall, und ich muss die Ports 2195 und 2196 für die Produktions- und Testgateways öffnen. Allerdings benötigt mein Firewall-Team stattdessen spezifische IP-Adressen von Hostnamen.
Ich mache mir Sorgen, wenn ich nur das Firewall-Team bitten würde, die IP-Adressen zuzulassen, die ich bisher gesehen habe, dann wird mein Server einfach aufhören, einen Tag oder eine Woche zu arbeiten anderer Bereich.
Wenn jemand eine umfassende Liste für die Produktions- und Testumgebungen hat, würde ich das schätzen.
Update: Ich habe versucht, das Firewall-Team aufzufordern, Apples gesamten IP-Block (17.0.0.0/8) zu öffnen, aber das werde ich nicht tun - ich muss eingrenzen die Adressen ein wenig.
Letzte Aktualisierung - 16.10.2016
Obwohl diese Frage zu Ende ist, dachte ich, ich würde eine Notiz hinzufügen, die meine endgültige Lösung erklärt - und es ist nicht das, was jemand, der nach einer Antwort sucht, hören möchte. Ich konnte den ständig wechselnden Adressen, die das CDN benutzt, nie voraus sein, also gab ich schließlich einen externen Server von Rackspace auf. Ich habe den kleinsten Server, der möglich ist, und das einzige, was darauf läuft, ist ein Port-Forwarder, der auf 2195 und 2916 hört und die Verbindungen zu Apple sendet.
Ich habe eine einfache iptables-Konfiguration auf dem Rackspace-Server verwendet, um nur Verbindungen auf 2195/2916 über mein Unternehmens-Gateway zuzulassen, und dann ließ mein Firewall-Team einen Pfad zur statischen IP-Adresse auf dem externen Server öffnen. Das Firewall-Team ist glücklich, wenn es einen einzigen Pfad implementiert, und der externe Server kann eine Verbindung mit dem gesamten von Apple verwendeten Bereich 17.0.0.0/8 herstellen.
Von Apple's Dokumentation (Betonung auf das interessante Bit hinzugefügt):
Push-Provider, iOS-Geräte und Mac-Computer befinden sich oft hinter Firewalls. Um Benachrichtigungen zu senden, müssen Sie den TCP-Port 2195 geöffnet haben. Um den Feedback-Service zu erreichen, müssen Sie den TCP-Port 2196 geöffnet haben. Geräte und Computer, die über WLAN mit dem Push-Dienst verbunden sind, müssen den TCP-Port 5223 geöffnet haben.
Der IP-Adressbereich für den Push-Service kann sich ändern; Die Erwartung ist, dass Provider eine Verbindung über den Hostnamen und nicht über die IP-Adresse herstellen. Der Push-Dienst verwendet ein Lastausgleichsschema, das für denselben Hostnamen eine andere IP-Adresse ergibt. Der gesamte Adressblock 17.0.0.0/8 ist jedoch Apple zugewiesen, sodass Sie diesen Bereich in Ihren Firewall-Regeln angeben können.
17.0.0.0/8 ist CIDR-Notation für 17.0.0.1 bis 17.255.255.254.
Die offizielle Antwort ist leider, dass es keine offizielle Antwort gibt :) - es sei denn, Sie halten Apples ziemlich schlampigen Ansatz für einfach, den gesamten Verkehr auf 17.0.0.0/8 zu beschränken. Der Apple-Entwickler-Support hat die gleiche Verknüpfung zur Dokumentation wie vcsjones in der ersten Antwort bereitgestellt.
Für meine spezielle Situation habe ich die IP-Adressen auf diese Bereiche eingeschränkt, nachdem ich in den letzten Wochen regelmäßig DNS überprüft habe. Beachten Sie, dass nur für den mittleren Westen der USA gilt , da Apples CDN eine Reihe von Adressen zurückgibt, die dem Server am nächsten sind, der die Abfrage durchführt.
Für gateway.push.apple.com öffne ich die Ports 2195 und 2196 an meiner Firewall für:
%Vor%Für gateway.sandbox.push.apple.com öffne ich die Ports 2195 und 2196 an meiner Firewall für:
%Vor%Da sich diese Adressen offensichtlich ändern können, habe ich eine Überwachung für meine Anwendung eingebaut, um zu erkennen, wann die APNS-Server nicht mehr erreichbar sind (und auf diese Adressbereiche zurückgreifen, anstatt DNS zu verwenden). Es ist nicht die ideale Lösung, aber es wird für den Moment funktionieren, bis ich eine Lösung mit meinen Firmennetzwerk- / Firewall-Teams erarbeiten kann ...
Tags und Links apple-push-notifications