『计算机网络』计算机网络实验——常用指令

配置NAT(关键)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[R1]acl basic 2001 // 在V7设备中(线下设备),使用acl basic命令;在V5设备中(线上设备),使用acl number命令
[R1-acl-2001]rule permit source 10.0.0.0 0.0.0.255 // 根据局域网的网段配置
[R1-acl-2001]rule deny sourse any // 允许IP源地址为10.0.0.0/24的外出数据包
[R1]nat address-group 1 // 进入地址池1
[R1-address-group-1]address 192.168.5.105 192.168.5.109 // 定义一个包含5个公网地址的地址池,地址池名为1
[R1]interface e 1/0/1
[R1-Ethernet 1/0/1]nat outbound 2001 address-group 1 // 在出接口e 1/0/1启动地址转换,指定number和group
[R1]ip route-static 0.0.0.0 0.0.0.0 192.168.5.1 // 在路由表添加默认静态路由,
分别是目标IP,目标IP子网掩码,下一条地址

acl basic/number 2001
rule permit source 10.0.0.0 0.0.255.255 // 看情况
rule deny source any // 可以不用
nat address-group 1
address x.x.x.x x.x.x.x
inter e0/1
nat outbound 2001 address-group 1
ip route-static 0.0.0.0 0.0.0.0 192.168.5.1

当于OSPF结合时,需要通告默认路由

1
2
[R1]ospf // 进入ospf
[R1-ospf-1]default-route-advertise cost 100 // 通告默认路由配置

VLAN:数据链路层

VLAN端口分类

交换机的端口可以分为Access, Trunk和Hybrid三类。

  • Access:连接不支持VLAN技术的终端设备(如主机)的(交换机)端口,主机和交换机的连接端口通常都是Access
  • Trunk:连接支持VLAN技术的网络设备(如交换机)的(交换机)端口,收到的数据一般带有VLAN标签(数据帧VLAN和端口默认VLAN ID相同的除外);向外发送数据帧时,须保证接收端可以区分不同的VLAN,因此常常需要添加VLAN标签(数据帧VLAN ID和端口默认VLAN ID相同的除外),一般用于交换机之间的连接
  • Hybrid:Access和Trunk的混合模式,在Hybrid下工作的端口可以属于多个VLAN,可以接收和发送多个VLAN的报文,可以用于交换机之间的连接,也可以用于连接用户。

默认VLAN

每个(交换机)端口的属性,值为pvid,可以人为设置。交换机从某个端口收到一个不带VLAN标签的数据帧的时候,会在交换机内部将该数据帧视为带默认VLAN标签的数据帧。

H3C交换机初始化时,将每个端口设置为VLAN1,且VLAN1是每个端口的默认VLAN(pvid=1),VLAN1是untagged的。

带标签(tagged)和不带标签(untagged)

tagged和untagged是端口的VLAN属性,用于确定从该端口发出的数据帧是否带VLAN标签。

一般来说,Access端口是untagged的;Trunk端口只有默认VLAN才是untagged,其他端口都是tagged;Hybrid端口比较灵活,可以自由设置。

创建VLAN

1
2
[h3c]vlan 2 // 创建vlan 2,2可以替换为其他vlan id,执行后会变为[h3c-vlan2]
[h3c]undo vlan 2// 删除vlan 2,2可以替换为其他vlan id

VLAN添加端口

1
2
3
[h3c]vlan 2 // 创建/进入 vlan 2
[h3c-vlan2]port ge 1/0/1 to ge 1/0/3 // 进入vlan后,使用port ... to ...将某一范围内的端口添加到该VLAN,使用的是基于端口的VLAN划分。需要注意的是,e是Ethernet的缩写,线下网络实验室应当使用g
[h3c-vlan2]undo port ge 1/0/1 to ge 1/0/2 // 将e 1/0/1 to e 1/0/3从VLAN2中删除

指定端口类型(trunk)

1
2
3
4
[h3c]int e 1/0/1 // 首先进入指定的端口
[h3c-Ethernet 1/0/1]port link-type trunk // 将端口类型设置为trunk
[h3c-Ethernet 1/0/1]undo port link-type // 取消端口类型设置
[h3c-Ethernet 1/0/1]port link-type hybrid // 将端口类型设置为hybrid

