MikroTik, are you listening? ^^Now I'm discovering that MT can't even hand out dhcp addresses yet. Is this going to happen any time soon as well? Seems like my journey into learning ipv6 is going to be very short lived unless I start playing around with other routers.
It'd be nice. It'd also be nice to hear what MikroTik is working on without watching RC release notes.Well, lets hope they do have a plan.
/ipv6 nd interface=br1 advertise-dns=yes use-dns=local dns-search-list=my-first-domain.com,my-second-domain.com
That is a bit strange, isn't it? I would expect that when the /ip dns service is allowing remote requests, it would pass itsIt will just look at resolvers in "/ip dns" and if there are some IPv6 ones, it will pass those to clients.
I spoke with Janis Megis at MUM USA this year and he said essentially this very thing to me when I asked him whether they plan to implement any IPv6/IPv4 interworking features such as NAT64 stateless/stateful or helpful tools such as NAT-PT for those with dynamic prefixes / multi-ISP configurations. He replied that there are so many proposed solutions and interworking systems out there now that they do not want to spend effort implementing any of them only to have them be deprecated shortly thereafter when they could have been spending energy on something else like improving their routing engine's core performance, etc.They are strategically waiting for everything around IPv6 to settle and then they'll implement whatever becomes most important, to avoid wasting time on dead ends. Ok, I'm just kidding.
That's very interesting. I'm going to have to lab this up in a moment to go see it in action. That's encouraging at least, although I agree with you that they could polish up the advertise DNS option in SLAAC without a huge investment of effort, and it would go a long way to improving the usefulness of Mikrotik routers as IPv6 CPE.RouterOS can hand out DNS resolvers using both stateful (*1) and stateless (*2) DHCPv6.
Well, I kind of agree with that. We seldomly have seen a bigger mess in IT than with the introduction of IPv6 and the many solutions for migration and tunneling that go alongside it.I spoke with Janis Megis at MUM USA this year and he said essentially this very thing to me when I asked him whether they plan to implement any IPv6/IPv4 interworking features such as NAT64 stateless/stateful or helpful tools such as NAT-PT for those with dynamic prefixes / multi-ISP configurations. He replied that there are so many proposed solutions and interworking systems out there now that they do not want to spend effort implementing any of them only to have them be deprecated shortly thereafterThey are strategically waiting for everything around IPv6 to settle and then they'll implement whatever becomes most important, to avoid wasting time on dead ends. Ok, I'm just kidding.
It appears to be working. In our guest network several computers have obtained the DNSv6 servers from the DHCPv6 server and are using them.That's very interesting. I'm going to have to lab this up in a moment to go see it in action.RouterOS can hand out DNS resolvers using both stateful (*1) and stateless (*2) DHCPv6.
Yes. Don't know if it is optimal, but at least it is what I always observe.1) Neighbors, in my ipv6 neighborlist every device shows as stale. Even when traffic is being used. Is this normal?
I think most people install DHCPv6 because they also had DHCPv4 and did not yet study IPv6 before they start configuring their router.2) what would be the point of a ipv6 dhcp server if this can be setup dynamically without one? Just record keeping maybe?
You don't need a globally routable IP address on your WAN port unless you want to use it to have the router provide services to3) is there any advantage to putting an IP address on my WAN port or would link locals be the equivalent of routing with private ips?
Below is another reason for DHCP (q2) along w/an answer to q3.Ok I seem to have everything working here. IPv6 is really confusing at first, but starting to make sense to me the more I play with it.
I have my main router setup to hand out prefixes via dhcp6. Main router is using link local addresses only, but handing out prefixes from a 32 that Arin gave us. My test client (my house), has dhcp6 client setup on wan port, then I created an IPv6 address on my lan port from the pool created by the dhcp client, which is a /64. Test client router (my house) is using link local address for default gateway. I also have googles IPv6 DNS listed in dns servers and all my computers are grabbing and using it. Seems fine.
Does all this sound like a proper setup?
Couple Questions
1) Neighbors, in my ipv6 neighborlist every device shows as stale. Even when traffic is being used. Is this normal?
It's not out of line, if you are monitoring it closely you should see some entries become reachable. I'm not sure what the default timer value is for MikroTik. They do support the reachable-timer value in the ipv6 nd settings. This likely just relates to the timer value advertised by RA. I'm not sure if it falls back into the RouterOS value, equivalent of an ARP cache timer in a way. At least a sub portion of it.
Side-note, you can check your IPv6 neighbor cache on Windows 10 with PowerShell. While we're on the topic it supports IPv4 and IPv6. Super cool little command-let. Who doesn't love PowerShell and it's handy filtering states:
2) what would be the point of a ipv6 dhcp server if this can be setup dynamically without one? Just record keeping maybe?Code: Select allGet-NetNeighbor -AddressFamily IPv6 | Where-Object -Property State -NE Stale Get-NetNeighbor -AddressFamily IPv6 | Where-Object -Property State -NE Reachable
You hit the nail on the head. Record keeping is a key function, I translate this as DHCP to DNS integration. No one wants to type an IPv6 address into a web-browser, especially one generated through SLAAC. While we humans could manage to type a 4 octet IP address in this gets a little ridiculous with IPv6. Addiotionaly DHCPv6 is important to set client-side values, this appears to work for most PCs with the current MikroTik DHCPv6 implementation. It will be critical to test more extravagant options as IPv6 usage grows. Some common uses would be PXE booting, requiring the TFTP options. Alternatively CAPSMAN, or what I'm more familiar with, Cisco Wireless DHCP based discovery of a controller.
3) is there any advantage to putting an IP address on my WAN port or would link locals be the equivalent of routing with private ips?
The benefit of assigning IPv6 addresses via DHCPv6 is so any given device will always have a known address (if assigning persistent leases based on the DUID). Or even dynamic DHCPv6 addressing will let you know who had the address. Why? .... so you can identify source of bad or malicious traffic, filtering / access controls, etc. SLAAC and ever changing "privacy address", that disappear as quickly as they appeared, are a nightmare to manage. Only in a home network or very small business should these ever be allowed. Certainly never seen in large enterprise networks.2) what would be the point of a ipv6 dhcp server if this can be setup dynamically without one? Just record keeping maybe?
If it works for you and you're able to troubleshoot effectively and customers don't complain than I say go ham. Me personally, I give them a global address because that's just how my brain works.We have a large networking consisting of 18 routers. I setup OSPFv3 to get the networks working with IPv6 using the link-local addresses and it works fine. With IPv4 we used private addresses for OSPF because we didn't have enough addresses to use public IP's. It never created any issues for us other than the random tracert someone tried to do from outside in.
Historically I've used /126 addresses for PtP links, using a /64 is honestly just wasteful and planning an address plan for a network containing a large number of PtP links can become challenging if you are constantly tossing /64's in for each PtP. Even with a /48 or larger network. I'll need to do some additional testing but it looks like the IETF community is moving a /127 for PtP usage with the idea of implementing MUST rules to how packets are handled to solve traditional beaf with their use which is conflict with the Subnet Router Anycast address causing a forwarding loop. That said a /126 should still be valid as long as it is used similarly to a /30 and the first value (traditionally the network value) goes unused because that assumes the subnet router anycast address. Another important note is the IETF does not seem keen to mandate /64 everywhere but it will be require those that use prefixes smaller than that to be cognicent of the impacts of the specific address blocks that are normally restricted. https://tools.ietf.org/html/rfc6164 this will give you an example. I've also some hits that improper setting of u and g bits with a prefix smaller than /64 may cause issues but I haven't seen any published work or implementation that has shown as affected.If I wanted to use routable IPv6 do you just place a /64 between the 2 routers or will subnetting smaller work? I've read that anything smaller than a /64 breaks things. Considering OSPFv3 is setup using ethernet ports instead of IP addresses will it choose the ports routable IP over the link-local if it has one? Or does that need to be specified?
I couldn't agree more, it's a chicken and egg problem. Some of the devices that would benefit tremendously from IPv6 have yet to implement it. This can be anything from the horrendously weak and often outdated SoC's used in common IoT type products to just a lack of knowledge so the manufacturer disables it and prefers to use NAT over IPv4 to build a solution. The only devices left on my network that cannot successfully do IPv6 are my Roku's. Sadly I made a significant investment in them a while back hardware wise and I'm not positioned to change them out for IPv6 supported devices like Chromecasts or Apple TVs but at some point I may. The important thing is that those incompatabilities are reported to the device manufacturers. Especially if you're an ISP. To be honest I wouldn't even talk to their tech support. I'd talk to a leader in the Sales Department. Hey Roku, I'm ISP XYZ, we love your product, we'd love to recommend to our xyzz subscribers but because IPv4 address depletion is real we are going IPv6 only. Your device doesn't support it so we'll be recommending to our customers that they buy Apple TVs and Chromecasts. You alone may not move the needle but as more and more ISPs report that feedback in their sales leaders will get anxious. That anxiousness will transfer to the development and engineering teams on it's own and much more effectively.Last question which is more of an observation really. My house currently has 51 internet devices. Everything from computers, to thermostats, rokus, wemo light switches, etc. I'm discovering that the only devices I own that are even grabbing IPv6 addresses are computers and phones. That leaves a TON of devices that appear to not be ready for this. Am I jumping into this too early? I know that dual stacked is the way to go, but we're out of IPv4 and a dual stack would have to consist of customers sharing IPv4 addresses and natted together, but have their own prefix for IPv6. I suppose this will work since a thermostat could care less if it's natted a couple times, but seems to me more of these devices should be ready by now.
That's IPv6 in real world, it has been like this since the beginning. Everyone is waiting for someone else and progress is slow. Why should manufacturers make IPv6-ready devices, when users don't want them? Why should users want them, when ISPs don't offer IPv6? Why should ISPs offer IPv6, when users don't ask for it? Someone has to start. And since users are generally clueless, they don't understand this stuff, it needs to be ISPs. So as an user, you may be too early. As an ISP, you're already late.That leaves a TON of devices that appear to not be ready for this. Am I jumping into this too early?
Believe me I know I'm late. In my defense I don't own the ISP, but I am asked to single handedly be the network admin, the manager, the customer complaint department, the tower crew leader, employee relations, and pyschiatrist. We have over 80 towers and the normal day to day routine just doesn't give me the time to do anything beyond new problems that show up on a daily basis. I finally talked the company into letting me spend a day a week at home to work on things for a while. I can get more done in a couple of hours in my home office than I can in a month at work.So as an user, you may be too early. As an ISP, you're already late.
This is incorrect.*Those link-local addresses will be the ones that show up in traceroute. This can very quickly complicate troubleshooting efforts.
As always, zero, I'm but an apprentice. If I had thought it about too I would have come to the same conclusion about link-local's appearing in traceroute. I likely saw the condition you did which is the link-local for a router that has a direct attachment to another (1st hop type scenario) and my noodle of a brain lumped 'em all together.This is incorrect.*
Link-local addresses must not be forwarded at layer 3 by routers. Therefore, no packet could be forwarded from a link-local interface address to any host that is not directly connected to the same layer 2 network.
When you traceroute across link-local-only hops, the various routers in the path will respond using their loopback addresses or the address of some other interface which has a global-scope IPv6 address on it. This can complicate troubleshooting (as you stated) if your topology contains multiple layer-3 links between the same pair of routers. The traceroute will show which routers the path traverses, but it will not give any indication of which actual link was chosen for your trace. On the other hand, when the links also have routable addressing on them, the trace will show those interface addresses. Obviously this can be more useful in troubleshooting as you suggested.
This is the reason I chose not to go with link-local-only addressing in my core topology.
***
*edit: There is one case where I've seen a link-local address appear in a traceroute - after posting this, just for laughs I decided to see what would happen if I built a chain of routers which ONLY had link-local addresses except for the first and last ones in the chain. When I traced from router A to router Z, I got router B's link-local address as the first hop, then all stars (timeout) for each subsequent router in the chain until the Z router which responded with its global address. A and Z could communicate just fine, but only with each other or with their direct neighbors only. (this was using Cisco by the way - I can roll out a topology in GNS3 much more quickly than I can do with ROS)
Actually, your posts are pretty much always on-point, so I just thought I'd chime in because we all benefit from little tweaks to our knowledge/understanding of things.As always, zero, I'm but an apprentice. If I had thought it about too I would have come to the same conclusion about link-local's appearing in traceroute. I likely saw the condition you did which is the link-local for a router that has a direct attachment to another (1st hop type scenario) and my noodle of a brain lumped 'em all together.
We are just starting to test all this. I'm not only the owner, I'm also a client! So I've been testing dual-stack at my house via an HE.net tunnel at the core for more than six months. Our main upstream provider (community middle mile) is dragging their feet on v6 but we're turning up another upstream connection any day here, the fiber was run last week.Are any of you running an ISP? I'm wondering how you are handling all this.
How are you handling all this in your ISP?
As already commented above, I would advise to allocate a /56 per customer when you don't want to give a /48. /60 should be enough, but it is not a recommendation.4) getting used to the idea that I'm going to really give every customer these humongous allocations of 68 bits' worth of space (or more) just because "convention" is a /64 per LAN. (I've been an IPv4 miser ever since my career began in the 1990s) - This ties in with #1 because I was really wanting to just give each customer a /96... until I learned that not being /64 breaks stuff at the LAN level...
You can do that with DHCPv6-PD.Everything is manual for the moment. Anyone have a script or such for Mikrotik's that takes a /64 from e.g a /48 and allocates it to the LAN side for SLAAC? Or is there a feature in Mikrotik that can do this?
/ipv6 dhcp-client
add add-default-route=yes interface=pppoe-xs4all-inet pool-name=xs4all-v6prefix request=prefix
/ipv6 address
add from-pool=xs4all-v6prefix interface=bridge-local
add from-pool=xs4all-v6prefix interface=bridge-public
I've only messed with it on servers, end devices, on Cisco, and once on DD-WRT, but that build was community-modded to enable the support using scripts (no GUI access to IPv6 stuff) and while it worked just fine, I'd say that it was not representative of what modern SOHO gear can/can't do with IPv6.Anyone play around with non MT routers? I'm testing with home based routers since our customers have them and for the life of me I cannot get IPv6 working on this netgear I purchased. I'm going to pick up another brand to see if it's something I'm doing wrong, but I'm wondering what kind of luck you guys have had with basic el cheapo routers. The netgear forums are full of posts about buggy software.
It would be great when at least some of the features of IPv4 that are available in the kernel for IPv6 are made available in 6.40rc.To chime in thins great discussion on IPv6:
First sorry for the "fixed in v7", but this is all we have at the moment.
The thing to check is whether those devices support receiving IPv6 prefixes via DHCPv6-PD. If they don't support that, then they're not going to work using that mechanism, no matter what Mikrotik does or doesn't implement.So I cannot start this until I can make an MT router successfully send prefixes to things like Belkin and DLink. So far I have not been able to make this work.
/ipv6 settings set accept-router-advertisements=yes
Yup, the document states the need for prefix delegation paired with the customer device listening to RAs on the WAN interface.The problem is: when you use RA to get an address and router on the WAN side, you still don't have an address to use on the LAN side.
You would normally use a mechanism like DHCP6-PD to get that, but there are providers that don't offer this and in fact give each user only a /64.
This is difficult to handle with the MikroTik as there is no form of NAT functionality. You would have to try tricks with bridging or static address/route.
I'm afraid I don't follow, if the /64 is delegated using PD then it will be assigned to a pool not to your interface. Like you said the WAN interface will then use link-local addressing. It's only a problem when a single address is assigned using DHCPv6 address assignment out of a /64 to the WAN interface not when a /64 is delegated. That said, like I mentioned earlier I really would shy away from handing out anything less than a /60 to permit capable routers and users to setup differing networks locally. A common example could be a guest WiFi network which comes with firmware in TP-Link or Asus I can't remember which.Remember a bridge operates at layer 2 so it is shared between layer 3 protocols like IPv4 and IPv6.
When you configure bridging for IPv6, it will be difficult to still get routing for IPv4. Which you probably require, because IPv4 NAT is part of routing.
However, when you get only a single /64 you can sometimes put it on the LAN (statically) and use only a link-local address (FE80::...) on the link to the ISP.
Then you can still route. This can work when the link to the ISP is actually point-to-point, e.g. PPPoE.
YES this is needed badly. We have 3 IPv6 routes and do not have the ability of routing certain traffic to particular routes. due to lack of routing-marks and ability to use routing-marks in ipv6 mangle to mark trafficIt would be great when at least some of the features of IPv4 that are available in the kernel for IPv6 are made available in 6.40rc.To chime in thins great discussion on IPv6:
First sorry for the "fixed in v7", but this is all we have at the moment.
Like:
- ipv6 route rule
- ipv6 firewall nat (prefix translation only, similar to netmap)
- ipv6 firewall mangle (addition of some actions like mark routing, set priority)
It should make IPv6 more useful e.g. in cases where multiple internet connections or dynamic IPv6 prefix on internet are present.
These features should not require a lot of design and implementation effort as they are the same as the similar features in
IPv4 and the underlying kernel features are the same as well.
I don't think there's any good way of doing this with current RouterOS.... I'm thinking I could add 2 DNS entries, one with itself and one as our main dns server, but is there a more elegant way of doing this?
@Janisk, your view of "DHCP is only for address assignment" is flawed. Grab the closest 2 people to you in the MikroTik office and collectively lift their heads out of the sand whilst you pull yours out. The acronym literally tells you it, Dynamic Host Configuration Protocol. It configures many other things like DNS servers, NTP servers or any other number of DHCP option reliant features. This is especially important when you look at your implementation of DNS server discovery in RA. It pulls the servers directly in /ip dns and basically ignores the local recursive resolver. Seriously laughable. Get over your "Not Invented Here" views and implement a proper IPv6 DHCP server and fire anyone else that is on the SLAAC only train in 2017.*) full DHCPv6 server becomes a necessity only if you are faced with prefixes smaller than /64 and below that threshold SLAAC stops wrorking.
@Janisk, we'd love to except we still cannot reliably request (hint) the network bits to be given out. The simplest example would be to match the network bits to the VLAN ID, VLAN11 = 2001:db8:aaaa:aa11::1/64 instead of whatever it decides to be as the router boots up. This is compounded by the lack of a DHCPv6 server that effectively updates DNS to allow me to ping by name. This is a feature lack in IPv4 and IPv6 and is currently only solved with 3rd party scripts. An absolute embarrassment if you ask me. Include DNSMASQ as your engine and update your licensing if you are simply unable to code it yourselves.*) use from-pool "/ipv6 address" feature when dealing with dynamic prefixes.
Well, this is just an example of the disparity with reality in the IPv6 development community... maybe they are anarchists.o My company is "large" (not an ISP). They have an internet facing IPv6 presence, which is good. But internally we have nothing. I manage some large networks and we have a hacked together static IPv6 address assignment along with SLAAC for end users. From my company's global perspective, they've rightly decided that SLAAC is bad, and I agree, it's for home users and/or anarchists as far as I can tell. Hopefully they will come out with a direction on this soon. DHCPv6 internally is the way forward.
There is another thread with a good discussion about IPv6 NAT.o Can someone give me some undeniable evidence that NAT with IPv6 is a good thing? I could see ISPs that provide modem/routers to customers moving to it in a hurry because obviously anyone who needs real internet connectivity is a business and should be charged accordingly. This seems like a bad idea to me. It would simplify their (ISP) lives greatly as far as routing but it breaks the notion of what the internet was always supposed to be. I think people will roll their eyes back in their head when they read this but I can see it happening.
+1SLAAC was kind of acceptable until "Privacy Extensions" was added.
Only when you have something like Group Policy in operation. There should have been an option in RA to disable it for a network, understood by all network stacks."Privacy extension" looks like invention for consumer end of the market not enterprise. In enterprise environment you can control your devices and disable "privacy extension".
But then it does nothing to define such a mechanism in the protcol, it is apparently left to management settings of the device. Bad. Like so much in IPv6, no thought about practical usage.Additionally, sites might wish to selectively enable or disable the
use of temporary addresses for some prefixes. For example, a site
might wish to disable temporary address generation for "Unique local"
[ULA] prefixes while still generating temporary addresses for all
other global prefixes. Another site might wish to enable temporary
address generation only for the prefixes 2001::/16 and 2002::/16,
while disabling it for all other prefixes. To support this behavior,
implementations SHOULD provide a way to enable and disable generation
of temporary addresses for specific prefix subranges. This per-
prefix setting SHOULD override the global settings on the node with
respect to the specified prefix subranges. Note that the pre-prefix
setting can be applied at any granularity, and not necessarily on a
per-subnet basis.
So event if there was something in RA to disable "privacy extension" on given prefix, according to above user MUST be able to disable/ enable "privacy extension" therefore any RA settings in regards to that would or could be ignored.Devices implementing this specification MUST provide a way for the
end user to explicitly enable or disable the use of temporary
addresses.
there are places where SLAAC is good and should be used. While as an example here - in a corporate network - DHCPv6 is a must. Deploying to end user, however, is IMHO a SLAAC space.managed-address-configuration=no other-configuration=no
Please explain what you mean by end-user. One of the largest ISP networks in the US, Charter, addresses my edge MikroTik with DHCPv6 address and prefix and not SLAAC.aren't you talking about these flags in RA configuration in RouterOS?
there are places where SLAAC is good and should be used. While as an example here - in a corporate network - DHCPv6 is a must. Deploying to end user, however, is IMHO a SLAAC space.managed-address-configuration=no other-configuration=no
It would be nice to have the option to do something between "just use SLAAC" and "use an enterprise-class DHCP service"aren't you talking about these flags in RA configuration in RouterOS?
there are places where SLAAC is good and should be used. While as an example here - in a corporate network - DHCPv6 is a must. Deploying to end user, however, is IMHO a SLAAC space.managed-address-configuration=no other-configuration=no
Privacy extension has everything to do with any network where SLAAC happens. If your host didn't use privacy extensions, then the final 64 bits of your IPv6 address would be unique to your device's MAC address no matter where it goes."Privacy extension" looks like invention for consumer end of the market not enterprise. In enterprise environment you can control your devices and disable "privacy extension".
But I agree with above comments. Proper DHCPv6 server implementation would be very welcome addition to RouterOS