First of all I can ensure you that packer is using the public DNS name that the AWS API returns for the instance. (See
https://github.com/hashicorp/packer/blob/master/builder/amazon/common/ssh.go#L45-L48)
And there isn't really anything as SSH w/DNS. If you SSH to a DNS name the host resolves the DNS name and uses the IP address. (Otherwise please clarify in which IPv4 header field the DNS host name is put and how it's routed.)
Some steps to trouble shoot this:
1) Check the DNS hostname the instance returns as its public DNS name in the API/AWS Console.
2) Check which IP it resolves to (dig <hostname>)
3) Check which DNS name you whitelisted in the FW
4) Check which IP address the FW resolved this DNS name to
If you ant to keep the EC2 instance running while trouble shooting and enable verbose debug messages do: PACKER_LOG=1 packer build -on-error=ask <template.json>