[music]
All right, now we're going to look at
full-blown DHCP server configuration with IPv6.
Again, we're going to be using, of course, a router as the client and the server.
We're going to stick with the same topology we've used in previous lessons.
Again, Router 3 and Router 6.
For now, Router 3 is going to be our server.
Router 6 is going to be our client.
We're going to start off with the basic steps here,
configuring the IPv6 router DHCP scope.
If you've been following through the other lessons,
you know we'd already done some stuff but I did clean that up just so we
could start fresh here in this section.
The first thing we're going to have to do, but I do have the debugging on.
Right now, I'm debugging.
Let me just show you.
We're debugging IPv6 DHCP on both Router 6 and on Router 3.
Right now Router 6 is set of course just with a link local address, nothing more.
Router 3 his running config for his interface
has the link local, his global address,
and I do still have the interval modified to 30 seconds for the router
advertisement but that's it.
So again, Router 3 is going to be our DHCP server so we say ipv6 dhcp pool.
And again, we're just going to call it 6POOL, no big deal.
And then things you want to put in so DNS server 2001:db8:100:100::1 domain
name ine.com.
No big deal there.
And the part that becomes important now is, if we're going to do full-blown DHCP,
then he needs an actual address pool.
So you say, address prefix, and then we put in the prefix you want to hand out.
So for this network it's 2001 DB8:100:36::/64.
Now, you could hit enter here and get your default lifetimes, or you can specify.
And we'll do this just because we mess around with a little bit before.
And we could say that it's valid for 10 minutes, and it's preferred for 5 minutes,
something like that.
And of course any other DHCP options that you want to put in there.
okay, so any other scope options, they are the ones that are supported
by this particular code for the IPv6 DHCP server.
A lot of these you won't have to worry about a whole lot.
A lot of times it'll just be vendor-specific for things like your
wireless access points and phones and things like that.
The fun part here, to be honest, is more on the client side of what
happens here with the DHCP.
The other thing of course you could do is, if you wanted to,
you could say IPv6 DHCP database, and if you let me back out of this so
I can walk you through it here.
So, it's IPv6 DHCP database and then you
give it a location to go, so somewhere like,
in this case I'll just write it to flash and I'll just call it DHCPv6.
That. Something like that.
You can also set the write delay.
So how often should it write to this.
Going to be in seconds and you can just say like once per minute.
Something like that.
That's fast as you can to it.
If you want to, you can set the time out.
Hopefully it doesn't time out writing to its own flash.
Hopefully this would be more of an option if you're going to some sort of
external server like TFTP or something like that.
So I'm not even going to bother with the time out.
We're just going to say that.
Then we just need to fire it up.
So interface FA0/0.36. IPv6.
DHCP server.
Then you of course put in the pool name.
You could also say that-- you can also tell it to automatically find a pool.
Then of course it will look at the addresses in each pool and decide which
one it should pull it from.
Or you can just say-- just specify the actual pool.
I'm a control freak.
I don't like automatic stuff, so I'm going to tell it.
For now, I'm just going to hit enter.
You know what?
Actually, I won't.
I'm going to show you this other option first, because I always like to show you
things before and after.
But in this case, you can turn it on on one side,
and it doesn't do anything until it's on the other, which is your rapid-commit.
This allows DHCP to do just a 2-way handshake instead of a 4-way handshake.
We'll see that here in just a minute.
You can also allow hints from the clients.
You can have the client send a hint as far as which pool it should pull from,
and you can also set the preference if you have multiple DHCP servers on the
wire - on the same segment.
That way, it'll prefer one over another.
These aren't things we really have to get into today, but those are some
other options you have.
So we'll turn that on - DHCP server.
Now we're not going to see it fire up here, because it was running from a previous
lesson we did there.
But now, we go over to Router 6.
And on Router 6, we're going to say, IPv6 address DHCP, and just hit enter.
This should send a client request, and right there you have your 4-way handshake.
So you send out a solicit - no big deal - and again, that group,
by the way - the FF02::1:2 - is reserved for DHCP servers.
So step one, solicit.
Step two, we get an advertise.
Step three, we say yes, we like your
address, we'll take it - that's the request.
And of course, step four, we get the reply, which is sort of like the confirmation
that okay, you're good.
You have the lease.
It's all yours.
Then we get an actual address, and we add it to the interface.
Okay, fine.
We set the timer values, that's fine.
Configure the DNS server, and configure the domain name.
And that's pretty much it.
That's it.
So that's traditional DHCP 4-way handshake.
Same basic things you'll see on Router 3.
Now, before we go too far with some of the other options,
let me just show you real quick how to deal with a 2-way handshake.
So I'm going to say shut, and I'm going to let him actually unconfigure and send his
release message.
So he's going to return that address to the pool right here, we send the release.
No big deal.
And then what I'm going to say, is on the IP address DHCP we'll say rapid commit.
Then we'll say no shut.
Bring the interface up, and already done.
As you can see, this now reduces it to the solicit and the reply.
That's it. Over.
Basic idea with this one is the DHCP server is just going to assume that
whatever he offers, the client took it.
He'll go ahead and write that to his database already in fact.
If we go over to Router 3 and we say do show IPv6 DHCP bindings,
we'll find out that he's already given that address out.
That's how long it's good for yet based on the current date and time and so on.
Go over to Router 6 and we're good to go.
So we already put the address in.
But now we're going to see a little bit of a problem here.
I'm going to say, do ping 2001 DB8:100:36::3.
And just in case you don't remember, from our diagram.
You always get the diagram from the downloads of course.
But that's his address right there.
So we are in fact from Router 6, pinging Router 3 which I just got my address from.
So just to be a little bit ironic here, he can't ping the DHCP server that
gave him his own address.
Now, what he can ping of course is the link local address.
So if I were to instead say to ping fe80::3 %gigabitethernet 0/0.36.
That's fine. Okay.
So the link locals are fine, but I can't ping the global.
And the interesting part is to actually look at the message,
No valid route for destination.
Okay, great.
When you get something like that, one of the things I always do,
and this applies to IPv4 and IPv6, is to say, do show ip cef,
and then ask for that same prefix.
Basically what you're saying is, You know what,
show me what the actual FIB says to do.
Okay. No way.
It's not IP cef, IPv6 cef may help.
Now, what he's telling you here basically is, Okay, I would follow the default route.
That's what I would follow, but unfortunately I don't have one.
What's really interesting about this-- the message is already on the screen.
Maybe you've already seen it.
Maybe you already know why because it's in the debugs right in front of us,
right at the top of the screen here.
Adding address and look at the mask on that.
Look at the prefix length. /128.
That makes that a host entry, which means if I'm on Router 6 and I
say do show IPv6 route, he has the 36 network.
But he has it as his own address in a /128.
So basically you could say from a routing perspective of course he
doesn't know how to get to the other side because theoretically he thinks
he's the only one on that wire.
Now that's of course not the case.
But this is what DHCP for IPv6 does.
You can see he added the /128 and if we go back to Router 3 and look at what
he was given, never really says a whole lot, does it?
It looks up the binding, gives him the address, that's it - that's it.
Never actually tells you here, by the way, the client is going to install this as
a /128 because that's really a client thing.
But if we go over to Router 6-- of course, the important thing here is not to see
the problem and so on, but to see the workaround.
There's a couple ways you can do this.
Now remember, again, this is a router so that's part of the issue of course.
If we were to go back-- I just want to show you here real
quick though unlike our slack there's no choice here to say default,
and it's not just that it's not after the rapid commit remember before we
said IPv6 address-- and that was a debug in the middle of all that.
I was trying to show you the question mark and a debug popped up.
That's it.
Bot just that it's not after the rapid commit. Remember before we said IPV6 address. And that was a debug in the middle of all that I was trying to show you the question mark and a debug popped up. That's it. But in any case with the IPV6 address auto there was an option to say hey you know what take the default route and use that. Okay. Problem is there's not one of those on DHCP and of course sort of the I don't want to say obvious reason because maybe you didn't think of it but I did sort of mention it earlier. The reason is you don't get your default route or default gateway from DHCP. The only way to get it is manually configure it or to actually tell it to use the address from neighbor discovery. So basically what I could do here is I could still get my address from DHCP. But I could say IPV6 neighbor discovery auto config. Now notice that's not address that's IPV6 neighbor discovery auto config and tell him to actually get the prefix. If I do that and look at the show IPV6 route now he gets that NDP route back that we talked about a little bit earlier. We saw that in a previous lesson when we were actually going over neighbor discovery and such. So that's the route that he's going to use to get to the other side. If we go back now to our CEPH requests notice that he now shows it is being attached which also means that I could go back to my ping that we tried to do earlier that failed. Not that one that one and it should now work. Now we have a route to get to the other side but you have to actually tell him okay and let me just summarize here. Do show run interface gigabit 00 got 36. You have to tell him that he's getting his address from DHCP but to go ahead and install the prefix from neighbor discovery. So to have the router sort of act like a full blown client for DHCP so to speak you would have to combine those two things. Okay and the other thing to note here is that if you switch over not switch over sorry we're already on router six. Do show IPV6 interface brief is even though I have the link local address hard coded on this one. Notice that does not affect the address he gets from DHCP. So this does not affect DHCP the same as it does you know stateless auto configuration or just saying you know IPV6 address putting in a prefix and saying EUY 64. And that's because although this is a way of automatically getting your address it's not a way of automatically assigning yourself an address. So that's the real difference here you're actually getting an address from DHCP. If I let the link local address override that host portion. Well I mean just to be blunt you might as well go back to doing slack again then because frankly you haven't accomplished anything you came here to do. The idea behind this whole thing honestly is that you can come back over here and we can say for example do more DHCP V6 dot that. Oops I know that's not found because that's not right. Okay and if you take a look at this this is just a text output of the DHCP binding table. I'm just showing you that you can see it. You can of course also see it obviously by doing the bindings which I looked at a minute ago. But you know he's got a record he's got a database that that exact address has been given out to that client. And you know this is what makes this state full versus stateless. We looked at stateless DHCP in the previous lesson and if that's what we wanted then we should have stayed there. The whole point of this is we want to actually get the client portion of the address the host portion if you will from DHCP. So this is of course going to be that exception to the you know oh the link local address overrides dynamically learned. This is technically dynamically learned but it's been assigned. It's not just being made up which is what we get with the other choices. Okay so to switch back over here we did take a look at already configuring the IPv6 interface and again that's just saying IPv6 address DHCP. Okay so that was just and of course not to mention the of course signing a signing on the server side. Assigning the server to the interface and then the DHCP client. Okay controlling the host portion with the link local address. Well the answer on this one is you can't. Okay so put that on there just so I remember to show you but there it is you can't control it. And just as a final here because I will clean this up again for the next lesson. Just to show you one last time so do show run interface f a 00 dot 36. Okay so one more time you've got the pool assigned to the interface that's really all you need except an actual active address as well. Okay and also on router six. Space got in the wrong place. So again he's just getting his address from DHCP and if you want the route the auto config prefix. Now one other thing to note since this is a router and we'll get to this possibly a little bit later but it doesn't really matter a whole lot. I just want to point out that if you were also going to run OSPF, EIGRP, RIP, BGP not so much but if you were going to run one of your routing protocols over all of this then you don't need that auto config prefix. Because even though I have a slash 128 which again is right here even though that's what I have I would learn the slash 64 from OSPF, EIGRP, RIP, whatever's on the other side. I would learn that anyway. So another way to get around that IPv6 neighbor discovery auto config prefix would be to actually run a well I can't say any but most of your routing protocols over this would fix this problem as well. You could always of course do a static default route as well which just to show you be very very simple right. I would just say no. Take out the prefix. This then should not be pingable to the other side again. No valid route. And then just say IPv6 route colon colon slash zero out. It's really the best to put in the next top so F E eight zero colon colon three and then it's going to want the egress interface admin distance and so on. So we'll say. Yeah. I know that. So why is it not so it's going to make me actually do it this way fine so percent. Some of the older code asked you for the interface right there and this code is not. You have it ethernet zero zero drop thirty six. I thought I did that. As you can see when you start messing with link locals like that it becomes a little bit entertaining. It wants the interface first. There we go. All right fine. So gigabit zero zero dot thirty six to the next top. F E eight zero colon colon three there. All of that is put in a static route. You can see how often I use static routes right. Since that's one of the big no nose on your CCIE labs and I teach that a lot then. You actually start getting a little bit rusty on like the simple stuff. And I want to do the painting. I was probably way far back. There we go. See but now we have a static routes and now it works. So do show IP V six out. And now we have a static default just because we put it in. So easy enough. So that's DHCP if you actually want to use the router as a standard DHCP server and a standard DHCP client.