Ttl
в записи SOA всегда пустое. Дело в том, что время кэширования для записей описания зоны задается либо последним аргументом данных записи SOA (версии BIND до 8.2.), либо директивой управления $TTL. Запрет на кэширование SOA определен в RFC 1035.
Вообще говоря, данное жесткое ограничение (наличие 0 в поле ttl) было снято в 1997 году (RFC 2181). Связано это было с тем, что реально требование наличия нуля в поле ttl записи SOA нигде не использовалось и не проверялось. С тех пор записи SOA могут содержать значения в поле ttl.
Поле
Очень полезна данная запись в случае, когда нужно определять обратную зону для сети класса С (в нотации CIDR маскированы первые 24 бита), которая разбита провайдером на подсети, и эти подсети розданы различным клиентам (см. RFC 2317). Оставим саму проблему за кадром до того момента, когда нам действительно понадобится делегировать подобного рода обратные зоны, а здесь приведем только ту часть файла описания "обратной" зоны, в которой применяется директива управления $GENERATE:
$GENERATE 1-63 $.0.168.192.in-addr.arpa IN CNAME $.0-63.0.168.192.in-addr.arpa. 0-63.0.168.192.in-addr.arpa. IN NS ns.kyky.ru.
$GENERATE 65-127 $.0.168.192.in-addr.arpa IN CNAME $.64-128.0.168.192.in-addr.arpa. 64-128.0.168.192.in-addr.arpa. IN NS ns.corp.ru.
В данном случае $GENERATE используется для производства однотипных RR.
Следует отметить, что $GENERATE это не стандартная директива, а расширение директив управления пакета BIND.