Project

General

Profile

Actions

Bug #3097

closed

IPv6 over PPPoE is not working

Added by Andre Vink over 8 years ago. Updated over 8 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
-
Category:
Interfaces
Target version:
Start date:
07/20/2013
Due date:
% Done:

100%

Estimated time:
Plus Target Version:
Release Notes:
Affected Version:
2.1-IPv6
Affected Architecture:
amd64

Description

Dutch XS4All provider requires IPv6 DHCP inside PPPoE tunnel
Now the DHCP request is going over the physical interface (em0 for me) and it is not getting answered.

[2.1-RC0][admin@firewall.familievink.nl]/var/etc(6): /usr/local/sbin/dhcp6c -f -d -D -c /var/etc/dhcp6c_wan.conf -p /var/run/dhcp6c_pppoe0.pid *em0*
Jul/19/2013 08:46:50: gethwid: found an interface ath0 for DUID
Jul/19/2013 08:46:50: get_duid: generated a new DUID: 00:01:00:01:19:7b:9d:5a:74:f0:6d:80:94:48
Jul/19/2013 08:46:50: get_duid: saved generated DUID to /var/db/dhcp6c_duid
Jul/19/2013 08:46:50: dhcp6_ctl_authinit: failed to open /usr/local/etc/dhcp6cctlkey: No such file or directory
Jul/19/2013 08:46:50: client6_init: failed initialize control message authentication
Jul/19/2013 08:46:50: client6_init: skip opening control port

Here it gets stuck.

After changing the interface to pppoe0 in the config file and at the dhcp6c command line the request gets answered.

