拓扑

配置路由器
根据拓扑搭建利用 GNS3 搭建实验环境,注意,路由器型号用 7200。
配置路由器 R1,将其配置为 PPPoE 服务器,参考命令如下(注:下面 IP 地址的第 2 字节修改为自己班级,第 3 字节修改为自己学号后两位)。
R1(config)#hostname PPPoE
PPPoE(config)#int lo0
PPPoE(config-if)#ip address 211.67.191.16 255.255.255.0
PPPoE(config-if)#ip address 64.1.30.33 255.255.255.0 secondary
PPPoE(config-if)#no shutdown
配置 DHCP 服务器,并命名为 cisco,此处修改为自己的姓名拼音
PPPoE(config)#ip dhcp pool twl
PPPoE(dhcp-config)#network 192.1.30.0 /24
PPPoE(dhcp-config)#dns-server 211.67.191.16
PPPoE(dhcp-config)#ip dhcp excluded-address 192.1.30.1
配置虚拟模板用于实施对于客户端的身份验证,使用 PAP 认证。
PPPoE(config)#int virtual-template 130
PPPoE(config-if)#encapsulation ppp
PPPoE(config-if)#ppp authentication pap
PPPoE(config-if)#peer default ip address dhcp-pool twl
PPPoE(config-if)#ip address 192.1.30.1 255.255.255.0
PPPoE(config-if)#no shutdown
启用 VPDN,并配置 VPDN 的组 1,指出接受客户端呼叫。并且采用 PPPOE 的协议。同时使用虚拟模板 1 的参数与客户端协商。
PPPoE(config)#vpdn-group 130
PPPoE(config-vpdn)#accept-dialin
PPPoE(config-vpdn-acc-in)#protocol pppoe
PPPoE(config-vpdn-acc-in)#virtual-template 130
在接口 f0/0 上启用 PPPoE
PPPoE(config)#interface f0/0
PPPoE(config-if)#pppoe enable
PPPoE(config-if)#no shutdown
创建本地登录用户名和密码,用户名修改为自己的姓名,密码修改为自己的学号。PPPoE(config)#username twl password 5005180130
问题1:在本地查看路由表,能看到哪些选项?(截图)
问题2:在特权模式下输入命令 show running-config | section dhcp 查看到的结果
问题 3:在特权模式下输入命令 show running-config | section Template 查看到的结果
在主机上创建连接拨号。
单击【开始】—【程序】—【附件】—【通讯】—【新建连接向导】,打开新建连接向导。
单击【下一步】,选择“连接到 Internet”
单击【下一步】,选择“要求用户名和密码的宽带连接来连接”选项。
单击【下一步】,输入宽带连接的名称。
单击【下一步】,选择“只允许我使用”选项。
单击【下一步】,输入用户名和密码,改用户名和密码为在路由器上配置的用户名和密码, 即自己的姓名和学号。
单击【下一步】,把“在桌面上添加快捷方式”复选框选中,单击【完成】按钮,完成新建连接向导。
打开抓包工具 Wireshark 或者 Sniffer,开启抓取数据包
单击桌面上的新建连接,单击连接按钮。
问题 4:此时能否连接上?在主机中打开命令行,用 ipconfig /all 查看本地连接情况。
答:可以连接上。
问题 5:在主机中 ping 211.67.191.16 和 64.100.58.33,查看能否 ping 通。
答:如图所示,可以ping通。
问题 6:在路由器上输入 show pppoe session,查看结果。
问题 7:在路由器上输入 show ip dhcp binding,查看结果。
5、断开连接,然后停止数据抓包,把抓取的数据报保存下来,文件名“班级_姓名_学号”。
6、打开抓取的数据报,查看抓取的报文中 PPPoE 发现阶段使用了几个报文?PPPoE 报文的版本号和 Type 类型是多少?
答:抓取的报文中PPPoE发现阶段使用了四个报文
(1)PADI:即客户端通过广播请求以获取可用的AC。
(2)PADO:在收到请求后,若AC可以提供服务,则返回该报文。
(3)PADR:如果客户端收到来自多个AC的应答,则必须从中选择一个并向该AC发出请求。
(4)PADS:收到请求的AC向客户端返回确认,从而建立连接。
PPPoE报文的版本号为1,type类型为1。
根据抓取的数据包填写下表
表 1-1 PPPoE 发现阶段报文
| 数据链路层 | PPPoE层 | ||||||
|---|---|---|---|---|---|---|---|
| 目的 MAC | 源 MAC | 链路层Type | Code | SessionID | 长度 | Uniq | Cookie |
| Broadcast (ff:ff:ff:ff:ff:ff) | Vmware_71:1b:0a (00:0c:29:71:1b:0a) | PPPoE Discovery (0x8863) | Active Discovery Initiation (PADI) (0x09) | 0x0000 | 16 | 0200000003000000 | |
| Vmware_71:1b:0a (00:0c:29:71:1b:0a) | ca:01:46:30:00:08 (ca:01:46:30:00:08) | PPPoE Discovery (0x8863) | Active Discovery Offer (PADO) (0x07) | 0x0000 | 45 | 0200000003000000 | 92fae786789ff6b343258e0da6954069 |
| ca:01:46:30:00:08 (ca:01:46:30:00:08) | Vmware_71:1b:0a (00:0c:29:71:1b:0a) | PPPoE Discovery (0x8863) | Active Discovery Request (PADR) (0x19) | 0x0000 | 36 | 0200000004000000 | 92fae786789ff6b343258e0da6954069 |
| Vmware_71:1b:0a (00:0c:29:71:1b:0a) | ca:01:46:30:00:08 (ca:01:46:30:00:08) | PPPoE Discovery (0x8863) | Active Discovery Session-confirmation (PADS) (0x65) | 0x0002 | 36 | 0200000004000000 | 92fae786789ff6b343258e0da6954069 |
PADI:在以太网上通讯只能通过MAC地址。由于计算机不知道AC的MAC地址,于是就在以太网上广播一个PADI报文。这个报文中包含发送者的MAC地址。
PADO:用户计算机发送了PADI报文,AC则使用PADI中提供的MAC地址回复一个PADO报文。PADO报文中包含了AC的MAC地址、名称以及服务名。
PADR:当用户计算机收到一个来自AC的可接受的PADO报文后,就会发送一个PADR报文给AC,用来确认接受发送PADO报文的AC所提供的PPPoE连接。
PADS:PADR报文由AC的PADS报文进行确认,并在其中携带一个会话ID。用户计算机与此AC的连接现在就完整创建了。
7、在抓取的数据包中查找LCP 报文,查看在LCP 配置阶段最后一个LCP 报文的编号是多少? Option 选项有哪些,这些选项的值是多少?(提示,查找最后协商结果报文)
答:查看在LCP 配置阶段最后一个LCP 报文的编号为70。
Option 选项有Identifier、Length,这些选项的值分别是11(0x0b)、4。
8、查看 PAP 认证报文,填写表 1-2,没有的话空着。
表 1-2 PAP 认证
| 报文编号 | PPP 协议类型 | Code | ID | 长度 | 用户名 | 密码 | |
|---|---|---|---|---|---|---|---|
| 认证请求 | 26 | Password Authentication Protocol (0xc023) | Authenticate-Request (1) | 1 | 3 | twl | 5005180130 |
| 认证响应 | 27 | Password Authentication Protocol (0xc023) | Authenticate-Ack (2) | 1 |
被认证方向认证方发送认证请求request(包含用户名和密码),并以明文形式进行传输。
认证方接到认证请求,再根据被认证方发送来的用户名去到自己的数据库认证用户名密码是否正确。密码正确,PAP认证通过,并发送认证响应报文ack
8、在抓取的报文中找到分配 IP 地址的报文编号,使用什么协议分配的,分配 DNS 服务器地址的报文编号是什么?是使用什么协议分配的?
答:分配 IP 地址的报文编号为41,使用PPP IPCP协议分配的。
分配 DNS 服务器地址的报文编号是41、43?是使用DHCP协议分配的。

