I'm experiencing a similar DNS or Bonjour problem here, too.
All lookups to my ".local" names are not given to Bonjour, but to my ISP's DNS server. There were no changes to the network but only upgrading my Macs to Snow Leopard 10.6.1 from Leopard. Everything used to work just fine. I've upgraded both a MacBook Pro and a Mac mini which give me exactly the same behavior.
I have tried several things and I made an observation: My ISP's DNS server is broken giving me identical CNAME RR to any unresolvable names. If I change to use a saner DNS server, e.g. OpenDNS, my ".local" names work normal again.
With a broken DNS server (which doesn't fail on unknown names) I can't even ping myself:
------
$ hostname -f
book.local
$ ping -c1 book.local
PING kdn.ktguide.com (61.110.21.165): 56 data bytes
--- kdn.ktguide.com ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss
$ dig book.local
; <<>> DiG 9.6.0-APPLE-P2 <<>> book.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61841
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;book.local. IN A
;; ANSWER SECTION:
book.local. 43200 IN CNAME kdn.ktguide.com.
kdn.ktguide.com. 32 IN A 61.110.21.165
;; AUTHORITY SECTION:
ktguide.com. 692 IN NS ns1.ktguide.com.
ktguide.com. 692 IN NS ns2.ktguide.com.
;; ADDITIONAL SECTION:
ns1.ktguide.com. 1622 IN A 211.45.157.64
ns2.ktguide.com. 125192 IN A 211.45.158.64
;; Query time: 12 msec
;; SERVER: 168.126.63.1#53(168.126.63.1)
;; WHEN: Wed Sep 23 21:53:35 2009
;; MSG SIZE rcvd: 141
$ dig non-existent.local
; <<>> DiG 9.6.0-APPLE-P2 <<>> non-existent.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61877
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 1
;; QUESTION SECTION:
;non-existent.local. IN A
;; ANSWER SECTION:
non-existent.local. 43200 IN CNAME kdn.ktguide.com.
kdn.ktguide.com. 28 IN A 61.110.21.165
;; AUTHORITY SECTION:
ktguide.com. 688 IN NS ns2.ktguide.com.
ktguide.com. 688 IN NS ns1.ktguide.com.
;; ADDITIONAL SECTION:
ns2.ktguide.com. 156433 IN A 211.45.158.64
;; Query time: 13 msec
;; SERVER: 168.126.63.1#53(168.126.63.1)
;; WHEN: Wed Sep 23 21:53:39 2009
;; MSG SIZE rcvd: 133
$ scutil --dns
DNS configuration
resolver #1
domain : mazic.org
nameserver[0] : 168.126.63.1
nameserver[1] : 168.126.63.2
order : 200000
resolver #2
domain : local
options : mdns
timeout : 2
order : 300000
resolver #3
domain : 254.169.in-addr.arpa
options : mdns
timeout : 2
order : 300200
resolver #4
domain : 8.e.f.ip6.arpa
options : mdns
timeout : 2
order : 300400
resolver #5
domain : 9.e.f.ip6.arpa
options : mdns
timeout : 2
order : 300600
resolver #6
domain : a.e.f.ip6.arpa
options : mdns
timeout : 2
order : 300800
resolver #7
domain : b.e.f.ip6.arpa
options : mdns
timeout : 2
order : 301000
------
If I switch to a saner DNS server which gives me NXDOMAIN, ".local" name resolution comes back. (after waiting some short period; maybe after cache's flushed?)
------
$ networksetup -setdnsservers Ethernet 208.67.222.222 208.67.220.220
cp: cannot create regular file `/Library/Preferences/SystemConfiguration/preferences.plist.old': Permission denied
$ ping -c1 book.local
PING book.local (192.168.23.6): 56 data bytes
64 bytes from 192.168.23.6: icmp_seq=0 ttl=64 time=0.036 ms
--- book.local ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.036/0.036/0.036/0.000 ms
$ dig book.local
; <<>> DiG 9.6.0-APPLE-P2 <<>> book.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 56389
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;book.local. IN A
;; Query time: 158 msec
;; SERVER: 208.67.222.222#53(208.67.222.222)
;; WHEN: Wed Sep 23 22:16:55 2009
;; MSG SIZE rcvd: 28
$ dig non-existent.local
; <<>> DiG 9.6.0-APPLE-P2 <<>> non-existent.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 30156
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;non-existent.local. IN A
;; Query time: 170 msec
;; SERVER: 208.67.222.222#53(208.67.222.222)
;; WHEN: Wed Sep 23 22:17:15 2009
;; MSG SIZE rcvd: 36
$ ping -c1 maru.local
PING maru.local (192.168.23.3): 56 data bytes
64 bytes from 192.168.23.3: icmp_seq=0 ttl=64 time=0.357 ms
--- maru.local ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.357/0.357/0.357/0.000 ms
$ scutil --dns
DNS configuration
resolver #1
domain : mazic.org
nameserver[0] : 208.67.222.222
nameserver[1] : 208.67.220.220
order : 200000
resolver #2
domain : local
options : mdns
timeout : 2
order : 300000
resolver #3
domain : 254.169.in-addr.arpa
options : mdns
timeout : 2
order : 300200
resolver #4
domain : 8.e.f.ip6.arpa
options : mdns
timeout : 2
order : 300400
resolver #5
domain : 9.e.f.ip6.arpa
options : mdns
timeout : 2
order : 300600
resolver #6
domain : a.e.f.ip6.arpa
options : mdns
timeout : 2
order : 300800
resolver #7
domain : b.e.f.ip6.arpa
options : mdns
timeout : 2
order : 301000
$
------
("book" is my MacBook Pro and "maru" is my Mac mini.)