Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

So, my problem is that I just can't get IPv6 to work. Ping6 just tells me connect: Network is unreachable when I try to ping ipv6.google.com for example.

ifconfig looks like (a tad censored):

eth0      Link encap:Ethernet  HWaddr **:**:e9:b6:35:7e  
          inet addr:***.*.65.177  Bcast:***.*.65.191  Mask:255.255.255.224
          inet6 addr: fe80::16da:e9ff:feb6:357e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:* errors:0 dropped:0 overruns:0 frame:0
          TX packets:* errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:*  TX bytes:*
          Interrupt:28 Base address:0xc000 
lo        ...

route -6 returns:

Destination                    Next Hop                   Flag Met Ref Use If
fe80::/64                      ::                         U    256 0     0 eth0
fe80::/64                      ::                         U    256 0     0 tap0
::/0                           ::                         !n   -1  1  5400 lo
::1/128                        ::                         Un   0   4269387 lo
fe80::16da:e9ff:feb6:357e/128  ::                         Un   0   1   391 lo
fe80::4c7b:2bff:fef4:9db/128   ::                         Un   0   1     0 lo
ff00::/8                       ::                         U    256 0     0 eth0
ff00::/8                       ::                         U    256 0     0 tap0
::/0                           ::                         !n   -1  1  5400 lo

Another strange thing is, pinging my own IPv6 address only works if I tell ping6 to specifically use the eth0 interface with -I eth0 otherwise that'll return unknown host.

One thing I've read is that I need to specify my router in the routing table somehow, but I don't even know the router's address and I have no idea about how to find it out either (because I'm nothing like a networking expert and IPv6 seems even more confusing than IPv4 to me).

Any ideas or solutions?

share|improve this question
    
I feel bad for asking this, but does your ISP definitely support IPv6? Your router will then need to be set up for IPv6, too. Also, is this a home question, because those are off-topic here? Check out our FAQ –  Dan Sep 6 '12 at 12:28
    
@Chloe Yes definitely. The machine is a server in a proper datacenter. No home stuff going on here... –  Cobra_Fast Sep 6 '12 at 12:30
    
Fair enough, in that case you need to have a chat with whoever is in charge with the router / networking before you can proceed much further. –  Dan Sep 6 '12 at 12:33
    
And what specifically would I ask and look for? –  Cobra_Fast Sep 6 '12 at 12:33

3 Answers 3

up vote 8 down vote accepted
     inet6 addr: fe80::16da:e9ff:feb6:357e/64 Scope:Link

fe80::/10 as the "Scope" behind it states is a Link-Local address.

To connect to the rest of the internet you need a Global address (thus out of 2000::/3 at least for the next several years) and of course you need at least a default (::/0) or defaultish (2000::/3) route to a router that will actually forward your packets.

As such you have two options: 1) ask your ISP to provide you with native IPv6 2) get a tunnel (google for 'wikipedia ipv6 tunnel broker' to get a good list).

share|improve this answer

Looks like in ubuntu x86-64 12.04.2 release, IPv6 is disabled in sysctl by default, hence kernel was dropping packet processing by default, solved the problem as below:

/etc/sysctl.conf need to be modified to enable default ipv6 packet processing.

net.ipv6.conf.all.disable_ipv6 = 1 to 0
net.ipv6.conf.default.disable_ipv6 = 1 to 0
net.ipv6.conf.lo.disable_ipv6 = 1 to 0

Then, reload all these sysctl config into running kernel by:

sysctl -p as super user.

Then self ping will start working as below:

root# ping6 -I eth9.71 fd92:3b90:a7e4::a PING fd92:3b90:a7e4::a(fd92:3b90:a7e4::a) from fd92:3b90:a7e4::a eth9.71: 56 data bytes 64 bytes from fd92:3b90:a7e4::a: icmp_seq=1 ttl=64 time=0.031 ms 64 bytes from fd92:3b90:a7e4::a: icmp_seq=2 ttl=64 time=0.037 ms

P.S: Showing IPv6 route in kernel does not mean than, kernel not dropping IPv6 packets by default, sysctl need to be tuned and reloaded to confirm that fact.

root# ip -6 r s fd92:3b90:a7e4::/48 dev eth9.71 proto kernel metric 256

===

share|improve this answer
    
This has absolutely nothing to do with this question. –  Michael Hampton Sep 23 '13 at 16:07

You don't have a public IPv6 address set up on your host (public addresses start with 2xxx or 3xxx). You only have a link-local (fe80::) address set up, so you can only ping other hosts in your lan.

You have to set "-I eth0" when pinging, because you're pinging a link-local address (fe80::/64), which is set up on all your interfaces, and ping doesn't know which interface to use.

You need to contact your network admin about the network settings (IP address,, gateway, dns), and set it up. Since router advertisment is enabled by default on most machines, there is probably no router sending them out, or you would have had an autoconfigured and IPv6 address.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.