L2 Switch not talking to Default Gateway

in CCNA & CCENT
So here's my setup. I have my switch configured with an ip default gateway of 192.10.10.1 . I also have 3 VLANs configured on it as well . Vlan 10- 192.10.10.2 /24 Vlan 20- 192.10.20.2 /24 Vlan 30- 192.10.30.2 /24 My router is configured with 3 subinterfaces fa0/0.10= 192.10.10.1 fa0/0.20= 192.10.20.1 fa0/0.30= 192.10.30.1 all the sub interfaces have encapsulation dot1q and the correct VLAN assigned to it. the actual interface fa0/0 has no IP address and is up/up. now my question is when I ping the switch VLAN interface 192.10.20.2 from a host that has the IP address 192.10.30.10 , I expect to time-out on my ping but for whatever reason I still get a good ICMP message back. why is that? if the switch tries to reply back to my host using its source vlan interface address 192.10.20.2 , shouldn't the packet be dropped when the Router receives the packet because the default gate way is not in the same subnet. I noticed when I looked on packet tracer , the switch was sending the packet to the Routers fa0/0.20 interface instead of the default gateway interface fa0/0.10 . I've been troubleshooting this for about an hour or so and still can't figure out why unless packet tracer isn't working properly.
Comments
CCNP R/S
CCNP R/S
In Progress: Linux+/LPIC-1, Python, Bash
Upcoming: eJPT, C|EH, CSA+, CCNA-Sec, PA-ACE
http://serverfault.com/questions/397350/what-happens-when-arp-request-comes-from-a-different-subnet
^ I found a good link with topic on this subject specifically because this question did interest me...
Answer is good and the second most liked answer was good also (and interesting). The way I was looking at it was, the arp-table on the switch was re-routing the traffic out a known used port because of prior testing. Clearing that table and starting your test from scratch would have forced it to send it out the proper port to the router which would have sent it on to the right interface anyway, since your router is handling all VLAN traffic. Of course, without your ACL's to stop it, it seemed like it should work to me.
In Progress: Linux+/LPIC-1, Python, Bash
Upcoming: eJPT, C|EH, CSA+, CCNA-Sec, PA-ACE