M HYPE SPLASH
// general

Get IPv6 on PPPoE in Ubuntu

By John Peck

I have a strange situation here. If anyone can help, please do so.

We're talking about a Linux Box running as Router using Ubuntu 18.04.3 LTS, with 2 interfaces: "lan" - which connects to my internal LAN and "wan" - which connects to my ISP.

However, my ISP requires PPPoE connection, so, basically, the "wan" interface is used only a starter for the ppp0 interface.

My problem is that I cannot get IPv6 global address on this server.

I am able to successfully connect to my ISP. I already followed the tutorial from here: , but it doesn't work for me.

So, here is what I did:

  1. /etc/ppp/options:

    +ipv6 ipv6cp-use-ipaddr
  2. /etc/sysctl.conf:

    net.ipv6.conf.all.forwarding=1
    net.ipv6.conf.ppp0.accept_ra=2
  3. /etc/wide-dhcpv6/dhcp6c.conf:

    interface ppp0 { send ia-pd 2; send ia-na 1;
    };
    # Use subnets from the prefix with id 0
    id-assoc pd 2 { prefix-interface lan { # Assign subnet 1 to eth0 sla-len 8; # <----- BELANGRIJK: 8 omdat ons klein net 64 en ons groot 56 is en dat het verschil is sla-id 2; };
    };
    id-assoc na 1 { };
  4. /etc/radvd.conf:

    interface lan
    { AdvSendAdvert on; prefix ::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; };
    RDNSS 2001:4860:4860::8888 2001:4860:4860::8844 { # AdvRDNSSLifetime 3600; };
    };

My ISP told me that it doesn't use Router Advertisement, however it uses DHCPv6 Prefix Delegation and offers /64 subnets.

The problem is that I tried more configs from the net, non of them worked for me.

When I "ifconfig ppp0", it says:

inet 1.2.3.4 ...
inet6 fe80::xxxx:yyyy

No sign of a global IPv6 address.

If I turn on debugging on wide DHCP client and I examine /var/log/syslog, I see that it tries to send Solicit messages to ff02::1:2%ppp0 and the timers reset. I get no reply.

However, router advertisements are working, both on "ppp0" and on my internal lan, because I have a Default Route: "default via fe80::1" when I "ip -6 r". However, no global IPv6 address.

I suspect it something to do with DHCP. The address is not obtained correcly.

I can ping:

ping6 fe80::1%ppp0
64 bytes from...

But when trying to "ping6 google.com", it says: "Beyond scope of source address"

I need to do 2 things, in the long run:

  1. Try to get a global IPv6 address on "ppp0" so my websites can be accesible from IPv6 addresses (DNS already taken care of)

  2. I need to forward whatever /64 prefix my ISP gives me, let's say: "2001:abcd:dead:beef::/64" to my internal computers, but using a fixed part for the internal computers.[/COLOR]

For example:

Computer 1: 2001:abcd:dead:beef::1/64
Computer 2: 2001:abcd:dead:beef::2/64
Computer 3: 2001:abcd:dead:beef::3/64

I do NOT want EUI-64 addresses, NOR do I want Private Addresses. I want my computers assigned an ORDERly IPv6 address with the prefix given, regardless of the dynamic prefix.

For example, after reboot, I might get "2001:1234:beef:dead::/64". I want the same Host-part allocation using "::1", "::2", and so on...

Thank you !

1 Answer

For #1, your solution may be with the ipv6 option in your pppd conf:

+ipv6 Enable the IPv6CP and IPv6 protocols.

ipv6 , Set the local and/or remote 64-bit interface identifier. Either one may be omitted. The identifier must be specified in standard ascii notation of IPv6 addresses (e.g. ::dead:beef). If the ipv6cp-use-ipaddr option is given, the local identifier is the local IPv4 address (see above). On systems which supports a unique persistent id, such as EUI-48 derived from the Ethernet MAC address, ipv6cp-use-persistent option can be used to replace the ipv6 , option. Otherwise the identifier is randomized.

So if you used ipv6 ::1, would that do what you wanted? As an experiment you can replace ipv6cp-use-ipaddr with ipv6cp-use-persistent instead... that should give you a predictable global ipv6 for your ppp0. From there you can start tweaking your wide-dhcpv6 and radvd....

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy