We provide native IPv6 support in all of our data centers. To enable IPv6, simply navigate to your Linode's "Remote Access" subtab and then click "Enable IPv6". You will be prompted to reboot your Linode.
Once you have been assigned an address, you will need to reboot in order for the IP to be routed to your Linode. Your new IPv6 address will be automatically configured, and you should be able to run the ifconfig command and see output that is similar to the following:
root@titan:~# ifconfig eth0 eth0 Link encap:Ethernet HWaddr f2:3c:91:8c:5b:84 inet addr:18.104.22.168 Bcast:22.214.171.124 Mask:255.255.255.0 inet6 addr: 2600:3c01::f03c:91ff:fe8c:5b84/64 Scope:Global inet6 addr: fe80::f03c:91ff:fe8c:5b84/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:45790 errors:0 dropped:0 overruns:0 frame:0 TX packets:17471 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:51640371 (51.6 MB) TX bytes:31004894 (31.0 MB) Interrupt:28
In this example, the IPv6 address associated with the Linode is "2600:3c01::f03c:91ff:fe8c:5b84", which is denoted by the "Scope:Global" declaration that follows it. The "/64" at the end of the addresses is part of the "CIDR" notation, which refers to the subnet that you are on. The "Scope:Link" declaration after the "fe80::f03c:91ff:fe8c:5b84/64" IP is indicative of a local link address.
To test the connection, you can use the ping6 utility:
root@titan ~ # ping6 ipv6.google.com -c 3 PING ipv6.google.com(2a00:1450:400b:c00::63) 56 data bytes 64 bytes from ipv6.google.com(2a00:1450:400b:c00::63): icmp_seq=1 ttl=55 time=17.9 ms 64 bytes from ipv6.google.com(2a00:1450:400b:c00::63): icmp_seq=2 ttl=55 time=18.0 ms 64 bytes from ipv6.google.com(2a00:1450:400b:c00::63): icmp_seq=3 ttl=55 time=17.9 ms --- ipv6.google.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 17.924/17.977/18.010/0.037 ms
Additional blocks of 4096 addresses can be requested at no charge. Addresses in these pools can be used on any of your Linodes that reside in the same facility. For example, if you had four Linodes in Newark, you could assign each of them addresses from your Newark address pool. Once your pool has been allocated, you will need to reboot your Linode(s) in order for them to be able to bring up addresses in the pool.
Your pool will be visible under the "Remote Access Tab" of the Linode Manager in a manner similar to the following:
2600:3c01::02:6000/64 - 2600:3c01::02:6fff/64 (4096 addresses)
To attach an IP to your interface, issue the following command, making sure to replace the example IP with one of your pool addresses:
ip -6 addr add 2600:3c01::02:6000/64 dev eth0
You may then verify that the IP has been brought up by issuing the ip -6 addr show eth0 command:
root@debian:~# ip -6 addr show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2600:3c01::2:6000/64 scope global valid_lft forever preferred_lft forever inet6 2600:3c01::f03c:91ff:fe96:bae3/64 scope global dynamic valid_lft 43115sec preferred_lft 43115sec inet6 fe80::f03c:91ff:fe96:bae3/64 scope link valid_lft forever preferred_lft forever
If you need to configure more than 16 IPv6 address, add a line to /etc/sysctl.conf that resembles the following:
If at any time you wish to see IPv6 addresses that are brought up on your Linode, issue the following command:
ip -6 addr show
Additionally, you can use the following command to see information about your network route:
ip -6 route show
Since addresses in your pool can be used on any of your Linodes in the same facility, you will not need to configure failover through the Linode Manager for any of your IPv6 addresses. However, you will still need to configure software on your Linode to handle the failover process.
IPv6 traffic to and from Linodes within the same facility is not counted towards your monthly transfer, so there is no need to request private IPv6 IPs.
In the section above, we explain how to bring up pooled IPv6 addresses on your Linode for immediate use. However, if networking is restarted, these addresses will no longer exist on the interface.
In the examples below, we use the following /116 pool: 2600:3c03::3d:d000/64 - 2600:3c03::3d:dfff/64. You'll want to replace those addresses with the ones you were assigned.
On Debian and Ubuntu distributions, you can use iproute2 to bring up IPv6 addresses in your /etc/network/interfaces file. In this configuration example, we'll use the ip command to add and remove the address depending on the current action. If the interface is bring brought up, add the address. If the interface is being brought down, remove the address. You can also use similar syntax if you are using static IPv4 addresses.
You should only add IPv6 addresses within the eth0 section, and not an interface label section such as eth0:0 or eth0:1.
auto eth0 iface eth0 inet dhcp up /sbin/ip -6 addr add 2600:3c03::3d:d000/64 dev eth0 up /sbin/ip -6 addr add 2600:3c03::3d:d001/64 dev eth0 up /sbin/ip -6 addr add 2600:3c03::3d:d002/64 dev eth0 down /sbin/ip -6 addr del 2600:3c03::3d:d000/64 dev eth0 down /sbin/ip -6 addr del 2600:3c03::3d:d001/64 dev eth0 down /sbin/ip -6 addr del 2600:3c03::3d:d002/64 dev eth0
In CentOS and Fedora, the configuration is quite a bit different. You need to add an IPV6ADDR_SECONDARIES line to your /etc/sysconfig/network-scripts/ifcfg-eth0 file. This line is a space separated list of the IPv6 addresses and the subnet you want brought up at boot. Here is an example configuration file.
DEVICE="eth0" BOOTPROTO="dhcp" IPV6INIT="yes" IPV6_AUTOCONF="yes" ONBOOT="yes" TYPE="Ethernet" IPV6ADDR_SECONDARIES="2600:3c03::3d:d000/64 2600:3c03::3d:d001/64 2600:3c03::3d:d002/64 2600:3c03::3d:d003/64"
To use multiple IPv6 addresses in Arch Linux, you'll want to use netcfg for your network configurations. If you haven't switched your Arch Linux Linode over to netcfg, you can follow these instructions.
We recommend that you use the /etc/network.d/examples/ethernet-iproute file as a starting point. Here is an example configuration, which assumes you already used the netcfg instructions.
CONNECTION='ethernet' DESCRIPTION='A more versatile static ethernet connection using iproute' INTERFACE='eth0' IP='dhcp' # Any valid iproute command can be placed in this array IPCFG=('-6 addr add 2600:3c03::3d:d000/64 dev eth0' '-6 addr add 2600:3c03::3d:d001/64 dev eth0' '-6 addr add 2600:3c03::3d:d002/64 dev eth0') IP6='stateless'
The configuration of additional IPv6 addresses in Gentoo is simple. To add the addresses, append the IPv6 addresses and netmask you want to the config_eth0 line in /etc/conf.d/net. The list itself is a space separated list.
# This blank configuration will automatically use DHCP for any net.* # scripts in /etc/init.d. To create a more complete configuration, # please review /usr/share/doc/openrc*/net.example* and save your configuration # in /etc/conf.d/net (this file :]!). config_eth0="dhcp 2600:3c03::3d:d000/64 2600:3c03::3d:d001/64 2600:3c03::3d:d002/64"
To add additional IPv6 addresses to your OpenSUSE system, you need to add additional IPADDR_LABEL lines in /etc/sysconfig/network/ifcfg-eth0. The label can be any string; however, the best practice is to make it an integer and increment that number for each additional address. Here's an example configuration:
BOOTPROTO='dhcp4' STARTMODE='onboot' IPADDR_1='2600:3c03::3d:d000/64' IPADDR_2='2600:3c03::3d:d001/64' IPADDR_3='2600:3c03::3d:d002/64'
This guide is licensed under a Creative Commons Attribution-NoDerivs 3.0 United States License.
Last edited by Matthew Cone on Thursday, June 7th, 2012 (r2916).