You only authorize when the source port is DNS. It's wrong.
Client sending request :
source port = dynamic
destination port = dns ports on DNS server
server replying to client :
source port=DNS port on DNS server
destination = same dynamic unpredictable port as mentioned above
so you should authorize "from any to DNS server ip and dns port" and "from DNS server ip and port to any"