Radvd is not assigning prefix

ipv6prefix

I'm currently trying to setup IPv6 address auto-configuration with router advertisement daemon (radvd) on a virtual machine running CentOS 6.5. But the eth0 interface is not obtaining that prefix.

I've obtained the ULA prefix from here.

Contents of /etc/sysctl.conf

# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 0
net.ipv6.conf.all.forwarding = 1

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

# Controls the default maxmimum size of a mesage queue
kernel.msgmnb = 65536

# Controls the maximum size of a message, in bytes
kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296

Contents of /etc/radvd.conf

# NOTE: there is no such thing as a working "by-default" configuration file. 
#       At least the prefix needs to be specified.  Please consult the radvd.conf(5)
#       man page and/or /usr/share/doc/radvd-*/radvd.conf.example for help.
#
#
interface eth0
{
    AdvSendAdvert on;
    MinRtrAdvInterval 3;
    MaxRtrAdvInterval 10;
    AdvDefaultPreference low;
    AdvHomeAgentFlag off;
    prefix fd8a:8d9d:808f:1::/64
    {
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr on;
    };

};

Contents of /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
HWADDR=52:54:00:74:d7:46
TYPE=Ethernet
UUID=af5db1cb-e809-4098-be1a-5a74dbb767b1
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
IPV6INIT=yes
IPV6_AUTOCONF=yes

I've also enabled radvd at startup through chkconfig. Though I noticed that radvd is starting after interfaces are brought up. I've tried restarting the network service afterwards but still I get the following link-local address only

#ip -6 addr show
1: lo:  mtu 16436 
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qlen 1000
    inet6 fe80::5054:ff:fe74:d746/64 scope link 
       valid_lft forever preferred_lft forever

Edit: Based on the answer given by Sander Steffann

I still need clarification on some points but I'm posting here what worked.
Contents of /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=syslog-ng-server
NETWORKING_IPV6=yes
IPV6FORWARDING=yes

Contents of /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
HWADDR=52:54:00:74:d7:46
TYPE=Ethernet
UUID=af5db1cb-e809-4098-be1a-5a74dbb767b1
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6FORWARDING=no

Removed following line from /etc/sysctl.conf

net.ipv6.conf.all.forwarding = 1

Contents of /etc/radvd.conf is as previous.

Best Answer

IPv6 auto configuration doesn't work when combined with IPv6 forwarding. On a router you usually configure static addresses, especially on the interface where you are sending out RAs.

Although this question is about Ubuntu, its answer may help you in the case where you want to use autoconf on the upstream interface and send RAs on the downstream interface: https://askubuntu.com/questions/463625/ipv6-forwarding-kills-ipv6-connection/463654#463654

Related Question