- My ISP provides static IPv4 and /56 IPv6 subnet via DSL/PPPoE
- I was able to set up PPPoE connection with the provider and it works fine
- However, if I move the pppoe interface to VRF, I get IPv4 and IPv6 addresses but not /56 subnet.
- I tried to add only pppoe interface to vrf as well as all underlying interfaces (makes difference on Juniper) with no avail
Here is the configuration without VRF:
r2# show interfaces
ethernet eth1 {
description WAN
duplex auto
hw-id 00:0d:b9:44:54:31
speed auto
vif 35 {
description DSL-1
}
}
pppoe pppoe0 {
authentication {
password <password>
user <user>
}
default-route auto
description PPPOE-1
dhcpv6-options {
pd 0 {
length 56
}
rapid-commit
}
ipv6 {
address {
autoconf
}
}
source-interface eth1.35
}
dummy dum0 {
address 2606:6d00:19f:a800::2/128
address 2606:6d00:19f:a800::bbbb/128
}and output of dhcp6c:
r2:~# journalctl -u dhcp6c@pppoe0.service
...
Mar 23 02:19:04 r2 systemd[1]: Starting WIDE DHCPv6 client on pppoe0...
Mar 23 02:19:04 r2 dhcp6c[11822]: get_duid: extracted an existing DUID from /var/lib/dhcpv6/dhcp6c_duid: 00:01:00:01:27:ea:d3:18:00:0d:b9:44:54:30
Mar 23 02:19:04 r2 dhcp6c[11822]: dhcp6_ctl_authinit: failed to open /run/dhcp6c/dhcp6c.pppoe0.sock: No such file or directory
Mar 23 02:19:04 r2 dhcp6c[11822]: client6_init: failed initialize control message authentication
Mar 23 02:19:04 r2 dhcp6c[11822]: client6_init: skip opening control port
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>comment [### Autogenerated by interface.py ###] (37)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>comment [# man https://www.unix.com/man-page/debian/5/dhcp6c.conf/] (57)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>[interface] (9)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <5>[pppoe0] (6)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>begin of closure [{] (1)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>[send] (4)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>[ia-pd] (5)
Mar 23 02:19:04 r2 systemd[1]: Started WIDE DHCPv6 client on pppoe0.
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>[0] (1)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>end of sentence [;] (1)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>comment [# prefix delegation #0] (22)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>end of closure [}] (1)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>end of sentence [;] (1)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>[id-assoc] (8)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <15>[pd] (2)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <15>[0] (1)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <15>begin of closure [{] (1)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>[prefix] (6)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>[::] (2)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>[/] (1)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>[56] (2)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>[infinity] (8)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>end of sentence [;] (1)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>end of closure [}] (1)
Mar 23 02:19:04 r2 dhcp6c[11822]: cfdebug_print: <3>end of sentence [;] (1)
Mar 23 02:19:04 r2 dhcp6c[11822]: configure_pool: called
Mar 23 02:19:04 r2 dhcp6c[11822]: clear_poolconf: called
Mar 23 02:19:04 r2 dhcp6c[11823]: dhcp6_reset_timer: reset a timer on pppoe0, state=INIT, timeo=0, retrans=835
Mar 23 02:19:05 r2 dhcp6c[11823]: client6_send: a new XID (6d6c63) is generated
Mar 23 02:19:05 r2 dhcp6c[11823]: copy_option: set client ID (len 14)
Mar 23 02:19:05 r2 dhcp6c[11823]: copy_option: set elapsed time (len 2)
Mar 23 02:19:05 r2 dhcp6c[11823]: copyout_option: set IA_PD prefix
Mar 23 02:19:05 r2 dhcp6c[11823]: copyout_option: set IA_PD
Mar 23 02:19:05 r2 dhcp6c[11823]: client6_send: send solicit to ff02::1:2%pppoe0
Mar 23 02:19:05 r2 dhcp6c[11823]: dhcp6_reset_timer: reset a timer on pppoe0, state=SOLICIT, timeo=0, retrans=1087
Mar 23 02:19:05 r2 dhcp6c[11823]: client6_recv: receive advertise from fe80::2a0:a510:88:8ea4%pppoe0 on pppoe0
Mar 23 02:19:05 r2 dhcp6c[11823]: dhcp6_get_options: get DHCP option client ID, len 14
Mar 23 02:19:05 r2 dhcp6c[11823]: DUID: 00:01:00:01:27:ea:d3:18:00:0d:b9:44:54:30
Mar 23 02:19:05 r2 dhcp6c[11823]: dhcp6_get_options: get DHCP option server ID, len 26
Mar 23 02:19:05 r2 dhcp6c[11823]: DUID: 00:02:00:00:05:83:4a:4e:31:32:35:45:41:39:38:41:46:43:00:00:00:00:00:00:00:00
Mar 23 02:19:05 r2 dhcp6c[11823]: dhcp6_get_options: get DHCP option IA_PD, len 41
Mar 23 02:19:05 r2 dhcp6c[11823]: IA_PD: ID=0, T1=43200, T2=69120
Mar 23 02:19:05 r2 dhcp6c[11823]: copyin_option: get DHCP option IA_PD prefix, len 25
Mar 23 02:19:05 r2 dhcp6c[11823]: copyin_option: IA_PD prefix: 2606:6d00:19f:a800::/56 pltime=86400 vltime=86400
Mar 23 02:19:05 r2 dhcp6c[11823]: client6_recvadvert: server ID: 00:02:00:00:05:83:4a:4e:31:32:35:45:41:39:38:41:46:43:00:00:00:00:00:00:00:00, pref=-1
Mar 23 02:19:05 r2 dhcp6c[11823]: client6_recvadvert: reset timer for pppoe0 to 0.784840
Mar 23 02:19:06 r2 dhcp6c[11823]: select_server: picked a server (ID: 00:02:00:00:05:83:4a:4e:31:32:35:45:41:39:38:41:46:43:00:00:00:00:00:00:00:00)
Mar 23 02:19:06 r2 dhcp6c[11823]: client6_send: a new XID (faf874) is generated
Mar 23 02:19:06 r2 dhcp6c[11823]: copy_option: set client ID (len 14)
Mar 23 02:19:06 r2 dhcp6c[11823]: copy_option: set server ID (len 26)
Mar 23 02:19:06 r2 dhcp6c[11823]: copy_option: set elapsed time (len 2)
Mar 23 02:19:06 r2 dhcp6c[11823]: copyout_option: set IA_PD prefix
Mar 23 02:19:06 r2 dhcp6c[11823]: copyout_option: set IA_PD
Mar 23 02:19:06 r2 dhcp6c[11823]: client6_send: send request to ff02::1:2%pppoe0
Mar 23 02:19:06 r2 dhcp6c[11823]: dhcp6_reset_timer: reset a timer on pppoe0, state=REQUEST, timeo=0, retrans=1023
Mar 23 02:19:07 r2 dhcp6c[11823]: client6_recv: receive reply from fe80::2a0:a510:88:8ea4%pppoe0 on pppoe0
Mar 23 02:19:07 r2 dhcp6c[11823]: dhcp6_get_options: get DHCP option client ID, len 14
Mar 23 02:19:07 r2 dhcp6c[11823]: DUID: 00:01:00:01:27:ea:d3:18:00:0d:b9:44:54:30
Mar 23 02:19:07 r2 dhcp6c[11823]: dhcp6_get_options: get DHCP option server ID, len 26
Mar 23 02:19:07 r2 dhcp6c[11823]: DUID: 00:02:00:00:05:83:4a:4e:31:32:35:45:41:39:38:41:46:43:00:00:00:00:00:00:00:00
Mar 23 02:19:07 r2 dhcp6c[11823]: dhcp6_get_options: get DHCP option IA_PD, len 41
Mar 23 02:19:07 r2 dhcp6c[11823]: IA_PD: ID=0, T1=43200, T2=69120
Mar 23 02:19:07 r2 dhcp6c[11823]: copyin_option: get DHCP option IA_PD prefix, len 25
Mar 23 02:19:07 r2 dhcp6c[11823]: copyin_option: IA_PD prefix: 2606:6d00:19f:a800::/56 pltime=86400 vltime=86400
Mar 23 02:19:07 r2 dhcp6c[11823]: get_ia: make an IA: PD-0
Mar 23 02:19:07 r2 dhcp6c[11823]: update_prefix: create a prefix 2606:6d00:19f:a800::/56 pltime=86400, vltime=86400
Mar 23 02:19:07 r2 dhcp6c[11823]: dhcp6_remove_event: removing an event on pppoe0, state=REQUEST
Mar 23 02:19:07 r2 dhcp6c[11823]: dhcp6_remove_event: removing server (ID: 00:02:00:00:05:83:4a:4e:31:32:35:45:41:39:38:41:46:43:00:00:00:00:00:00:00:00)
Mar 23 02:19:07 r2 dhcp6c[11823]: client6_recvreply: got an expected reply, sleeping.As you can see from the log, the /56 subnet is allocated and I can confirm that it is working since I have a dummy interface with addresses on this net and I can ping from it.
And here is the same with pppoe interface in VRF:
r2# show vrf
name red {
table 200
}
r2# show interfaces
ethernet eth1 {
description WAN
duplex auto
hw-id 00:0d:b9:44:54:31
speed auto
vif 35 {
description DSL-1
vrf red
}
vrf red
}
pppoe pppoe0 {
authentication {
password <password>
user <user>
}
default-route auto
description PPPOE-1
dhcpv6-options {
pd 0 {
length 56
}
rapid-commit
}
ipv6 {
address {
autoconf
}
}
source-interface eth1.35
vrf red
}
dummy dum0 {
address 2606:6d00:19f:a800::2/128
address 2606:6d00:19f:a800::bbbb/128
vrf red
}and the corresponding dhcpv6c log:
Mar 23 12:27:51 r2 systemd[1]: Starting WIDE DHCPv6 client on pppoe0...
Mar 23 12:27:51 r2 dhcp6c[15235]: get_duid: extracted an existing DUID from /var/lib/dhcpv6/dhcp6c_duid: 00:01:00:01:27:ea:d3:18:00:0d:b9:44:54:30
Mar 23 12:27:51 r2 dhcp6c[15235]: dhcp6_ctl_authinit: failed to open /run/dhcp6c/dhcp6c.pppoe0.sock: No such file or directory
Mar 23 12:27:51 r2 dhcp6c[15235]: client6_init: failed initialize control message authentication
Mar 23 12:27:51 r2 dhcp6c[15235]: client6_init: skip opening control port
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>comment [### Autogenerated by interface.py ###] (37)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>comment [# man https://www.unix.com/man-page/debian/5/dhcp6c.conf/] (57)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>[interface] (9)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <5>[pppoe0] (6)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>begin of closure [{] (1)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>[send] (4)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>[ia-pd] (5)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>[0] (1)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>end of sentence [;] (1)
Mar 23 12:27:51 r2 systemd[1]: Started WIDE DHCPv6 client on pppoe0.
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>comment [# prefix delegation #0] (22)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>end of closure [}] (1)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>end of sentence [;] (1)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>[id-assoc] (8)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <15>[pd] (2)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <15>[0] (1)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <15>begin of closure [{] (1)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>[prefix] (6)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>[::] (2)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>[/] (1)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>[56] (2)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>[infinity] (8)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>end of sentence [;] (1)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>end of closure [}] (1)
Mar 23 12:27:51 r2 dhcp6c[15235]: cfdebug_print: <3>end of sentence [;] (1)
Mar 23 12:27:51 r2 dhcp6c[15235]: configure_pool: called
Mar 23 12:27:51 r2 dhcp6c[15235]: clear_poolconf: called
Mar 23 12:27:51 r2 dhcp6c[15239]: dhcp6_reset_timer: reset a timer on pppoe0, state=INIT, timeo=0, retrans=373
Mar 23 12:27:52 r2 dhcp6c[15239]: client6_send: a new XID (f350c6) is generated
Mar 23 12:27:52 r2 dhcp6c[15239]: copy_option: set client ID (len 14)
Mar 23 12:27:52 r2 dhcp6c[15239]: copy_option: set elapsed time (len 2)
Mar 23 12:27:52 r2 dhcp6c[15239]: copyout_option: set IA_PD prefix
Mar 23 12:27:52 r2 dhcp6c[15239]: copyout_option: set IA_PD
Mar 23 12:27:52 r2 dhcp6c[15239]: client6_send: send solicit to ff02::1:2%pppoe0
Mar 23 12:27:52 r2 dhcp6c[15239]: dhcp6_reset_timer: reset a timer on pppoe0, state=SOLICIT, timeo=0, retrans=1065
Mar 23 12:27:53 r2 dhcp6c[15239]: copy_option: set client ID (len 14)
Mar 23 12:27:53 r2 dhcp6c[15239]: copy_option: set elapsed time (len 2)
Mar 23 12:27:53 r2 dhcp6c[15239]: copyout_option: set IA_PD prefix
Mar 23 12:27:53 r2 dhcp6c[15239]: copyout_option: set IA_PD
Mar 23 12:27:53 r2 dhcp6c[15239]: client6_send: send solicit to ff02::1:2%pppoe0
Mar 23 12:27:53 r2 dhcp6c[15239]: dhcp6_reset_timer: reset a timer on pppoe0, state=SOLICIT, timeo=1, retrans=2115
Mar 23 12:27:55 r2 dhcp6c[15239]: copy_option: set client ID (len 14)
Mar 23 12:27:55 r2 dhcp6c[15239]: copy_option: set elapsed time (len 2)
Mar 23 12:27:55 r2 dhcp6c[15239]: copyout_option: set IA_PD prefix
Mar 23 12:27:55 r2 dhcp6c[15239]: copyout_option: set IA_PD
Mar 23 12:27:55 r2 dhcp6c[15239]: client6_send: send solicit to ff02::1:2%pppoe0
Mar 23 12:27:55 r2 dhcp6c[15239]: dhcp6_reset_timer: reset a timer on pppoe0, state=SOLICIT, timeo=2, retrans=4142
Mar 23 12:27:59 r2 dhcp6c[15239]: copy_option: set client ID (len 14)
Mar 23 12:27:59 r2 dhcp6c[15239]: copy_option: set elapsed time (len 2)
Mar 23 12:27:59 r2 dhcp6c[15239]: copyout_option: set IA_PD prefix
Mar 23 12:27:59 r2 dhcp6c[15239]: copyout_option: set IA_PD
Mar 23 12:27:59 r2 dhcp6c[15239]: client6_send: send solicit to ff02::1:2%pppoe0
Mar 23 12:27:59 r2 dhcp6c[15239]: dhcp6_reset_timer: reset a timer on pppoe0, state=SOLICIT, timeo=3, retrans=8600
Mar 23 12:28:08 r2 dhcp6c[15239]: copy_option: set client ID (len 14)
Mar 23 12:28:08 r2 dhcp6c[15239]: copy_option: set elapsed time (len 2)
Mar 23 12:28:08 r2 dhcp6c[15239]: copyout_option: set IA_PD prefix
Mar 23 12:28:08 r2 dhcp6c[15239]: copyout_option: set IA_PD
Mar 23 12:28:08 r2 dhcp6c[15239]: client6_send: send solicit to ff02::1:2%pppoe0
Mar 23 12:28:08 r2 dhcp6c[15239]: dhcp6_reset_timer: reset a timer on pppoe0, state=SOLICIT, timeo=4, retrans=17924
Mar 23 12:28:25 r2 dhcp6c[15239]: copy_option: set client ID (len 14)
Mar 23 12:28:25 r2 dhcp6c[15239]: copy_option: set elapsed time (len 2)
Mar 23 12:28:25 r2 dhcp6c[15239]: copyout_option: set IA_PD prefix
Mar 23 12:28:25 r2 dhcp6c[15239]: copyout_option: set IA_PD
Mar 23 12:28:25 r2 dhcp6c[15239]: client6_send: send solicit to ff02::1:2%pppoe0
Mar 23 12:28:25 r2 dhcp6c[15239]: dhcp6_reset_timer: reset a timer on pppoe0, state=SOLICIT, timeo=5, retrans=37489r2:~$ show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address S/L Description
--------- ---------- --- -----------
eth1 - u/u WAN
eth1.35 - u/u DSL-1
pppoe0 74.116.186.154/32 u/u PPPOE-1
2606:6d00:15:5cc4:106:12bb:e97d:fc4d/64r2:~$ ping 8.8.8.8 vrf red PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=121 time=11.5 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=121 time=11.8 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=121 time=11.6 ms 64 bytes from 8.8.8.8: icmp_seq=4 ttl=121 time=11.9 ms ^C --- 8.8.8.8 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 8ms rtt min/avg/max/mdev = 11.529/11.710/11.865/0.133 ms
r2:~$ ping 8.8.8.8 interface pppoe0 PING 8.8.8.8 (8.8.8.8) from 74.116.186.154 pppoe0: 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=121 time=11.6 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=121 time=12.0 ms ^C --- 8.8.8.8 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 2ms rtt min/avg/max/mdev = 11.642/11.828/12.015/0.215 ms
So, PPPoE connection works but /56 subnet seems not allocated.
BTW, it would be nice to report any IA-PD allocations in the output of show interfaces... but this is a topic for a separate ticket.