Finally some success!!
I had a casting error in my checksum functions. I calculated the checksums by hand and I saw that I was getting the wrong values. It seems that you MUST cast a byte value to unsigned short in .Net to do the bit shifting.
If I switch from tunnel mode to listen mode everything works! I read packet and send reset and google dies an instant death. Now I just need to get that blockpage to display but I’m sure that is a problem with the seq/ack numbers.
Is there no way to do all this in tunnel mode?