11、在路由器上修改认证方式为 chap,配置命令如下:
PPPoE(config)#interface virtual-template 130
PPPoE(config-if)#ppp authentication ms-chap-v2
12、配置后,打开 Wireshark 抓包,重新连接,查看能否连接上,如果能的话断开连接,停止抓包,把抓取的数据包文件命名为“班级_姓名_学号 2”。
答:配置后,重新连接,可以连接上。
13、打开抓取的数据报,查找到 CHAP 认证的报文,根据报文填写表 1-3,没有的字段空着value 值填前 3 个字节的十六进制值,Message 填前 6 个字符。
表 1-3 CHAP 认证
| 报文编号 | PPP 协议字段值 | Code | ID | 长度 | Value size | Value | Name | Message |
|---|---|---|---|---|---|---|---|---|
| 18 | Challenge Handshake Authentication Protocol (0xc223) | Challenge (1) | 1 | 26 | 16 | f7550248a8b4dec465d3e29e717f1c22 | PPPoE | |
| 21 | Challenge Handshake Authentication Protocol (0xc223) | Response (2) | 1 | 57 | 49 | 032a0806319b7b0f0a4b1b1d0286f5930000000000000000… | twl | |
| 23 | Challenge Handshake Authentication Protocol (0xc223) | Success (3) | 1 | 46 | S=51E9B7C7D3E816E6C780D61A6EC8BE53A9868987 |
CHAP通过三次握手验证被认证方的身份(密文),在初始链路建立时完成,为了提高安全性,在链路建立之后周期性进行验证。
认证方发送挑战信息:01(challenge)、id(序列号)、随机数据、认证方认证用户名。
被认证方接收到挑战信息,根据接收到认证方的认证用户名到自己本地的数据库中查找对应的密码,查到密码再结合主认证方发来的id和随机数据根据MD5算法算出一个Hash值。
被认证方回复认证请求,认证请求里面包括:02(认证响应报文response)、id(与认证请求中的id相同)、Hash值、被认证方的认证用户名。
认证方处理挑战的响应信息,根据被认证方发来的认证用户名,认证方在本地数据库中查找被认证方对应的密码(口令)结合id找到先前保存的随机数据和id根据MD5算法算出一个Hash值,与被认证方得到的Hash值做比较,如果一致,则认证通过。
认证方发送报文包含:03(success)告知被认证方认证通过。