How to debug communication between your server and Apple APNS

I had a problem with my Server (IBM Traveler) to send push messages with Apple Push Notification Service (APNS). And not found a good information about how to check communication with APNS. In this article, i share how to debug using Tcpdump and Wireshark.

=How communication between You Server/Traveler and Apple APNS works?=

You can get details here.

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/APNSOverview.html



If have problems between your Server/IBM Traveler and Apple APNS, you can use tcpdump and wireshark to debug traffic between these 2 services.

=How can i found this information on Wireshark?=

First you need to collect be using tcpdump

tcpdump -w myserver_apple_capture.pcap -i any -ePnn -s 1500 host 192.168.253.103 and port 2195

After collect data open this file in Wireshark.

Traveler is communicating with Apple on tcp/2195, so find a packet going to tcp/2195 at Apple's IP address, right-click on it, and select "Decode As", like this:



Then, in the dialog box, tell Wireshark to decode port 2195 as SSL, like this:



When you hit OK, you'll see that Wireshark now identifies SSL/TLS. In this image you can see Client Hello and a Server Hello, that means the TLS handshake, between Traveler and Apple Push.



In this example, my server is connecting to Apple, but NOT receives a Server Hello (TLS Handshake) from Apple. So, push cannot be sent to iOS devices.



=How can i found this information on Tcpdump?=

If you have experience with tcpdump, you can see this example useful:

Example of command to check a correct communication between Traveler and Apple APNS.

tcpdump -i any -ePnn -s 1500 host 192.168.253.103 and port 2195

Result:

11:14:55.854401  eth3-02.21[in ]: 192.168.253.103.61983 > 17.188.134.26.2195: S 1367157684:1367157684(0) win 14600  11:14:55.855457     eth1-07[out]: 192.168.253.103.61983 > 17.188.134.26.2195: S 1367157684:1367157684(0) win 14600  11:14:56.044988  eth3-02.21[out]: 17.188.134.26.2195 > 192.168.253.103.61983: S 2807876383:2807876383(0) ack 1367157685 win 28960  11:14:56.044992     eth3-02[out]: 17.188.134.26.2195 > 192.168.253.103.61983: S 2807876383:2807876383(0) ack 1367157685 win 28960  11:14:56.061795  eth3-02.21[in ]: 170.66.1.140.12970 > 17.188.134.26.2195:. ack 2807876384 win 115  11:14:56.061816  eth3-02.21[in ]: 170.66.1.140.12970 > 17.188.134.26.2195: P 0:131(131) ack 1 win 115  11:14:56.251950  eth3-02.21[out]: 17.188.134.26.2195 > 192.168.253.103.61983:. ack 132 win 235  11:14:56.251953     eth3-02[out]: 17.188.134.26.2195 > 192.168.253.103.61983:. ack 132 win 235  11:14:56.253137  eth3-02.21[out]: 17.188.134.26.2195 > 192.168.253.103.61983:. 1:1449(1448) ack 132 win 235  11:14:56.253140     eth3-02[out]: 17.188.134.26.2195 > 192.168.253.103.61983:. 1:1449(1448) ack 132 win 235  11:14:56.253230  eth3-02.21[out]: 17.188.134.26.2195 > 192.168.253.103.61983:. 1449:2897(1448) ack 132 win 235  11:14:56.253232     eth3-02[out]: 17.188.134.26.2195 > 192.168.253.103.61983:. 1449:2897(1448) ack 132 win 235  11:14:56.253278  eth3-02.21[out]: 17.188.134.26.2195 > 192.168.253.103.61983: P 2897:3543(646) ack 132 win 235  11:14:56.253279     eth3-02[out]: 17.188.134.26.2195 > 192.168.253.103.61983: P 2897:3543(646) ack 132 win 235  11:14:56.253564  eth3-02.21[in ]: 170.66.1.140.12970 > 17.188.134.26.2195:. ack 1449 win 137  11:14:56.253641  eth3-02.21[in ]: 170.66.1.140.12970 > 17.188.134.26.2195:. ack 3543 win 160  11:14:56.269128  eth3-02.21[in ]: 192.168.253.103.61983 > 17.188.134.26.2195:. 132:1580(1448) ack 3543 win 160 <nop,nop,timestamp 48273186 460176939> 11:14:56.269133  eth3-02.21[in ]: 192.168.253.103.61983 > 17.188.134.26.2195: P 1580:1984(404) ack 3543 win 160 <nop,nop,timestamp 48273186 460176939> 11:14:56.459549  eth3-02.21[out]: 17.188.134.26.2195 > 192.168.253.103.61983:. ack 1984 win 280 <nop,nop,timestamp 460177146 48273186> 11:14:56.459552     eth3-02[out]: 17.188.134.26.2195 > 192.168.253.103.61983:. ack 1984 win 280 <nop,nop,timestamp 460177146 48273186> 11:14:56.459995  eth3-02.21[in ]: 170.66.1.140.12970 > 17.188.134.26.2195: P 1983:2309(326) ack 3543 win 160 <nop,nop,timestamp 48273377 460177146> 11:14:56.651364  eth3-02.21[out]: 17.188.134.26.2195 > 192.168.253.103.61983: P 3543:3602(59) ack 2310 win 303 <nop,nop,timestamp 460177338 48273377> 11:14:56.651368     eth3-02[out]: 17.188.134.26.2195 > 192.168.253.103.61983: P 3543:3602(59) ack 2310 win 303 <nop,nop,timestamp 460177338 48273377> 11:14:56.652869  eth3-02.21[in ]: 192.168.253.103.61983 > 17.188.134.26.2195: P 2310:2635(325) ack 3602 win 160 <nop,nop,timestamp 48273570 460177338> 11:14:56.884952  eth3-02.21[out]: 17.188.134.26.2195 > 192.168.253.103.61983:. ack 2635 win 326 <nop,nop,timestamp 460177570 48273570> 11:14:56.884956     eth3-02[out]: 17.188.134.26.2195 > 192.168.253.103.61983:. ack 2635 win 326 <nop,nop,timestamp 460177570 48273570> 77 packets captured 309 packets received by filter 17 packets dropped by kernel

=How to test communication using openssl?=

Maybe can be a problem with TLS Certificates, you use this technote:

https://developer.apple.com/library/content/technotes/tn2265/_index.html#//apple_ref/doc/uid/DTS40010376-CH1-TNTAG3

= Ver também =


 * Lotus Traveler: Tuning English
 * Lotus Traveler: Configurando Alta Disponibilidade
 * Lotus Domino: Redirecionando Output para um arquivo e executando um shell
 * IBM Domino: Coletando estatísticas de um servidor Domino via HTTP


 * Mais Artigos sobre IBM Domino, IBM Notes e IBM Traveler