[2.1-RC0][admin@firewall.familievink.nl]/var/etc(6): /usr/local/sbin/dhcp6c -f -d -D -c /var/etc/dhcp6c_wan.conf -p /var/run/dhcp6c_pppoe0.pid pppoe0
Jul/19/2013 08:46:50: gethwid: found an interface ath0 for DUID
Jul/19/2013 08:46:50: get_duid: generated a new DUID: 00:01:00:01:19:7b:9d:5a:74:f0:6d:80:94:48
Jul/19/2013 08:46:50: get_duid: saved generated DUID to /var/db/dhcp6c_duid
Jul/19/2013 08:46:50: dhcp6_ctl_authinit: failed to open /usr/local/etc/dhcp6cctlkey: No such file or directory
Jul/19/2013 08:46:50: client6_init: failed initialize control message authentication
Jul/19/2013 08:46:50: client6_init: skip opening control port
_<SNAP>_
Jul/19/2013 08:46:50: dhcp6_reset_timer: reset a timer on pppoe0, state=INIT, timeo=0, retrans=383
Jul/19/2013 08:46:50: client6_send: a new XID (cd2303) is generated
Jul/19/2013 08:46:50: copy_option: set client ID (len 14)
Jul/19/2013 08:46:50: copyout_option: set identity association
Jul/19/2013 08:46:50: copy_option: set elapsed time (len 2)
Jul/19/2013 08:46:50: copy_option: set option request (len 4)
Jul/19/2013 08:46:50: copyout_option: set IA_PD
*Jul/19/2013 08:46:50: client6_send: send solicit to ff02::1:2%pppoe0
Jul/19/2013 08:46:50: dhcp6_reset_timer: reset a timer on pppoe0, state=SOLICIT, timeo=0, retrans=1088
Jul/19/2013 08:46:51: client6_recv: receive advertise from fe80::2a0:a50f:fc78:5530%pppoe0 on pppoe0*
Jul/19/2013 08:46:51: dhcp6_get_options: get DHCP option client ID, len 14
Jul/19/2013 08:46:51:   DUID: 00:01:00:01:19:7b:9d:5a:74:f0:6d:80:94:48
Jul/19/2013 08:46:51: dhcp6_get_options: get DHCP option server ID, len 26
Jul/19/2013 08:46:51:   DUID: 00:02:00:00:05:83:4a:4e:31:31:45:41:33:30:42:41:46:41:00:00:00:00:00:00:00:00
Jul/19/2013 08:46:51: dhcp6_get_options: get DHCP option IA_PD, len 41
Jul/19/2013 08:46:51:   IA_PD: ID=0, T1=3600, T2=5760
Jul/19/2013 08:46:51: copyin_option: get DHCP option IA_PD prefix, len 25
Jul/19/2013 08:46:51: copyin_option:   IA_PD prefix: 2001:980:93ab::/48 pltime=7200 vltime=7200
Jul/19/2013 08:46:51: dhcp6_get_options: get DHCP option identity association, len 18
Jul/19/2013 08:46:51:   IA_NA: ID=0, T1=0, T2=0
Jul/19/2013 08:46:51: copyin_option: get DHCP option status code, len 2
Jul/19/2013 08:46:51:   status code: no addresses
Jul/19/2013 08:46:51: dhcp6_get_options: get DHCP option DNS, len 32
Jul/19/2013 08:46:51: client6_recvadvert: server ID: 00:02:00:00:05:83:4a:4e:31:31:45:41:33:30:42:41:46:41:00:00:00:00:00:00:00:00, pref=-1
Jul/19/2013 08:46:51: client6_recvadvert: reset timer for pppoe0 to 0.791111
Jul/19/2013 08:46:51: select_server: picked a server (ID: 00:02:00:00:05:83:4a:4e:31:31:45:41:33:30:42:41:46:41:00:00:00:00:00:00:00:00)
Jul/19/2013 08:46:51: client6_send: a new XID (e1e230) is generated
Jul/19/2013 08:46:51: copy_option: set client ID (len 14)
Jul/19/2013 08:46:51: copy_option: set server ID (len 26)
Jul/19/2013 08:46:51: copyout_option: set status code
Jul/19/2013 08:46:51: copyout_option: set identity association
Jul/19/2013 08:46:51: copy_option: set elapsed time (len 2)
Jul/19/2013 08:46:51: copy_option: set option request (len 4)
Jul/19/2013 08:46:51: copyout_option: set IA_PD prefix
Jul/19/2013 08:46:51: copyout_option: set IA_PD
Jul/19/2013 08:46:51: client6_send: send request to ff02::1:2%pppoe0
Jul/19/2013 08:46:51: dhcp6_reset_timer: reset a timer on pppoe0, state=REQUEST, timeo=0, retrans=977
Jul/19/2013 08:46:52: client6_recv: receive reply from fe80::2a0:a50f:fc78:5530%pppoe0 on pppoe0
Jul/19/2013 08:46:52: dhcp6_get_options: get DHCP option client ID, len 14
Jul/19/2013 08:46:52:   DUID: 00:01:00:01:19:7b:9d:5a:74:f0:6d:80:94:48
Jul/19/2013 08:46:52: dhcp6_get_options: get DHCP option server ID, len 26
Jul/19/2013 08:46:52:   DUID: 00:02:00:00:05:83:4a:4e:31:31:45:41:33:30:42:41:46:41:00:00:00:00:00:00:00:00
Jul/19/2013 08:46:52: dhcp6_get_options: get DHCP option IA_PD, len 41
Jul/19/2013 08:46:52:   IA_PD: ID=0, T1=3600, T2=5760
Jul/19/2013 08:46:52: copyin_option: get DHCP option IA_PD prefix, len 25
Jul/19/2013 08:46:52: copyin_option:   IA_PD prefix: 2001:980:93ab::/48 pltime=7200 vltime=7200
*Jul/19/2013 08:46:52: dhcp6_get_options: get DHCP option identity association, len 18
Jul/19/2013 08:46:52:   IA_NA: ID=0, T1=0, T2=0
Jul/19/2013 08:46:52: copyin_option: get DHCP option status code, len 2
Jul/19/2013 08:46:52:   status code: no addresses*
Jul/19/2013 08:46:52: dhcp6_get_options: get DHCP option DNS, len 32
Jul/19/2013 08:46:52: info_printf: nameserver[0] 2001:888:0:6::66
Jul/19/2013 08:46:52: info_printf: nameserver[1] 2001:888:0:9::99
Jul/19/2013 08:46:52: get_ia: make an IA: PD-0
Jul/19/2013 08:46:52: update_prefix: create a prefix 2001:980:93ab::/48 pltime=7200, vltime=7200
Jul/19/2013 08:46:52: ifaddrconf: add an address 2001:980:93ab:afaf:fe:4aff:fec8:9c00/64 on bridge0
Jul/19/2013 08:46:52: get_ia: make an IA: NA-0
Jul/19/2013 08:46:52: update_ia: status code for NA-0: no addresses
Jul/19/2013 08:46:52: update_ia: IA NA-0 is invalidated
Jul/19/2013 08:46:52: remove_ia: remove an IA: NA-0
Jul/19/2013 08:46:52: dhcp6_reset_timer: reset a timer on pppoe0, state=INIT, timeo=0, retrans=915
Jul/19/2013 08:46:52: client6_recvreply: executes /var/etc/dhcp6c_wan_script.sh
Jul/19/2013 08:46:52: client6_script: script "/var/etc/dhcp6c_wan_script.sh" terminated
Jul/19/2013 08:46:52: dhcp6_remove_event: removing an event on pppoe0, state=REQUEST
Jul/19/2013 08:46:52: dhcp6_remove_event: removing server (ID: 00:02:00:00:05:83:4a:4e:31:31:45:41:33:30:42:41:46:41:00:00:00:00:00:00:00:00)
Jul/19/2013 08:46:52: client6_recvreply: got an expected reply, sleeping.
Jul/19/2013 08:46:53: client6_send: a new XID (3abe6) is generated
Jul/19/2013 08:46:53: copy_option: set client ID (len 14)
Jul/19/2013 08:46:53: copyout_option: set identity association
Jul/19/2013 08:46:53: copy_option: set elapsed time (len 2)
Jul/19/2013 08:46:53: copy_option: set option request (len 4)
Jul/19/2013 08:46:53: client6_send: send solicit to ff02::1:2%pppoe0
Jul/19/2013 08:46:53: dhcp6_reset_timer: reset a timer on pppoe0, state=SOLICIT, timeo=0, retrans=1079
Jul/19/2013 08:46:54: copy_option: set client ID (len 14)
Jul/19/2013 08:46:54: copyout_option: set identity association
Jul/19/2013 08:46:54: copy_option: set elapsed time (len 2)
Jul/19/2013 08:46:54: copy_option: set option request (len 4)
Jul/19/2013 08:46:54: client6_send: send solicit to ff02::1:2%pppoe0
Jul/19/2013 08:46:54: dhcp6_reset_timer: reset a timer on pppoe0, state=SOLICIT, timeo=1, retrans=2086
Jul/19/2013 08:46:56: copy_option: set client ID (len 14)
Jul/19/2013 08:46:56: copyout_option: set identity association
Jul/19/2013 08:46:56: copy_option: set elapsed time (len 2)
Jul/19/2013 08:46:56: copy_option: set option request (len 4)
Jul/19/2013 08:46:56: client6_send: send solicit to ff02::1:2%pppoe0
Jul/19/2013 08:46:56: dhcp6_reset_timer: reset a timer on pppoe0, state=SOLICIT, timeo=2, retrans=4252