指定/删除Trunk端口可以通过的VLAN数据帧

1
2
[h3c-Ethernet 1/0/1]port trunk permit vlan 2 to 3 // 允许通过2和3的数据帧
[h3c-Ethernet 1/0/1]undo port trnk permit vlan 2 to 3

配置VLAN IP

1
2
[H3C]inter vlan 2 // 进入interface vlan 2
[H3C-Vlan-interface3] ip addr 40.1.1.1 24 // 配置VLAN2的ip

二层交换机的端口不会配置IP,VLAN 的 IP 地址是为了在网络层上为该 VLAN 中的所有端口提供服务,而不是给每个端口单独配置 IP 地址,给 VLAN 配置 IP 地址意味着你在设置一个网络层的接口,供 VLAN 中的所有设备共用作为通信的网关

三个数据链路层协议

PPP协议

1
2
3
4
5
6
[R1-Serial1/0]link-protocol ppp // 配置PPP
<R1>debugging ppp all // 打开PPP的debug开关
<R1>terminal debugging // 显示debug信息

[R1-Serial 1/0]shutdown // 关闭接口
[R1-Serial 1/0]undo shutdown // 启用接口

PAP验证

1
2
3
4
5
6
7
8
9
10
11
12
// R1 主验证方
[R1]local-user RTB class network // 配置用户
[R1-local-network-RTB]service-type ppp // 配置服务类型
[R1-local-network-RTB]password simple aaa // 配置用户密码
[R1]interface Serial 1/0
[R1-Serial1/0]ppp authentication pap // 授权PAP验证
// R2 被验证方
[R2]interface Serial 1/0
[R2-Serial 1/0]ppp pap local-user RTB password simple aaa // 配置PAP用户名和视图

<R1>debugging ppp pap all
<R1>terminal debugging

CHAP验证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[R1]local-user RTB class network // 配置用户列表
[R1-luser-network-RTB]service-type ppp // 配置服务类型
[R1-luser-network-RTB]pasword simple aaa // 配置用户对应的密码
[R1]Serial 1/0
[R1-Serial 1/0]ppp authentication-mode chap // 授权CHAP验证
[R1-Serial 1/0]ppp chap user RTA // 配置本地名称

[R2]local-user RTA class network // 配置用户列表
[R2-luser-network-RTA]service-type ppp //配置服务类型
[R2-luser-network-RTA]password simple aaa // 配置用户对应的密码
[R2]interface Serial 1/0
[R2-Serial 1/0]ppp chap user RTB // 配置本地名称

<R1>debugging ppp chap all
<R1>terminal debugging

查看路由表

1
[H3C]display ip routing-table

OSPF协议

配置Router ID

1
2
3
<H3C>system-view
[H3C]router id 1.1.1.1 // 配置路由器的router id为1.1.1.1
[H3C]undo router id // 删除router id

启动OSPF

1
2
3
4
5
6
[R1]router id 1.1.1.1 // 有时候不需要这一步
[R1]ospf // 启动ospf协议进程
[R1]undo ospf // 关闭ospf协议进程 reset ospf all process
[R1-ospf-1]area 0 // 创建area 0区域视图
[R1-ospf-1]undo area 0 // 删除area0
[R1-ospf-1-area-0.0.0.0]network 1.1.1.0 0.0.0.255 // 指定网段运行OSPF协议,最重要, 前面是网段,后面是掩码取反

显示OSPF调试信息

1
2
3
4
<R1>debugging ospf event
<R1>terminal debugging // 然后断线重连

<R1>reset ospf all process // 重启ospf进程

配置回环地址(LoopBack)

1
2
[h3c]inter loop 1 // 进入loopback1
[h3c-LoopBack1]ip addr 4.4.4.4 32 // 配置ip为4.4.4.4/32

配置串口(Serial)

路由器间不能使用以太网口直连,需要使用串口。

1
2
[R1]interface s 0/0 // 进入串口0/0,e就是serial
[R1-Serial 0/0]ip addr 192.168.1.1 24

配置OSPF Cost

