Il DNS in sè non c'entra molto, a meno di non fare uno split DNS ovvero avere un server DNS interno che risolve il nome DNS con IP locale se risolto da dentro la rete locale, mentre chiaramente dall'esterno sarà risolto con IP pubblico.
L'instradamento lo decidono le route del TCP/IP layer 3.
Se il tuo PC ha IP esempio 192.168.1.XXX / 24 (ovvero netmask 255.255.255.0) vuol dire che gli ultimi 8 bit (XXX nelll'esempio) sono la parte interna alla sottorete, per cui tutti gli IP di quella sotto rete vengono contattati in locale tramite risoluzione del MAC address e tabelle ARP.
Se invece devi inviare pacchetti a un IP che non rientra in tale sottorete, viene contattato il gateway, se c'è un gateway specifico per quell'IP o se non c'è si usa il gateway predefinito. In tal caso sta al gateway (generalmente router/firewall/ecc) instradare verso IP pubblico i pacchetti con una specifica chiamata NAT Network Address Translation generalmente usando la tecnica del masquerading per cui la coppia IP locale sorgente : porta locale viene trasformata nell'IP pubblico : porta casuale e inserito nella routing table, i pacchetti di ritorno verranno ritrasformati cercando nella routing table per reindirizzarli al corretto disposito di rete locale (sempre tramite MAC address e ARP table)
Leggere Andrew Tanenbaum - Reti di Calcolatori - fa sempre bene!