Re: DHCPDv6 in non-vnet jail

From: Goran Mekić <meka_at_tilda.center>
Date: Tue, 29 Mar 2022 16:11:05 UTC
On Tue, Mar 29, 2022 at 12:14:20PM +0200, Ronald Klop wrote:
> I think it will help if you share more of your configuration/logs.
Inside non-vnet jail, this is ifconfig output
cbsd0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	description: lagg0
	ether 58:9c:fc:10:9b:75
	inet 172.16.0.253 netmask 0xffffffff broadcast 172.16.0.253
	inet6 fd10:6c79:8ae5:8b91::2 prefixlen 128
	id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
	maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
	root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
	member: epair1a flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        ifmaxaddr 0 port 7 priority 128 path cost 2000
	member: epair5a flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        ifmaxaddr 0 port 11 priority 128 path cost 2000
	member: epair4a flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        ifmaxaddr 0 port 10 priority 128 path cost 2000
	member: epair3a flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        ifmaxaddr 0 port 9 priority 128 path cost 2000
	member: epair2a flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        ifmaxaddr 0 port 8 priority 128 path cost 2000
	groups: bridge
	nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

There are bunch of other interfaces, but only cbsd0 (bridge interface)
is set up with ip address.


netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags     Netif Expire
172.16.0.253       link#4             UH        cbsd0

Internet6:
Destination                       Gateway                       Flags     Netif Expire
fd10:6c79:8ae5:8b91::2            link#4                        UHS         lo0


grep -v '^#' /usr/local/etc/dhcpd6.conf

default-lease-time 2592000;
preferred-lifetime 604800;
option dhcp-renewal-time 3600;
option dhcp-rebinding-time 7200;
allow leasequery;
option dhcp6.name-servers 3ffe:501:ffff:100:200:ff:fe00:3f3e;
option dhcp6.domain-search "test.example.com","example.com";
option dhcp6.info-refresh-time 21600;
dhcpv6-lease-file-name "/var/db/dhcpd6/dhcpd6.leases";

subnet6 fd10:6c79:8ae5:8b91::/64 {
  range6 fd10:6c79:8ae5:8b91::/64;
}


ls -l /dev
total 1
crw-------  1 root  wheel   0x26 Mar 29 17:35 bpf
lrwxr-xr-x  1 root  wheel      3 Mar 28 09:31 bpf0 -> bpf
crw-rw-rw-  1 root  wheel   0x4a Mar 26 15:54 crypto
dr-xr-xr-x  2 root  wheel    512 Mar 29 03:38 fd
crw-rw-rw-  1 root  wheel   0x2a Mar 29 18:00 null
crw-rw----  1 root  nsd    0x1a5 Mar 24 23:45 pf
crw-rw----  1 root  nsd     0x4b Mar 26 15:54 pfil
dr-xr-xr-x  2 root  wheel    512 Mar 28 09:31 pts
crw-r--r--  1 root  wheel    0x8 Mar 24 23:45 random
lrwxr-xr-x  1 root  wheel      4 Mar 28 09:31 stderr -> fd/2
lrwxr-xr-x  1 root  wheel      4 Mar 28 09:31 stdin -> fd/0
lrwxr-xr-x  1 root  wheel      4 Mar 28 09:31 stdout -> fd/1
lrwxr-xr-x  1 root  wheel      6 Mar 28 09:31 urandom -> random
crw-rw-rw-  1 root  wheel   0x2b Mar 26 15:54 zero



On the host I have /etc/rtadvd.conf:
cbsd0:addr="fd10:6c79:8ae5:8b91::":raflags="m"


