Using all /64 IPv6 IPs with ndppd (without routed prefix)

When you want to use a few IPs within your /64 IPv6 subnet you can assign them manually in /etc/network/interfaces

but it is not practical to assign all the IPs in the /64 block using the /etc/network/interfaces

The Linux kernel does have support for making all IPs within the subnet usable. I will walk you through the steps needed.

This command will make all the IPs within the subnet usable

ip route add local 2001:19f0:9002:a32::/64 dev lo

However all those IPs are usable within the local network. (No remote computer can use them)

Now we move on to make all the IPs usable from outside of the local network

There are two ways to do this.

1. The preferred method is to get prefix routed to the host and this is something your provider can do.
2. If your provider will not route a prefix to the host then we can use a daemon called ndppd

Most of the VPS providers I dealt with did not route the prefix for me so I went with using ndppd

Here are instructions to install and use ndppd

we install it by the following instructions

wget -O - | tar xz
cd ndppd-0.2.5
make install

after installation put the following in your /etc/ndppd.conf, replace “ens3” with your NIC name and also replace 2001:19f0:9002:a32:: with your own value.

route-ttl 30000
proxy ens3 {
router yes
timeout 500
ttl 30000
rule 2001:19f0:9002:a32::/64 {

Run ndppd in the daemon mode and you can use tcpdump to test out.

ndppd -d
tcpdump icmp6

now all your IPs within your /64 subnet should be usable.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.