1
2
3
4
5
6
7
8
9
// 为VLAN配置ospf cost
[R1]inter vlan 3
[R1-Vlan-Interface3]ospf cost 100 /// 配置ospf cost
// 为端口配置ospf cost
[R1]inter g 0/0
[R1-G..0/0]ospf cost 100 // 配置ospf cost
// 为串口配置ospf cost
[R1]inter s 0/0 // 进入串口
[R1-Serial0/0]ospf cost 200 // 配置ospf cost

配置缺省路由

1
2
[H3C]ip route-static 0.0.0.0 0.0.0.0 129.0.0.1 // 配置缺省路由器为129.0.0.1,和计算机网关的作用类似
第一个0.0.0.0目的网络地址,第二个0.0.0.0目的地址子网掩码,第三个129.0.0.1下一跳地址

查看OSPF LSDB(五类LSA如何查看)

1
2
3
4
5
6
display ospf lsdb # 所有LSA
display ospf lsdb router # 第一类LSA
display ospf lsdb network # 第二类LSA
display ospf lsdb summary # 第三类LSA
display ospf asbr # 第四类LSA,第五类过边界
display ospf ase # 第五类LSA,外部信息注入

排查故障指令

1
2
[R1]display ospf peer // 查看邻居路由器状态
[R1]reset ospf all // 重启ospf协议

路由引入(重点中的重点)

将静态路由或直连路由导入到动态路由协议中,使得其他路由器可以通过动态路由协议学习到这些路由。

直连路由:路由器的端口与127.0.0.1的连接,端口对应的网段与端口之间的连接

1
2
3
[S1-ospf]import-route direct // 引入直连路由
[R1]ip route-static 192.168.5.0 255.255.255.0 192.168.3.2 // 配置静态路由
[R1-ospf]import-route static // 引入静态路由

tracert

tracert命令可以追踪经过的路由器路径,验证cost配置的正确性:

1
tracert {-d} 10.35.3.1 // PC可以使用-d,但是路由器和交换机似乎不支持

网络设备默认不回应tracert命令,因此需要手动开启:

1
2
[S1]ip ttl-expires enable
[S1]ip unreachables enable

OSPF的五种报文以及其交互过程

路由器和交换机相连是某个网段相连,在这个网段下会选举路由器的接口作为DR,产生三类LSA;而两台路由器之间是点对点连接,无网段,无DR,BDR。

OSPF状态转移图:

img.png

BDR和DR选举过程:

在全连接网络中,Hello报文交换时选举,每台路由器拥有全部信息,则使用相同的算法就可以选举出DR和BDR。

BGP实验

img.png

启动BGP,并配置邻居(以上图为例),注入回环路由信息

1
2
3
4
5
6
7
8
9
10
11
[R1]bgp 100 // 在R1上启动BGP协议,AS号为100(重要)
[R1]undo bgp
[R1-bgp]peer 1.1.1.2 as-number 300 // 配置它的邻居IP,即与它相邻的路由器接口的IP地址与对应的AS号
[R1-bgp]address-family ipv4 unicast // 新版本要进入ipv4使能邻居,考试时必须注意
[R1-bgp-ipv4]peer 1.1.1.2 enable

[R1]bgp 100 // 进入BGP视图
[R1-bgp]network 5.5.5.5 255.255.255.255 // 注入5.5.5.5/32网段的路由信息,令5.5.5.5通过bgp在不同AS间传播。目的地址,子网掩码
/////////////////////////////////
[S1]bgp 300
[S1-bgp]peer 1.1.1.1 as-number // 其余路由器同理,注意AS与邻居的AS

强制下一跳为本身接口(next-hop-local)

1
2
[S1-bgp]peer 3.1.1.2 next-hop-local // 强制下一跳为本身接口
*意思是由s1发出去的bgp信息的下一跳字段,如果是3.1.1.2(即从s2过来的),则改为本地接口*,这是由于在IGP内部没有配置OSPF导致的,如配置了OSPF则无问题

同一网段直接相连的两个接口可通过直连路由产生路由表

BGP协议状态转移

img.png

查看BGP路由表

1
[R1-bgp]display bgp routing-table // 查看BGP路由表

查看BGP邻居状态

1
[R1]display bgp peer

debug信息,查看BGP协商过程

1
2
<R1>debugging bgp event
<R1>terminal debugging

路由引入

1
2
[R1-bgp]import-route direct // 引入直连路由
[R1-bgp]import-route static // 引入直连路由