On the host ifconfig cbsd0
cbsd0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	description: lagg0
	ether 58:9c:fc:10:9b:75
	inet 172.16.0.254 netmask 0xffffff00 broadcast 172.16.0.255
	inet 172.16.1.254 netmask 0xffffff00 broadcast 172.16.1.255
	inet 172.16.0.253 netmask 0xffffffff broadcast 172.16.0.253
	inet6 fe80::5a9c:fcff:fe10:9b75%cbsd0 prefixlen 64 scopeid 0x4
	inet6 fd10:6c79:8ae5:8b91::1 prefixlen 64
	inet6 fd10:6c79:8ae5:8b91::2 prefixlen 128
	id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
	maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
	root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
	member: epair1a flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        ifmaxaddr 0 port 7 priority 128 path cost 2000
	member: epair5a flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        ifmaxaddr 0 port 11 priority 128 path cost 2000
	member: epair4a flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        ifmaxaddr 0 port 10 priority 128 path cost 2000
	member: epair3a flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        ifmaxaddr 0 port 9 priority 128 path cost 2000
	member: epair2a flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        ifmaxaddr 0 port 8 priority 128 path cost 2000
	groups: bridge
	nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

> Besides you can take a look with tcpdump/wireshark on what happens on different interfaces of your machines to see the traffic flow between client and server.
Running tcpdump -i cbsd0 ip6 inside the non-vnet:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on cbsd0, link-type EN10MB (Ethernet), capture size 262144 bytes
18:02:29.081325 IP6 fe80::5a9c:fcff:fe10:9b75.10482 > ff12::8384.21027: UDP, length 322
18:02:51.229813 IP6 fe80::2a0:98ff:fe7d:cad.dhcpv6-client > ff02::1:2.dhcpv6-server: dhcp6 solicit
18:02:52.338420 IP6 fe80::2a0:98ff:fe7d:cad.dhcpv6-client > ff02::1:2.dhcpv6-server: dhcp6 solicit
18:02:54.444709 IP6 fe80::2a0:98ff:fe7d:cad.dhcpv6-client > ff02::1:2.dhcpv6-server: dhcp6 solicit
18:02:58.449268 IP6 fe80::2a0:98ff:fe7d:cad.dhcpv6-client > ff02::1:2.dhcpv6-server: dhcp6 solicit
18:02:59.083071 IP6 fe80::5a9c:fcff:fe10:9b75.10482 > ff12::8384.21027: UDP, length 322
18:03:06.545104 IP6 fe80::2a0:98ff:fe7d:cad.dhcpv6-client > ff02::1:2.dhcpv6-server: dhcp6 solicit
18:03:12.355503 IP6 fe80::5a9c:fcff:fe10:9b75.10482 > ff12::8384.21027: UDP, length 322
18:03:22.890933 IP6 fe80::2a0:98ff:fe7d:cad.dhcpv6-client > ff02::1:2.dhcpv6-server: dhcp6 solicit
18:03:29.084154 IP6 fe80::5a9c:fcff:fe10:9b75.10482 > ff12::8384.21027: UDP, length 322
18:03:54.837662 IP6 fe80::2a0:98ff:fe7d:cad.dhcpv6-client > ff02::1:2.dhcpv6-server: dhcp6 solicit
18:03:59.081342 IP6 fe80::5a9c:fcff:fe10:9b75.10482 > ff12::8384.21027: UDP, length 322
18:04:29.083992 IP6 fe80::5a9c:fcff:fe10:9b75.10482 > ff12::8384.21027: UDP, length 322
18:04:41.028190 IP6 fe80::5a9c:fcff:fe10:9b75.10482 > ff12::8384.21027: UDP, length 322


That happens while I'm running dhcp6c -d -f eth0 inside vnet jail (eth0
is epair that is renamed):
Mar/29/2022 18:02:50: failed to open /usr/local/etc/dhcp6cctlkey: No such file or directory
Mar/29/2022 18:02:50: failed initialize control message authentication
Mar/29/2022 18:02:50: skip opening control port
Mar/29/2022 18:02:50: cfparse: fopen(/usr/local/etc/dhcp6c.conf): No such file or directory
Mar/29/2022 18:02:51: Sending Solicit
Mar/29/2022 18:02:52: Sending Solicit
Mar/29/2022 18:02:54: Sending Solicit
Mar/29/2022 18:02:58: Sending Solicit
Mar/29/2022 18:03:06: Sending Solicit
Mar/29/2022 18:03:22: Sending Solicit
Mar/29/2022 18:03:54: Sending Solicit



Can I provide any more info?

Regards,
meka