Dhcpv6 ipv6 ip via tethered Jetpack MiFi 7730L using if_urndis.ko



  • Hello! Im running pfsense 2.3.3. Im unable to get a dhcpv6 address from my Jetpack MiFi 7730L to pfsense wan port ue0. Ive added the if_urndis.ko kernel module by hand to /boot/kernel and added it via loader.conf. Ive rebooted and set the resulting ue0 interface as the wan. Turned on ipv4 dhcp (ipv4 connectivity works great. That is fine) and ipv6 dhcp. Ive set /64 as the dhcp prefix length. Ive checked and unchecked send ipv6 prefix hint.

    dhcpv6 wont start unless I check the box do not wait for RA which is odd. Probably part of the problem.
    Ive checked the link local IP on ue0 and I AM able to ping the link local ip on the Jetpack mifi
    If I pair the jetpack via USB to my Linux laptop it comes up and I DO get an ipv6 global ip(s) so I know its working for ipv6
    I am unable to ping ff01::2 or ff02::2 (forgot which of the multicast ips I should be able to ping). I think that is a problem. I am able to ping ff01::1
    Ive tried killing the dhcpv6 DUID and restarting dhcpv6. Nope.
    I have enabled ipv6 via the general/advanced settings (I wouldnt be able to ping link local addresses otherwise)
    Is ipv6 not fully functional for freebsd if_urndis.ko in pfsense?

    Here is an excerpt from dhcp.log for dhcp6c only
    Mar  4 17:00:30 plunk dhcp6c[98556]: extracted an existing DUID from /var/db/dhcp6c_duid: 00:01:00:01:20:4d:f3:f3:00:0c:29:8c:91:73
    Mar  4 17:00:30 plunk dhcp6c[98556]: failed to open /usr/local/etc/dhcp6cctlkey: No such file or directory
    Mar  4 17:00:30 plunk dhcp6c[98556]: failed initialize control message authentication
    Mar  4 17:00:30 plunk dhcp6c[98556]: skip opening control port
    Mar  4 17:00:30 plunk dhcp6c[98556]: <3>[interface] (9)
    Mar  4 17:00:30 plunk dhcp6c[98556]: <5>[ue0] (3)
    Mar  4 17:00:30 plunk dhcp6c[98556]: <3>begin of closure [{] (1)
    Mar  4 17:00:30 plunk dhcp6c[98556]: <3>[script] (6)
    Mar  4 17:00:30 plunk dhcp6c[98556]: <3>["/var/etc/dhcp6c_wan_script.sh"] (31)
    Mar  4 17:00:30 plunk dhcp6c[98556]: <3>end of sentence [;] (1)
    Mar  4 17:00:30 plunk dhcp6c[98556]: <3>end of closure [}] (1)
    Mar  4 17:00:30 plunk dhcp6c[98556]: <3>end of sentence [;] (1)
    Mar  4 17:00:30 plunk dhcp6c[98556]: called
    Mar  4 17:00:30 plunk dhcp6c[98556]: called
    Mar  4 17:00:30 plunk dhcp6c[98856]: reset a timer on ue0, state=INIT, timeo=0, retrans=383
    Mar  4 17:00:31 plunk dhcp6c[98856]: Sending Solicit
    Mar  4 17:00:31 plunk dhcp6c[98856]: a new XID (63c80f) is generated
    Mar  4 17:00:31 plunk dhcp6c[98856]: set client ID (len 14)
    Mar  4 17:00:31 plunk dhcp6c[98856]: set elapsed time (len 2)
    Mar  4 17:00:31 plunk dhcp6c[98856]: send solicit to ff02::1:2%ue0
    Mar  4 17:00:31 plunk dhcp6c[98856]: reset a timer on ue0, state=SOLICIT, timeo=0, retrans=1088
    Mar  4 17:00:32 plunk dhcp6c[98856]: Sending Solicit
    Mar  4 17:00:32 plunk dhcp6c[98856]: set client ID (len 14)
    Mar  4 17:00:32 plunk dhcp6c[98856]: set elapsed time (len 2)
    Mar  4 17:00:32 plunk dhcp6c[98856]: send solicit to ff02::1:2%ue0
    Mar  4 17:00:32 plunk dhcp6c[98856]: reset a timer on ue0, state=SOLICIT, timeo=1, retrans=2151
    Mar  4 17:00:34 plunk dhcp6c[98856]: Sending Solicit
    Mar  4 17:00:34 plunk dhcp6c[98856]: set client ID (len 14)
    Mar  4 17:00:34 plunk dhcp6c[98856]: set elapsed time (len 2)
    Mar  4 17:00:34 plunk dhcp6c[98856]: send solicit to ff02::1:2%ue0
    Mar  4 17:00:34 plunk dhcp6c[98856]: reset a timer on ue0, state=SOLICIT, timeo=2, retrans=4283
    Mar  4 17:00:38 plunk dhcp6c[98856]: Sending Solicit
    Mar  4 17:00:38 plunk dhcp6c[98856]: set client ID (len 14)
    Mar  4 17:00:38 plunk dhcp6c[98856]: set elapsed time (len 2)
    Mar  4 17:00:38 plunk dhcp6c[98856]: send solicit to ff02::1:2%ue0
    Mar  4 17:00:38 plunk dhcp6c[98856]: reset a timer on ue0, state=SOLICIT, timeo=3, retrans=8905
    Mar  4 17:00:47 plunk dhcp6c[98856]: Sending Solicit
    Mar  4 17:00:47 plunk dhcp6c[98856]: set client ID (len 14)
    Mar  4 17:00:47 plunk dhcp6c[98856]: set elapsed time (len 2)
    Mar  4 17:00:47 plunk dhcp6c[98856]: send solicit to ff02::1:2%ue0
    Mar  4 17:00:47 plunk dhcp6c[98856]: reset a timer on ue0, state=SOLICIT, timeo=4, retrans=17217
    Mar  4 17:01:05 plunk dhcp6c[98856]: Sending Solicit
    Mar  4 17:01:05 plunk dhcp6c[98856]: set client ID (len 14)
    Mar  4 17:01:05 plunk dhcp6c[98856]: set elapsed time (len 2)
    Mar  4 17:01:05 plunk dhcp6c[98856]: send solicit to ff02::1:2%ue0
    Mar  4 17:01:05 plunk dhcp6c[98856]: reset a timer on ue0, state=SOLICIT, timeo=5, retrans=35098
    Mar  4 17:01:40 plunk dhcp6c[98856]: Sending Solicit
    Mar  4 17:01:40 plunk dhcp6c[98856]: set client ID (len 14)
    Mar  4 17:01:40 plunk dhcp6c[98856]: set elapsed time (len 2)
    Mar  4 17:01:40 plunk dhcp6c[98856]: send solicit to ff02::1:2%ue0
    Mar  4 17:01:40 plunk dhcp6c[98856]: reset a timer on ue0, state=SOLICIT, timeo=6, retrans=68413
    Mar  4 17:02:48 plunk dhcp6c[98856]: Sending Solicit
    Mar  4 17:02:48 plunk dhcp6c[98856]: set client ID (len 14)
    Mar  4 17:02:48 plunk dhcp6c[98856]: set elapsed time (len 2)
    Mar  4 17:02:48 plunk dhcp6c[98856]: send solicit to ff02::1:2%ue0
    Mar  4 17:02:48 plunk dhcp6c[98856]: reset a timer on ue0, state=SOLICIT, timeo=7, retrans=115788
    Mar  4 17:04:44 plunk dhcp6c[98856]: Sending Solicit
    Mar  4 17:04:44 plunk dhcp6c[98856]: set client ID (len 14)
    Mar  4 17:04:44 plunk dhcp6c[98856]: set elapsed time (len 2)
    Mar  4 17:04:44 plunk dhcp6c[98856]: transmit failed: No route to host
    Mar  4 17:04:44 plunk dhcp6c[98856]: reset a timer on ue0, state=SOLICIT, timeo=8, retrans=125052
    Mar  4 17:06:47 plunk dhcp6c[11024]: extracted an existing DUID from /var/db/dhcp6c_duid: 00:01:00:01:20:4d:f3:f3:00:0c:29:8c:91:73
    Mar  4 17:06:47 plunk dhcp6c[11024]: failed to open /usr/local/etc/dhcp6cctlkey: No such file or directory
    Mar  4 17:06:47 plunk dhcp6c[11024]: failed initialize control message authentication
    Mar  4 17:06:47 plunk dhcp6c[11024]: skip opening control port
    Mar  4 17:06:47 plunk dhcp6c[11024]: <3>[interface] (9)
    Mar  4 17:06:47 plunk dhcp6c[11024]: <5>[ue0] (3)
    Mar  4 17:06:47 plunk dhcp6c[11024]: <3>begin of closure [{] (1)
    Mar  4 17:06:47 plunk dhcp6c[11024]: <3>[script] (6)
    Mar  4 17:06:47 plunk dhcp6c[11024]: <3>["/var/etc/dhcp6c_wan_script.sh"] (31)
    Mar  4 17:06:47 plunk dhcp6c[11024]: <3>end of sentence [;] (1)
    Mar  4 17:06:47 plunk dhcp6c[11024]: <3>end of closure [}] (1)
    Mar  4 17:06:47 plunk dhcp6c[11024]: <3>end of sentence [;] (1)
    Mar  4 17:06:47 plunk dhcp6c[11024]: called
    Mar  4 17:06:47 plunk dhcp6c[11024]: called
    Mar  4 17:06:47 plunk dhcp6c[11229]: reset a timer on ue0, state=INIT, timeo=0, retrans=383
    Mar  4 17:06:48 plunk dhcp6c[11229]: Sending Solicit
    Mar  4 17:06:48 plunk dhcp6c[11229]: a new XID (b408e7) is generated
    Mar  4 17:06:48 plunk dhcp6c[11229]: set client ID (len 14)
    Mar  4 17:06:48 plunk dhcp6c[11229]: set elapsed time (len 2)
    Mar  4 17:06:48 plunk dhcp6c[11229]: transmit failed: Can't assign requested address
    Mar  4 17:06:48 plunk dhcp6c[11229]: reset a timer on ue0, state=SOLICIT, timeo=0, retrans=1088
    Mar  4 17:06:49 plunk dhcp6c[11229]: Sending Solicit
    Mar  4 17:06:49 plunk dhcp6c[11229]: set client ID (len 14)
    Mar  4 17:06:49 plunk dhcp6c[11229]: set elapsed time (len 2)
    Mar  4 17:06:49 plunk dhcp6c[11229]: send solicit to ff02::1:2%ue0
    Mar  4 17:06:49 plunk dhcp6c[11229]: reset a timer on ue0, state=SOLICIT, timeo=1, retrans=2151
    Mar  4 17:06:51 plunk dhcp6c[11229]: Sending Solicit
    Mar  4 17:06:51 plunk dhcp6c[11229]: set client ID (len 14)
    Mar  4 17:06:51 plunk dhcp6c[11229]: set elapsed time (len 2)
    Mar  4 17:06:51 plunk dhcp6c[11229]: send solicit to ff02::1:2%ue0

    This is the dhcp6c_wan.conf file that is generated by the web gui. Maybe there is a clue in here. I dont know what it should look like. Im trusting the gui is generating it correctly.

    interface ue0 {
            send ia-na 0;  # request stateful address
            send ia-pd 0;  # request prefix delegation
            request domain-name-servers;
            request domain-name;
            script "/var/etc/dhcp6c_wan_script.sh"; # we'd like some nameservers please
    };
    id-assoc na 0 { };
    id-assoc pd 0 {
            prefix-interface vmx1 {
                    sla-id 0;
                    sla-len 0;
            };
    };

    Im kind of stuck. Thanks for any info.



  • OK So I switched it to SLAAC on the wan interface to see if the mifi was using slaac. Not sure but the tcpdump for slaac shows it sending router solicitations to ff02::2: (notice nothing after the last colon). Shouldnt it be crafting an ending and not sending these to an incomplete ipv6 multicast address?

    tcpdump -i ue0 -s 512 -vv ip6 or proto ipv6
    tcpdump: listening on ue0, link-type EN10MB (Ethernet), capture size 512 bytes
    02:45:07.902438 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 16) fe80::215:ffff:fe04:8155 > ff02::2: [icmp6 sum ok] ICMP6, router solicitation, length 16
              source link-address option (1), length 8 (1): 00:15:ff:04:81:55
                0x0000:  0015 ff04 8155
    02:45:11.912736 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 16) fe80::215:ffff:fe04:8155 > ff02::2: [icmp6 sum ok] ICMP6, router solicitation, length 16
              source link-address option (1), length 8 (1): 00:15:ff:04:81:55
                0x0000:  0015 ff04 8155
    02:45:15.922719 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 16) fe80::215:ffff:fe04:8155 > ff02::2: [icmp6 sum ok] ICMP6, router solicitation, length 16
              source link-address option (1), length 8 (1): 00:15:ff:04:81:55
                0x0000:  0015 ff04 8155

    Here is the tcpdump when I switch it to dhcpv6… not much better.

    02:27:34.918262 IP6 (hlim 1, next-header UDP (17) payload length: 105) fe80::215:ffff:fe04:8155.dhcpv6-client > ff02::1:2.dhcpv6-server: [udp sum ok] dhcp6 solicit (xid=ad327d (client-ID hwaddr/time type 1 time 541996795 000c298c9173) (IA_NA IAID:0 T1:0 T2:0) (elapsed-time 65535) (option-request DNS-server DNS-search-list) (IA_PD IAID:0 T1:0 T2:0 (IA_PD-prefix ::/64 pltime:4294967295 vltime:4294967295)))
    02:27:44.696294 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::d478:a2ff:febf:ce18 > fe80::215:ffff:fe04:8155: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has fe80::215:ffff:fe04:8155
              source link-address option (1), length 8 (1): 00:15:ff:da:96:90
                0x0000:  0015 ffda 9690
    02:27:44.696365 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) fe80::215:ffff:fe04:8155 > fe80::d478:a2ff:febf:ce18: [icmp6 sum ok] ICMP6, neighbor advertisement, length 24, tgt is fe80::215:ffff:fe04:8155, Flags [router, solicited]
    02:27:49.692676 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::215:ffff:fe04:8155 > fe80::d478:a2ff:febf:ce18: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has fe80::d478:a2ff:febf:ce18
              source link-address option (1), length 8 (1): 00:15:ff:04:81:55
                0x0000:  0015 ff04 8155
    02:27:49.693865 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) fe80::d478:a2ff:febf:ce18 > fe80::215:ffff:fe04:8155: [icmp6 sum ok] ICMP6, neighbor advertisement, length 24, tgt is fe80::d478:a2ff:febf:ce18, Flags [router, solicited]
    02:29:26.813250 IP6 (hlim 1, next-header UDP (17) payload length: 105) fe80::215:ffff:fe04:8155.dhcpv6-client > ff02::1:2.dhcpv6-server: [udp sum ok] dhcp6 solicit (xid=ad327d (client-ID hwaddr/time type 1 time 541996795 000c298c9173) (IA_NA IAID:0 T1:0 T2:0) (elapsed-time 65535) (option-request DNS-server DNS-search-list) (IA_PD IAID:0 T1:0 T2:0 (IA_PD-prefix ::/64 pltime:4294967295 vltime:4294967295))



  • Below is the ipv6 tcpdump for Linux where things fly right off and work perfect. Note… it doesnt seem like its using dhcpv6. dhcpv6 carries on similar to pfsense... but avahi jumps in and joins the multicast groups and seems to go for it. In the end for dhcpv6 it seems to time out in the end after avahi completes ipv6 setup

    sudo tcpdump -i wlp4s0 -s 512 -vv ip6 or proto ipv6
    tcpdump: listening on wlp4s0, link-type EN10MB (Ethernet), capture size 512 bytes
    02:31:00.241561 IP6 (hlim 1, next-header Options (0) payload length: 36) :: > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 1 group record(s) [gaddr ff02::fb to_ex { }]
    02:31:03.517549 IP6 (hlim 1, next-header Options (0) payload length: 56) :: > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 2 group record(s) [gaddr ff02::1:ffad:3c2f to_ex { }] [gaddr ff02::fb to_ex { }]
    02:31:03.681528 IP6 (hlim 1, next-header Options (0) payload length: 56) :: > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 2 group record(s) [gaddr ff02::1:ffad:3c2f to_ex { }] [gaddr ff02::fb to_ex { }]
    02:31:03.781541 IP6 (hlim 1, next-header Options (0) payload length: 36) :: > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 1 group record(s) [gaddr ff02::fb to_in { }]
    02:31:04.253554 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) :: > ff02::1:ffad:3c2f: [icmp6 sum ok] ICMP6, neighbor solicitation, length 24, who has fe80::f266:e0df:ead:3c2f
    02:31:04.649543 IP6 (hlim 1, next-header Options (0) payload length: 36) :: > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 1 group record(s) [gaddr ff02::fb to_in { }]
    02:31:05.253655 IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::f266:e0df:ead:3c2f > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 1 group record(s) [gaddr ff02::1:ffad:3c2f to_ex { }]
    02:31:05.261567 IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::f266:e0df:ead:3c2f > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 1 group record(s) [gaddr ff02::fb to_ex { }]
    02:31:05.269567 IP6 (hlim 1, next-header Options (0) payload length: 56) fe80::f266:e0df:ead:3c2f > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 2 group record(s) [gaddr ff02::fb to_ex { }] [gaddr ff02::1:ffad:3c2f to_ex { }]
    02:31:05.278445 IP6 (flowlabel 0x8c4b0, hlim 255, next-header ICMPv6 (58) payload length: 8) fe80::f266:e0df:ead:3c2f > ip6-allrouters: [icmp6 sum ok] ICMP6, router solicitation, length 8
    02:31:05.316728 IP6 (flowlabel 0x52205, hlim 255, next-header UDP (17) payload length: 160) fe80::f266:e0df:ead:3c2f.mdns > ff02::fb.mdns: [udp sum ok] 0 [2q] [2n] ANY (QM)? f.2.c.3.d.a.e.0.f.d.0.e.6.6.2.f.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. ANY (QM)? dell3350.local. ns: dell3350.local. AAAA fe80::f266:e0df:ead:3c2f, f.2.c.3.d.a.e.0.f.d.0.e.6.6.2.f.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. PTR dell3350.local. (152)
    02:31:05.354192 IP6 (flowlabel 0x52205, hlim 255, next-header UDP (17) payload length: 53) fe80::f266:e0df:ead:3c2f.mdns > ff02::fb.mdns: [udp sum ok] 0 [2q] PTR (QM)? _ipps._tcp.local. PTR (QM)? _ipp._tcp.local. (45)
    02:31:05.386776 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 64) fe80::d478:a2ff:febf:ce18 > ip6-allnodes: [icmp6 sum ok] ICMP6, router advertisement, length 64
            hop limit 64, Flags [other stateful], pref high, router lifetime 1800s, reachable time 30000s, retrans time 1000s
              prefix info option (3), length 32 (4): 2600:1008:b102:62de::/64, Flags [onlink, auto], valid time 86400s, pref. time 14400s
                0x0000:  40c0 0001 5180 0000 3840 0000 0000 2600
                0x0010:  1008 b102 62de 0000 0000 0000 0000
              mtu option (5), length 8 (1):  1428
                0x0000:  0000 0000 0594
              source link-address option (1), length 8 (1): 00:15:ff:da:96:90
                0x0000:  0015 ffda 9690
    02:31:05.397557 IP6 (hlim 1, next-header Options (0) payload length: 96) fe80::f266:e0df:ead:3c2f > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 4 group record(s) [gaddr ff02::1:ffc1:e02 to_ex { }] [gaddr ff02::1:ff28:1351 to_ex { }] [gaddr ff02::fb to_ex { }] [gaddr ff02::1:ffad:3c2f to_ex { }]
    02:31:05.540616 IP6 (flowlabel 0xbd230, hlim 1, next-header UDP (17) payload length: 54) fe80::f266:e0df:ead:3c2f.dhcpv6-client > ff02::1:2.dhcpv6-server: [udp sum ok] dhcp6 inf-req (xid=511867 (client-ID type 4) (option-request DNS-server DNS-search-list DNS-server DNS-search-list client-ID) (elapsed-time 0))
    02:31:05.567388 IP6 (flowlabel 0x52205, hlim 255, next-header UDP (17) payload length: 160) fe80::f266:e0df:ead:3c2f.mdns > ff02::fb.mdns: [udp sum ok] 0 [2q] [2n] ANY (QM)? f.2.c.3.d.a.e.0.f.d.0.e.6.6.2.f.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. ANY (QM)? dell3350.local. ns: dell3350.local. AAAA fe80::f266:e0df:ead:3c2f, f.2.c.3.d.a.e.0.f.d.0.e.6.6.2.f.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. PTR dell3350.local. (152)
    02:31:05.605549 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) :: > ff02::1:ffc1:e02: [icmp6 sum ok] ICMP6, neighbor solicitation, length 24, who has 2600:1008:b102:62de:f532:60:42c1:e02
    02:31:05.697521 IP6 (hlim 1, next-header Options (0) payload length: 96) fe80::f266:e0df:ead:3c2f > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast liste