Mangle DNS cache traffic

I’m puzzled with basic mangle setup.
I want to differentiate traffic to make QoS and queue trees. Everything works well (sort of), but i’ve never managed to get DNS right. The problem is that i see connections to the remote DNS servers originated by the router, that are not marked with “dns_con” but with “other_con” (see the rules below).
Normal connections to the remote DNS servers appear as “dns_con” under the connection list (the ones using these servers instead of the router DNS cache), but every one started by the router (the DNS cache) with the Wan ip falls under “other_con” instead…
Any ideas why this happen, and how do i solve it? Thanks!

TL

 0   chain=prerouting action=mark-connection new-connection-mark=dns_con passthrough=yes
     dst-port=53 protocol=udp

 1   chain=prerouting action=mark-connection new-connection-mark=dns_con passthrough=yes
     dst-port=53 protocol=tcp

 2   chain=prerouting action=mark-packet new-packet-mark=dns passthrough=no
     connection-mark=dns_con

 3   chain=prerouting action=mark-connection new-connection-mark=http_con passthrough=yes
     dst-port=80,443 protocol=tcp

 4   chain=prerouting action=mark-packet new-packet-mark=http passthrough=no
     connection-mark=http_con

 5   chain=prerouting action=mark-connection new-connection-mark=p2p_con passthrough=yes
     p2p=all-p2p

 6   chain=prerouting action=mark-packet new-packet-mark=p2p passthrough=no
     connection-mark=p2p_con

 7   chain=prerouting action=mark-connection new-connection-mark=other_con passthrough=yes

 8   chain=prerouting action=mark-packet new-packet-mark=other passthrough=no
     connection-mark=other_con

for ROS internal DNS server you should use Chain=Input or Chain=Output because ROS DNS is local process
Mangle.jpg