As you can see the prefix delegation is working but the DHCP server is not offering an IP address. This is indeed according the specifications of XS4all.
The DHCP client keeps trying to get an address and IPv6 will never get active.
The wan configuration has a check box for only requesting the PD and not the IA but this is not working. Ater checking the box and committing the change the box returns unchecked.
Also the change is not reflected in the config file, so I decided to change the config file by hand.

After changing the dhcp6c_wan.conf the DHCP process is working

working dhcp6c_wan.conf:

interface pppoe0 {
        send ia-pd 0;   # request prefix delegation
        send rapid-commit;
        request domain-name-servers;
        request domain-name;
        script "/var/etc/dhcp6c_wan_script.sh"; # we'd like some nameservers please
};
id-assoc pd 0 {
};
[2.1-RC0][admin@firewall.familievink.nl]/var/etc(24): /usr/local/sbin/dhcp6c -d -D -f -c /var/etc/dhcp6c_wan.conf -p /var/run/dhcp6c_pppoe0.pid pppoe0
Jul/19/2013 08:35:49: get_duid: extracted an existing DUID from /var/db/dhcp6c_duid: 00:01:00:01:19:7b:8a:da:74:f0:6d:80:94:48
Jul/19/2013 08:35:49: dhcp6_ctl_authinit: failed to open /usr/local/etc/dhcp6cctlkey: No such file or directory
Jul/19/2013 08:35:49: client6_init: failed initialize control message authentication
Jul/19/2013 08:35:49: client6_init: skip opening control port
_<SNAP>_
Jul/19/2013 08:35:49: configure_pool: called
Jul/19/2013 08:35:49: clear_poolconf: called
Jul/19/2013 08:35:49: dhcp6_reset_timer: reset a timer on pppoe0, state=INIT, timeo=0, retrans=383
Jul/19/2013 08:35:50: client6_send: a new XID (d48379) is generated
Jul/19/2013 08:35:50: copy_option: set client ID (len 14)
Jul/19/2013 08:35:50: copy_option: set rapid commit (len 0)
Jul/19/2013 08:35:50: copy_option: set elapsed time (len 2)
Jul/19/2013 08:35:50: copy_option: set option request (len 4)
Jul/19/2013 08:35:50: copyout_option: set IA_PD
*Jul/19/2013 08:35:50: client6_send: send solicit to ff02::1:2%pppoe0
Jul/19/2013 08:35:50: dhcp6_reset_timer: reset a timer on pppoe0, state=SOLICIT, timeo=0, retrans=1088
Jul/19/2013 08:35:50: client6_recv: receive advertise from fe80::2a0:a50f:fc78:5530%pppoe0 on pppoe0*
Jul/19/2013 08:35:50: dhcp6_get_options: get DHCP option client ID, len 14
Jul/19/2013 08:35:50:   DUID: 00:01:00:01:19:7b:8a:da:74:f0:6d:80:94:48
Jul/19/2013 08:35:50: dhcp6_get_options: get DHCP option server ID, len 26
Jul/19/2013 08:35:50:   DUID: 00:02:00:00:05:83:4a:4e:31:31:45:41:33:30:42:41:46:41:00:00:00:00:00:00:00:00
Jul/19/2013 08:35:50: dhcp6_get_options: get DHCP option IA_PD, len 41
Jul/19/2013 08:35:50:   IA_PD: ID=0, T1=3600, T2=5760
Jul/19/2013 08:35:50: copyin_option: get DHCP option IA_PD prefix, len 25
Jul/19/2013 08:35:50: copyin_option:   IA_PD prefix: 2001:980:93ab::/48 pltime=7200 vltime=7200
Jul/19/2013 08:35:50: dhcp6_get_options: get DHCP option DNS, len 32
Jul/19/2013 08:35:50: client6_recvadvert: server ID: 00:02:00:00:05:83:4a:4e:31:31:45:41:33:30:42:41:46:41:00:00:00:00:00:00:00:00, pref=-1
Jul/19/2013 08:35:50: client6_recvadvert: unexpected advertise
Jul/19/2013 08:35:50: client6_recvadvert: reset timer for pppoe0 to 0.792155
Jul/19/2013 08:35:51: select_server: picked a server (ID: 00:02:00:00:05:83:4a:4e:31:31:45:41:33:30:42:41:46:41:00:00:00:00:00:00:00:00)
Jul/19/2013 08:35:51: client6_send: a new XID (ad175a) is generated
Jul/19/2013 08:35:51: copy_option: set client ID (len 14)
Jul/19/2013 08:35:51: copy_option: set server ID (len 26)
Jul/19/2013 08:35:51: copy_option: set elapsed time (len 2)
Jul/19/2013 08:35:51: copy_option: set option request (len 4)
Jul/19/2013 08:35:51: copyout_option: set IA_PD prefix
Jul/19/2013 08:35:51: copyout_option: set IA_PD
Jul/19/2013 08:35:51: client6_send: send request to ff02::1:2%pppoe0
Jul/19/2013 08:35:51: dhcp6_reset_timer: reset a timer on pppoe0, state=REQUEST, timeo=0, retrans=977
Jul/19/2013 08:35:51: client6_recv: receive reply from fe80::2a0:a50f:fc78:5530%pppoe0 on pppoe0
Jul/19/2013 08:35:51: dhcp6_get_options: get DHCP option client ID, len 14
Jul/19/2013 08:35:51:   DUID: 00:01:00:01:19:7b:8a:da:74:f0:6d:80:94:48
Jul/19/2013 08:35:51: dhcp6_get_options: get DHCP option server ID, len 26
Jul/19/2013 08:35:51:   DUID: 00:02:00:00:05:83:4a:4e:31:31:45:41:33:30:42:41:46:41:00:00:00:00:00:00:00:00
Jul/19/2013 08:35:51: dhcp6_get_options: get DHCP option IA_PD, len 41
Jul/19/2013 08:35:51:   IA_PD: ID=0, T1=3600, T2=5760
Jul/19/2013 08:35:51: copyin_option: get DHCP option IA_PD prefix, len 25
Jul/19/2013 08:35:51: copyin_option:   IA_PD prefix: 2001:980:93ab::/48 pltime=7200 vltime=7200
Jul/19/2013 08:35:51: dhcp6_get_options: get DHCP option DNS, len 32
Jul/19/2013 08:35:51: info_printf: nameserver[0] 2001:888:0:6::66
Jul/19/2013 08:35:51: info_printf: nameserver[1] 2001:888:0:9::99
Jul/19/2013 08:35:51: get_ia: make an IA: PD-0
Jul/19/2013 08:35:51: update_prefix: create a prefix 2001:980:93ab::/48 pltime=7200, vltime=7200
Jul/19/2013 08:35:51: client6_recvreply: executes /var/etc/dhcp6c_wan_script.sh
Jul/19/2013 08:35:52: client6_script: script "/var/etc/dhcp6c_wan_script.sh" terminated
Jul/19/2013 08:35:52: dhcp6_remove_event: removing an event on pppoe0, state=REQUEST
Jul/19/2013 08:35:52: dhcp6_remove_event: removing server (ID: 00:02:00:00:05:83:4a:4e:31:31:45:41:33:30:42:41:46:41:00:00:00:00:00:00:00:00)
*Jul/19/2013 08:35:52: client6_recvreply: got an expected reply, sleeping.*

