(I decided to start a new topic on this as not to clutter up the RouterOS 5.9 announcement thread)
I have done further testing. I cannot get packet sniffer on RouterOS to see any DHCPv6-PD packets at all. I have re-tested my connection with Ubuntu Server running a pppoe client and it can happily get DHCPv6-PD using wide-dhcp6-client. I have sent the packet trace for that to Miktotik support.
The tcpdump line that worked on Linux is:
# tcpdump -i ppp0 udp port 546 or udp port 547
I’m trying this Packet Sniffer config on RouterOS:
interface: Internode-FTTH
only-headers: no
memory-limit: 100KiB
memory-scroll: yes
file-name: pppoe-connection
file-limit: 1000KiB
streaming-enabled: no
streaming-server: 0.0.0.0
filter-stream: no
filter-ip-protocol: udp
filter-port: 546,547
filter-direction: any
running: no
However, while I can see packets leaving RouterOS (the firewall counter for IPv6 udp/547 outbound on the pppoe interface increases), they are not being picked up by packet sniffer at all.
Turns out that Packet Sniffer on RouterOS can’t sniff pppoe connections. You have to point it to the ethernet interface that the pppoe-client is running on and set the filter-mac-protocol=pppoe instead. I’ve now sent the packet trace from the (working) wide-dhcpv6-client and (non-working) RouterOS 5.9 to Mikrotik support.
it definitely works - I've labbed it against a cisco 7200 LNS and I get a prefix fine.
I don't use the same routers as 'node but so it might be an interoperability bug between IOS-XE and MikroTik?
*Dec 2 23:09:05.779: IPv6 DHCP: Received SOLICIT from FE80::5 on Virtual-Access2.1
*Dec 2 23:09:05.783: IPv6 DHCP: Sending ADVERTISE to FE80::5 on Virtual-Access2.1
*Dec 2 23:09:06.843: IPv6 DHCP: Received REQUEST from FE80::5 on Virtual-Access2.1
*Dec 2 23:09:06.847: IPv6 DHCP: Creating binding for FE80::5 in pool ISP-PD
*Dec 2 23:09:06.851: IPv6 DHCP: Allocating IA_PD 00000005 in binding for FE80::5
*Dec 2 23:09:06.851: IPv6 DHCP: Allocating prefix ZZ03:Z000::/62 in binding for FE80::5, IAID 00000005
*Dec 2 23:09:06.859: IPv6 DHCP: Sending REPLY to FE80::5 on Virtual-Access2.1
[admin@rtr2] /ipv6 dhcp-client> print
Flags: D - dynamic, X - disabled, I - invalid
I’m glad someone got it to work! Can you post the IPv6 firewall rules you used on the Mikrotik as well? Also, Internode presents a /56 prefix. Are you able to configure your Cisco to present that and see if it still works?
This is the configuration I’m using on the Mikrotik side:
I’ve noticed a difference in the debug outputs for connecting with username@ipv6.internode.on.net vs enabling IPv6 from the internode web portal and using your regular username.
Files attached show the @ipv6 way appears to be getting a bad response while the regular just times out.
RouterOS is not configuring the local interface with a proper IPv6 address from the pool received via the DHCPv6-PD request. On Linux, the LAN interface upon which RADVD runs gets an IPv6 address. Anyone know if it’s possible to manually apply an address? All I have now are link-local addresses and the router can’t ping any IPv6 addresses yet.
If you know what the range allocated is then yes you should be able to simply add an IPv6 address to the interface of your choice, seeing as you have the upstream gateway and Internode knows to route back to you for that range.
Ok, I now have IPv6 working correctly. I’m still not sure I should be setting the IPv6 address on the internal LAN interfaces manually, but otherwise it seems to work OK.
Lol, so it looks like the only thing missing now is the “Framed-IPv6-Address” support
Aka: everything but your router can get internet access, unless you manually assign a public address to the router.
the next step is to work out how to tell RouterOS to take a /YY size prefix out of the /XX delegated prefix and use it to generate an IPv6 address on the assigned interface.
so something like: /ipv6 address interface=ether1 address=::1/64 prefix-pool=ISP-PD
as an example:
2001:44b8::/56 allocated to ISP-PD
the above would take a /64 from the pool ISP-PD (obtained via DHCP client) and assign the first ipv6 address on the interface specified.