You can try adding
+ipv6 ipv6cp-use-ipaddr
to /etc/ppp/options. Depending on how your ISP provides IPv6 this might be enough to give the machine itself IPv6.
Many ISPs assume that a router connects with PPPoE instead of a PC, so this might not work for you. The only way to get IPv6 in this situation is to configure your machine as a router. It should then use DHCP for IPv6 to ask for Prefix Delegation. The prefix it gets can then be used to assign /64 subnets to your networks or your local machine. And if you want to provide IPv6 service to your local networks you should run radvd (router advertisement daemon) to advertise that your machine is a router.
The easiest is to use wide-dhcpdv6 for this. The basic idea is to request prefix delegation from one interface and then use that prefix to assign subnets to other interfaces, like:
interface ppp0 {
# Request Prefix Delegation on ppp0, and give the received prefix id 0
send ia-pd 0;
};
# Use subnets from the prefix with id 0
id-assoc pd 0 {
prefix-interface eth0 {
# Assign subnet 1 to eth0
sla-id 1;
};
};
Let's say that you received prefix 2001:db8:1234::/48 from your ISP. This example would then assign 2001:db8:1234:1::/64 to eth0.
A basic radvd.conf would look like:
interface eth0
{
AdvSendAdvert on;
prefix ::/64
{
AdvOnLink on;
AdvAutonomous on;
};
};
Oh, and don't forget to put
net.ipv6.conf.all.forwarding=1
in your /etc/sysctl.conf.
/etc/ppp/optionsI added it to the relevant file in/etc/ppp/peerswhich appears to achieve the same result. I think your answer could be improved slightly by mentioning whatipv6cp-use-ipaddrdoes. – kasperd Sep 11 '16 at 11:34default via fe80::203:97ff:fe27:c000 dev ppp0 proto ra metric 1024 expires 65503sec hoplimit 64but when I enable packet forwarding withnet.ipv6.conf.all.forwarding = 1the default route is removed. I can make the connection work by manually creating the route from the command line, but I am pretty sure that is not how I am supposed to do. Any obvious explanation what I did wrong, or do I need to ask a separate question about that? – kasperd Sep 11 '16 at 12:23accept_ra=2which forces it tooneven when forwarding is enabled. Also see https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt. – Sander Steffann Sep 12 '16 at 13:31defaultinterface becausesysctl.confwould be loaded before theppp0interface exists. Is there a way to only accept a default route fromppp0and not from other interfaces? – kasperd Sep 15 '16 at 22:08/etc/ppp/ipv6-up.d/default-routescript with these two lines#!/bin/sh -eip route add ::/0 via "$LLREMOTE" dev "$PPP_IFACE". I'm not sure if I should be usingPPP_REMOTEorLLREMOTEthere, both seems to have the same value. – kasperd Sep 17 '16 at 13:42