hello list,

i'm hoping somebody can tell me how to correctly configure PPPoE IPv6 address 
negotiation, or can at least point me towards the relevant literature. it's 
rather unclear to me what configuration options there are for inet6 over pppoe.


my german ISP (Plusnet, used to be QSC) has assigned to my contract a /64 WAN 
prefix. the inet6 address of my pppoe0 interface needs to be negotiated during 
the PPPoE handshake. this however does not happen, my pppoe0 interface shows
only the link-local inet6 address after running /etc/netstart.sh pppoe0



the ISP engineers have provided me with a pcap file of a working handshake, 
presumably from a non-BSD client. they show the pppoe client sending a IP6CP 
Conf-Request message to the server, and the server responding with a IP6CP 
Conf-Request message on its own. after that, NDP RA and DHCPv6 messages handle 
the actual WAN and LAN prefix negotiation.


when i capture the PPPoE handshake on my OpenBSD machine, i can also see a 
IP6CP 
Conf-Request message from my client to the server, however in response the 
server sends a Prot-Reject LCP message, apparently confused by the clients 
message.


comparing the initial Conf-Request messages between the working and failing
scenario, i notice that the working message has a length of 46 bytes, while the
message that was rejected has a length of only 22 bytes. i also note that a
subsequent IP6CP Term-Request sent by my client was likewise rejected by the
server.


so it seems that my OpenBSD 6.5 pppoe client is not speaking the exact dialect
of IP6CP that the pppoe server expects. 



* is the Conf-Request message sent by OpenBSD pppoe(8) a well-formed IP6CP 
message?

* are there any configuration options available to tweak the IP6CP behaviour of 
pppoe(8)? 

* does anybody happen to have a working configuration for Plusnet GmbH / QSC? :)



many thanks!
/f






WORKING SCENARIO:
client > server, ethertype PPPoE S (0x8864), length 60: PPPoE  [ses 0x26f1] 
IP6CP (0x8057), length 16: IP6CP, Conf-Request (0x01), id 1, length 16
        encoded length 14 (=Option(s) length 10)
          Interface-ID Option (0x01), length 10: 32e4:dbff:fe34:4000
        0x0000:  1100 26f1 0010 8057 0101 000e 010a 32e4  ..&....W......2.
        0x0010:  dbff fe34 4000 3108 0045 6000 36ba c500  ...4@.1..E`.6...
        0x0020:  00fe 11c7 2a5c c582 3b36 0000 0000       ....*\..;6....
server > client, ethertype PPPoE S (0x8864), length 64: PPPoE  [ses 0x26f1] 
IP6CP (0x8057), length 16: IP6CP, Conf-Request (0x01), id 1, length 16
        encoded length 14 (=Option(s) length 10)
          Interface-ID Option (0x01), length 10: 0212:efff:fe71:3afa
        0x0000:  1100 26f1 0010 8057 0101 000e 010a 0212  ..&....W........
        0x0010:  efff fe71 3afa 0000 0000 0000 0000 0000  ...q:...........
        0x0020:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0030:  0000                                     ..




FAILING SCENARIO:
client > server, ethertype PPPoE S (0x8864), length 36: PPPoE  [ses 0x3175] 
IP6CP 
(0x8057), length 16: IP6CP, Conf-Request (0x01), id 6, length 16
        encoded length 14 (=Option(s) length 10)
          Interface-ID Option (0x01), length 10: d235:2d95:d846:ef19
        0x0000:  1100 3175 0010 8057 0106 000e 010a d235  ..1u...W.......5
        0x0010:  2d95 d846 ef19                           -..F..
server > client, ethertype PPPoE S (0x8864), length 60: PPPoE  [ses 0x3175] LCP 
(0
xc021), length 22: LCP, Prot-Reject (0x08), id 30, length 22
        encoded length 20 (=Option(s) length 16)
          Rejected IP6CP Protocol (0x8057)
          Rejected Packet
            0x0000:  0106 000e 010a d235 2d95 d846 ef19 0000
            0x0010:  0000
        0x0000:  1100 3175 0016 c021 081e 0014 8057 0106  ..1u...!.....W..
        0x0010:  000e 010a d235 2d95 d846 ef19 0000 0000  .....5-..F......
        0x0020:  0000 0000 0000 0000 0000 0000 0000       ..............
client > server, ethertype PPPoE S (0x8864), length 26: PPPoE  [ses 0x3175] 
IP6CP (0x8057), length 6: IP6CP, Term-Request (0x05), id 8, length 6
        0x0000:  1100 3175 0006 8057 0508 0004            ..1u...W....
server > client, ethertype PPPoE S (0x8864), length 60: PPPoE  [ses 0x3175] LCP 
(0xc021), length 12: LCP, Prot-Reject (0x08), id 31, length 12
        encoded length 10 (=Option(s) length 6)
          Rejected IP6CP Protocol (0x8057)
          Rejected Packet
            0x0000:  0508 0004 0000 0000
        0x0000:  1100 3175 000c c021 081f 000a 8057 0508  ..1u...!.....W..
        0x0010:  0004 0000 0000 0000 0000 0000 0000 0000  ................
        0x0020:  0000 0000 0000 0000 0000 dc18 2eef       ..............









uname -a:
OpenBSD feedface.com 6.5 GENERIC.MP#5 amd64


cat /etc/hostname.pppoe0:
inet 0.0.0.0 255.255.255.255 NONE \
  pppoedev em2 \
  authproto pap \
  authname 'cpe...@qsc-wia-vdsl.de' \
  authkey 'XXX' \
  up
dest 0.0.0.1
#inet6 eui64
inet6 -autoconfprivacy
inet6 autoconf
!/sbin/route add        default -ifp pppoe0 0.0.0.1



ifconfig pppoe0:
pppoe0: 
flags=248851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST,INET6_NOPRIVACY,AUTOCONF6>
 mtu 1492
        index 68 priority 0 llprio 3
        dev: em2 state: session
        sid: 0x2f94 PADI retries: 5 PADR retries: 0 time: 7d 18:16:10
        sppp: phase network authproto pap 
        groups: pppoe egress
        status: active
        inet6 fe80::d235:2d95:d846:ef19%pppoe0 ->  prefixlen 64 scopeid 0x44
        inet a.b.c.d --> w.x.y.z netmask 0xffffffff


Reply via email to