Hey folks,
I’m in a situation where I’m not able to achieve IPv6 connectivity with my Mikrotik-RB750Gr3,
- My ISP is delegating /64 prefixes (i know, I know)
- I can get the prefix delegated via dhcpv6.
- I can assign the IP pool to my LAN
- Devices on my LAN can get assigned IPv6 addresses.
- Any IPv6 packets I generate from the router or from the LAN show up as TX packets on ether1, my WAN (per packet sniffer)
- No response packets from ever show up in response to public outbound packets. Response packets DO show up from the local-link address of the next hop router
- Local-link and non-local-link packets are identically constructed with identical SRC/DST MAC addrs, only difference being the destination IPv6 address.
- I’ve disabled every firewall rule, and added blanket accept all rules on input/output/forward
- My ISP claims they can’t see any IPv6 packets coming from my device, despite me seeing them in sniffer.
- This problem persists across RouterOS v6.48.6 (long-term) and RouterOS v7.3.1 (stable).
Now here’s the kicker:
- If I plug in my laptop or desktop directly to my upstream (in place of the router), everything works fine.
- My ISP indicates they dump routers vs end devices into different vlans so this isn’t that weird. But the fact that they claim they can’t see any outbound ipv6 traffic from my hEX is really weird.
At this point I’m reasonably confident this is an issue with my ISP, but I wanted further insight from you all on if you’ve ever seen a bug like this before. I’m especially interested if you think the /64 PD is a contributing factor.
Config dumps follow.
[admin@hex] > /ipv6 dhcp-client/print detail
Flags: D - dynamic; X - disabled, I - invalid
0 interface=ether1 status=bound duid="0xREMOVED dhcp-server-v6=fe80::AAAA:BBBB:fe4f:52e8 request=prefix add-default-route=yes default-route-distance=1 use-peer-dns=yes dhcp-options="" pool-name="dhcpv6"
pool-prefix-length=64 prefix-hint=::/0 dhcp-options="" prefix=AAAA:BBBB:CCCC:DDDD::/64, 2d22h16m12s
[admin@hex] > /ipv6 address/print detail
Flags: X - disabled, I - invalid, D - dynamic; G - global, L - link-local
0 DL address=fe80::DDDD:EEEE:fe05:3a05/64 from-pool="" interface=bridge actual-interface=bridge eui-64=no advertise=no no-dad=no
1 DL address=fe80::DDDD:EEEE:fe05:3a04/64 from-pool="" interface=ether1 actual-interface=ether1 eui-64=no advertise=no no-dad=no
2 G address=AAAA:BBBB:CCCC:DDDD::/64 from-pool=dhcpv6 interface=bridge actual-interface=bridge eui-64=no advertise=yes no-dad=no
[admin@hex] > /ipv6 pool/print detail
Flags: D - dynamic
0 D id=4 name="dhcpv6" prefix=AAAA:BBBB:CCCC:DDDD::/64 prefix-length=64 expires-after=2d22h8m7s
Here’s what ping looks like on the device. Ping from the lan has the exact same behavior (with a full IP). Also note if I assign the entire PD to the router’s ether1, it also has this same failed behavior.
[admin@hex] > ping src-address=AAAA:BBBB:CCCC:DDDD:: interface=ether1 address=2607:f8b0:4002:81a::200e
SEQ HOST SIZE TTL TIME STATUS
0 2607:f8b0:4002:81a::200e timeout
1 2607:f8b0:4002:81a::200e timeout
2 2607:f8b0:4002:81a::200e timeout
3 2607:f8b0:4002:81a::200e timeout
sent=4 received=0 packet-loss=100%
And the packet dump:
9 time=5.472 num=10 direction=tx src-mac=18:FD:74:01:01:01 dst-mac=DD:EE:FF:4F:52:E8 interface=ether1 src-address=AAAA:BBBB:CCCC:DDDD:: dst-address=2607:f8b0:4002:81a::200e protocol=ipv6 ip-protocol=icmpv6
size=70 cpu=2 ip-packet-size=16 ttl=64
Now compare to the same ping but to the local link (again from the public range).
[admin@hex] > ping src-address=AAAA:BBBB:CCCC:DDDD:: interface=ether1 address=fe80::DEDE:DEDE:fe4f:52e8
SEQ HOST SIZE TTL TIME STATUS
0 fe80::DEDE:DEDE:fe4f:52e8 56 64 1ms493us echo reply
1 fe80::DEDE:DEDE:fe4f:52e8 56 64 1ms405us echo reply
2 fe80::DEDE:DEDE:fe4f:52e8 56 64 1ms451us echo reply
3 fe80::DEDE:DEDE:fe4f:52e8 56 64 1ms203us echo reply
4 fe80::DEDE:DEDE:fe4f:52e8 56 64 1ms369us echo reply
sent=5 received=5 packet-loss=0% min-rtt=1ms203us avg-rtt=1ms384us max-rtt=1ms493us
–
132 time=139.164 num=133 direction=tx src-mac=18:FD:74:01:01:01 dst-mac=DD:EE:FF:4F:52:E8 interface=ether1 src-address=AAAA:BBBB:CCCC:DDDD:: dst-address=fe80::DEDE:DEDE:fe4f:52e8 protocol=ipv6
ip-protocol=icmpv6 size=70 cpu=1 ip-packet-size=16 ttl=64
133 time=139.165 num=134 direction=rx src-mac=DD:EE:FF:4F:52:E8 dst-mac=18:FD:74:01:01:01 interface=ether1 src-address=fe80::DEDE:DEDE:fe4f:52e8 dst-address=AAAA:BBBB:CCCC:DDDD:: protocol=ipv6
ip-protocol=icmpv6 size=70 cpu=1 ip-packet-size=16 ttl=64
[admin@hex] > /ipv6 firewall/filter/print detail
Flags: X - disabled, I - invalid; D - dynamic
0 chain=forward action=accept protocol=icmpv6 out-interface=ether1 log=no log-prefix=""
1 chain=input action=accept protocol=icmpv6 in-interface=ether1 log=no log-prefix=""
2 chain=output action=accept protocol=icmpv6 out-interface=ether1 log=no log-prefix=""
[Rest removed for brevity]