Как писал @Andy_Whitfield, ntpd не может этого сделать. Но есть альтернативы, такие как OpenNTPD и Chrony . AFAIK, Chrony также используется Android.
В моей настройке я использую хрони. Он использует непривилегированный порт для запроса удаленных серверов. У этой техники гораздо больше шансов пройти NAT. Это тот же механизм, который используется в ntpdate -q
для запросов к серверу, но только при вызове от имени непривилегированного пользователя.
Я думаю, что главная проблема, почему это иногда не работает, состоит в том, что многие маршрутизаторы сами реализовали NTP для установки своих внутренних часов. На этих устройствах порт используется и, следовательно, не может быть NAT. Это может даже иметь место, если устройство не отвечает на запросы NTP.