BGP路由聚合

1
2
3
4
5
[R1]bgp 100
[R1-bgp]aggregate 192.168.0.0 255.255.240.0 //通过具体路由和聚合路由
[R1-bgp]undo aggregate 192.168.0.0 255.255.240.0

[R1-bgp]aggregate 192.168.0.0 255.255.240.0 detail-supressed // 只通告聚合路由

路由策略

基于ACL的路由过滤

1
2
3
4
5
[R2]acl number 2001
[R2-acl-basic-2001]rule 0 deny source 5.0.0.0 0.255.255.255
[R2-acl-basic-2001]rule 1 permit source 0.0.0.0 255.255.255.255
[S2]bgp 300
[S2-bgp]peer 2.1.1.2 filter-policy 2001 export // 配置基于ACL的路由过滤

配置基于AS-Path的路由过滤

1
2
3
4
[S1]ip as-path 1 deny \b200$ // 设置拒绝来自AS200的路由
[S1]ip as-path 1 permit ^$ // 设置允许本AS的路由
[S1]bgp 300
[S1-bgp]peer 1.1.1.1 as-path-acl 1 export // 将1.1.1.1接口配置基于AS-Path的路由过滤,即令r1无法收到来自AS200的BGP信息,关键

配置基于Route Policy的路由过滤

1
2
3
4
5
6
7
8
9
10
11
[S1]acl number 2001  // number是v7
[S1-acl-basic-2001]rule 1 deny source 6.0.0.0 0.255.255.255
[S1-acl-basic-2001]rule 2 permit source any
[S1-acl-basic-2001]quit
[S1]route-policy deny6 permit node 10 // 配置route-policy内容
[S1-route-policy]if-match ip address acl 2001
[S1-route-policy]apply cost 888
[S1-route-policy]quit
[s1]Bgp 300
[S1-bgp-default]address-family ipv4 unicast
[S1-bgp-default-ipv4]peer 1.1.1.1 route-policy deny6 export

BGP四种报文

Open, KeepAlive, Update, Notification

BGP配置LocalPre和Med

V5:

LocalPre: 是一个本地属性,用于在一个自治系统(AS)内部选择最佳路由,默认为100,越大越选择。

1
[R1-bgp]default local-preference xx

Med: 是一个用于跨 AS 边界的属性,用来告知相邻 AS 如何选择进入本 AS 的最佳路径。它主要用于在多条进入路径中选择优先级, 默认值为0,越小越选择。

1
[R1-bgp]default med 10

V7:

LocalPre:

模拟题1

1
2
3
4
5
6
为使 4.4.4.4 -> 5.5.5.5
[R2]ip route-static 1.x.0.0 255.255.0.0 2.x.1.1
[S2]ip route-static 5.5.5.5 255.255.255.255 3.x.1.1
为使 5.5.5.5 -> 4.4.4.4
[S1]ip route-static 2.x.0.0 255.255.0.0 3.x.1.2
[S2]ip route-static 4.4.4.4 255.255.255.255 2.x.1.2

复杂组网de坑

  1. 将内部全部配好ospf与ibgp,注意边界端口的ip不要引入ospf中。

  2. 每个路由器/交换机的ospf中都要引入router id

  3. 非边界路由器只需配置内部全部peer即可(慢慢敲)
  4. 边界路由器需要做几项工作
    1. 配置内部全部peer
    2. 配置对端外部peer
    3. 将自己的ospf引入bgp. import-route ospf 1
    4. 将自己的边界端口对应ip引入bgp

如此可全网互通。

  1. 把VRRP配了(未检查,应该不太重要)

    img.png

  2. 将全网联通 (配置路由器和交换机的指令记录)

  3. 将路由过滤,只保留192.168的路由

    在边界路由器上配置

    [R2]acl number 2001
    [R2-acl-basic-2001]rule 0 permit source 192.168.0.0 0.0.255.255
    [R2-acl-basic-2001]rule 1 deny source any
    [S2]bgp <as号>
    [S2-bgp]peer <跨as的peer> filter-policy 2001 export // 配置基于ACL的路由过滤

    [S2-bgp]peer <跨as的peer> filter-policy 2001 import

  4. 将NAT配置

  5. 将优选路径配置