The only things that is left is changing the IPv6 default gateway interface which was pointing to em0 to use pppoe0 and IPv6 runs again.

  • Checkbox in the wan interface configuration to only request PD is not working
  • DHCPv6 should use pppoe interface instead of physical interface
  • ipv6 default route should point to pppoe interface
  • radvd is not starting automatically
Actions #1

Updated by Andre Vink over 8 years ago

Hmzz,

Stupid, accidentally added myself as assignee, can't change it.

Actions #2

Updated by Phillip Davis over 8 years ago

Request only a IPv6 prefix - checkbox saving fixed in pull request https://github.com/pfsense/pfsense/pull/716

Actions #3

Updated by Renato Botelho over 8 years ago

  • Status changed from New to Feedback
  • Assignee changed from Andre Vink to Renato Botelho
  • Priority changed from High to Normal
  • % Done changed from 0 to 100

Pull request has been merged into master and RELENG_2_1

Actions #4

Updated by Phillip Davis over 8 years ago

This certainly won't fix all the sequence of problems reported here. Those who use this, please test with latest snapshots from about Sun Jul 21 21:46:29 onwards and report how far things work now and what things are still not implemented/working.

Actions #5

Updated by Phillip Davis over 8 years ago

There was another error in the way the "Request only a IPv6 prefix" checkbox code was originally applied on the 2.1 branch. It should be fixed by: https://github.com/pfsense/pfsense/pull/723
Once that is committed and in a build, it can be tested. Or testers can make the small changes themselves and test immediately.

Actions #6

Updated by Ermal Luçi over 8 years ago

A checkbox has been added as part of the dhcp6 option to allow to use the pppoe interface as the interface for requests.
dbb4e089188f80e0433e3f1f74d58152b23c2fe9 and 329024c8720ecc04c603989575d6eec9cb97bd83

Actions #7

Updated by Ermal Luçi over 8 years ago

  • Status changed from Feedback to Resolved
Actions #8

Updated by Ermal Luçi over 8 years ago

  • Assignee deleted (Renato Botelho)
Actions

Also available in: Atom PDF