No you don't have to update the Linux kernel.
You have to identify the cause of the problem, typically this involves looking for error messages and describing the exact symptoms.
There are diagnostic tools you can use in a command-prompt window. For example.
You may need to install traceroute using
sudo apt-get install traceroute
Here's relevant extractts of what those commands produce on a working system
$ sudo ifconfig
eth0 Link encap:Ethernet HWaddr 00:ff:19:60:1a:00
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
$ netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 184.108.40.206
www.l.google.com has address 220.127.116.11
www.l.google.com has address 18.104.22.168
www.l.google.com has address 22.214.171.124
www.l.google.com has address 126.96.36.199
www.l.google.com has address 188.8.131.52
$ ping -c 5 www.google.com
PING www.l.google.com (184.108.40.206) 56(84) bytes of data.
--- www.l.google.com ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4000ms
Oops - OK Google block ping, that's OK
$ wget www.google.com
--2012-05-18 15:59:51-- http://www.google.com/
Resolving www.google.com... 220.127.116.11, 18.104.22.168, 22.214.171.124, ...
Connecting to www.google.com|126.96.36.199|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `index.html'
[ <=> ] 12,013 --.-K/s in 0.02s
2012-05-18 15:59:52 (587 KB/s) - `index.html' saved