# 思科模拟器企业组网

使用思科模拟器简单搭建一个企业网络
<!--more-->
![网络拓扑图](https://1mg.1144514.xyz/2026/04/20260424001242595.webp)
## 序
包含以下知识点:
- 双机热备
- STP
- 无线 / AP 接入
- DHCP / DNS / WEB / FTP 服务器
- OSPF 动态路由
- 串口广域网
- 动态 NAT

- `2960`：接入层二层交换机，只负责 `Access / Trunk`
- `3560`：汇聚层三层交换机，负责 `SVI + ip routing + HSRP + STP`
- `4331`：核心 / 出口路由器，负责 `OSPF + 串口 + 默认路由 + NAT`

## 推荐配置顺序
1. 先画拓扑，给每条链路和每个 VLAN 编号
2. 先配服务器静态 IP，再开 `DHCP / DNS / WEB / FTP`
3. 打通二层：`VLAN + Access + Trunk + STP`
4. 配三层网关：`SVI + ip routing + HSRP`
5. 配路由器互联：园区链路、串口、OSPF
6. 配出口：默认路由、默认路由发布、NAT
7. 最后逐段验证：拿地址、跨 VLAN、跨区域、出外网、DNS 解析、主备切换

## IP 分配
- `192.168.11.0/24`：服务器区，`DHCP / DNS / WEB / FTP` 所在网段
- `192.168.12.0/24`：服务器接入路由器到核心路由器
- `192.168.13.0/24`：核心路由器到总公司接入路由器
- `192.168.14.0/24`、`192.168.15.0/24`：总公司接入路由器与双核心交换机之间的三层互联
- `192.168.17.0/24`：核心路由器到出口路由器
- `100.1.1.0/24`：出口到外网路由器
- `192.168.1.0/24` 到 `192.168.8.0/24`：业务 VLAN 网段

## 相关知识点
| 技术                  | 解决的问题              | 关键点                          |
| ------------------- | ------------------ | ---------------------------- |
| `VLAN + Trunk`      | 二层隔离与跨交换机承载多个 VLAN | Access 口给终端，Trunk 口给交换机 / 汇聚 |
| `STP`               | 二层冗余链路防环           | 通过选根桥和阻塞端口避免广播风暴             |
| `HSRP`              | 默认网关冗余             | 客户端始终指向虚拟 IP，不关心当前主设备是谁      |
| `SVI + ip routing`  | VLAN 间路由           | 三层交换机必须开启 `ip routing`       |
| `ip helper-address` | 跨网段 DHCP           | 把广播转换为单播转发到 DHCP 服务器         |
| `OSPF`              | 全网动态路由             | 只在真正的三层邻居之间建邻接               |
| `NAT`               | 私网访问公网             | 出口路由器要分清 `inside / outside`  |
| `默认路由`              | 去未知网段的出口方向         | 常在出口设备上配置，并发布给内部             |

一个很重要的配合关系：
- `HSRP` 决定“谁当默认网关”
- `STP` 决定“二层流量先走哪条链路”

实际设计里，最好让同一个 VLAN 的 `HSRP Active` 和 `STP Root` 尽量落在同一台设备上，避免流量先绕远路再去找网关。

## 内部服务器配置
服务器区需要配置 `WEB`、`DNS`、`DHCP`、`FTP`，其中最关键的是 `DHCP`。

基本要求：
- 所有服务器都用静态 IP
- 正确填写默认网关
- DNS 服务器为 WEB 服务器添加 `A` 记录
- DHCP 地址池为各 VLAN 分配地址、网关、DNS
- FTP 配置本地用户名和密码
- WEB 开启 `HTTP` 和 `HTTPS`

DHCP 地址池示意：
![DHCP 地址池](https://1mg.1144514.xyz/2026/04/20260424001242596.webp)

FTP 服务器配置用户名和密码。

同时需要给内部服务器配置静态 IP 和网关。

## 路由器与交换机配置
### 1. 服务器接入路由器
作用：
- 连接服务器区和园区核心
- 为非本地网段的客户端转发 DHCP 请求

```cisco
interface GigabitEthernet0/0/0
 ip address 192.168.11.5 255.255.255.0

interface GigabitEthernet0/0/1
 ip address 192.168.12.1 255.255.255.0
 ip helper-address 192.168.11.3

router ospf 10
 log-adjacency-changes
 network 192.168.11.0 0.0.0.255 area 0
 network 192.168.12.0 0.0.0.255 area 0
```

说明：
- `ip helper-address 192.168.11.3` 表示把 DHCP 广播转发给中心 DHCP 服务器
- `router ospf 10` 里的 `10` 是本地进程号，只在本设备上有意义，不要求全网一致

### 2. 核心路由器
作用：
- 连接服务器区、总公司园区、串口广域网和出口路由器
- 是整个实验的三层骨干之一

```cisco
interface GigabitEthernet0/0/0
 ip address 192.168.12.2 255.255.255.0

interface GigabitEthernet0/0/1
 ip address 192.168.13.1 255.255.255.0
 ip helper-address 192.168.11.3

interface Serial0/2/0
 ip address 192.168.16.1 255.255.255.0
 ip helper-address 192.168.11.3

interface Serial0/2/1
 ip address 192.168.17.1 255.255.255.0
 clock rate 64000

router ospf 20
 log-adjacency-changes
 network 192.168.12.0 0.0.0.255 area 0
 network 192.168.13.0 0.0.0.255 area 0
 network 192.168.16.0 0.0.0.255 area 0
 network 192.168.17.0 0.0.0.255 area 0
```

说明：
- 串口如果是 `DCE` 端，需要 `clock rate 64000`
- 这里依然把 DHCP 请求中继到 `192.168.11.3`
- 这台设备是很多网段的汇聚点，一旦 OSPF 漏宣告，这里最容易出问题

### 3. 出口路由器
作用：
- 对内连接企业私网
- 对外连接 ISP / 模拟互联网
- 做动态 NAT，并向 OSPF 发布默认路由

```cisco
interface Serial0/1/0
 ip address 192.168.17.2 255.255.255.0
 ip nat inside

interface Serial0/1/1
 ip address 100.1.1.1 255.255.255.0
 ip nat outside
 clock rate 64000

router ospf 80
 log-adjacency-changes
 network 192.168.17.0 0.0.0.255 area 0
 default-information originate

ip nat pool DZC 100.1.1.3 100.1.1.10 netmask 255.255.255.0
ip nat inside source list 1 pool DZC
ip classless
ip route 0.0.0.0 0.0.0.0 100.1.1.2

access-list 1 permit 192.168.0.0 0.0.255.255
```

说明：
- `ip nat inside source list 1 pool DZC` 是动态 NAT 地址池，不是 PAT
- 如果希望很多内网主机共享少量公网地址，通常写成 `overload`
- `default-information originate` 的前提是本机路由表里已经有默认路由，所以 `ip route 0.0.0.0 0.0.0.0 100.1.1.2` 不能漏
- `inside / outside` 配反时，NAT 一定不生效

### 4. 外网路由器
```cisco
interface Serial0/1/0
 ip address 100.1.1.2 255.255.255.0

interface GigabitEthernet0/0/0
 ip address 100.1.2.1 255.255.255.0
```

这一台主要用于模拟 ISP / 互联网，只要把去出口的下一跳配通即可。

### 5. 总公司接入路由器
作用：
- 上联核心路由器
- 下联双核心交换机
- 其中 `NIM-ES 2-4` 模块提供的是二层交换口，所以需要用 `VLAN + SVI` 的方式承载三层地址

```cisco
interface GigabitEthernet0/0/0
 ip address 192.168.13.2 255.255.255.0

interface GigabitEthernet0/0/1
 ip address 192.168.14.1 255.255.255.0
 ip helper-address 192.168.11.3

interface GigabitEthernet0/1/0
 switchport mode access
 switchport access vlan 101

interface Vlan101
 mac-address 0060.471d.b601
 ip address 192.168.15.1 255.255.255.0
 ip helper-address 192.168.11.3

router ospf 50
 log-adjacency-changes
 network 192.168.13.0 0.0.0.255 area 0
 network 192.168.14.0 0.0.0.255 area 0
 network 192.168.15.0 0.0.0.255 area 0
```

说明：
- `NIM-ES` 模块出来的是交换端口，不能一边 `no switchport` 一边又 `switchport mode access`
- 正确思路是把物理口加入 `VLAN 101`，然后把 IP 配在 `interface Vlan101` 上
- 与它相连的交换机接口也要落到同一个 VLAN

与之相连的交换机接口示例：
```cisco
interface FastEthernet0/8
 switchport mode access
 switchport access vlan 101
```

### 6. 双机热备与双核心交换机
这部分是整套实验最容易配乱的地方。建议先明确三个事实：
- 三层交换机必须先开启 `ip routing`
- `HSRP` 给终端提供虚拟网关
- `OSPF` 只在真正连接到三层邻居的接口上建邻接，普通用户 VLAN 接口一般保持 `passive`

先看 OSPF 的思路：
```cisco
router ospf 60
 passive-interface default
 no passive-interface FastEthernet0/1
 network 192.168.1.0 0.0.0.255 area 0
 network 192.168.2.0 0.0.0.255 area 0
 network 192.168.3.0 0.0.0.255 area 0
 network 192.168.4.0 0.0.0.255 area 0
 network 192.168.5.0 0.0.0.255 area 0
 network 192.168.10.0 0.0.0.255 area 0
 network 192.168.14.0 0.0.0.255 area 0
```

这段配置的意思不是“VLAN 口不能跑 OSPF”，而是：
- 默认所有接口都不发 Hello
- 只有真正要与其他三层设备建邻居的口，才用 `no passive-interface` 打开
- 普通接用户的 SVI 依然可以被 `network` 宣告进 OSPF，只是不参与邻居建立

#### 左侧多层交换机
特点：
- 作为 `VLAN 10 / 20 / 30` 的主网关
- 同时承担这些 VLAN 的 `STP` 主根桥

```cisco
ip routing
spanning-tree mode pvst
spanning-tree vlan 10,20,30 priority 24576
spanning-tree vlan 40,50 priority 28672

interface FastEthernet0/1
 no switchport
 ip address 192.168.14.2 255.255.255.0

interface FastEthernet0/2
 switchport mode access
 switchport access vlan 100

interface FastEthernet0/3
 switchport trunk encapsulation dot1q
 switchport mode trunk

interface FastEthernet0/4
 switchport trunk encapsulation dot1q
 switchport mode trunk

interface FastEthernet0/5
 switchport trunk encapsulation dot1q
 switchport mode trunk

interface FastEthernet0/6
 switchport trunk encapsulation dot1q
 switchport mode trunk

interface FastEthernet0/7
 switchport trunk encapsulation dot1q
 switchport mode trunk

interface FastEthernet0/8
 switchport trunk encapsulation dot1q
 switchport mode trunk

interface FastEthernet0/9
 switchport trunk encapsulation dot1q
 switchport mode trunk

interface Vlan10
 mac-address 0001.c950.e401
 ip address 192.168.1.1 255.255.255.0
 ip helper-address 192.168.11.3
 standby 10 ip 192.168.1.254
 standby 10 priority 101
 standby 10 preempt
 standby 10 track FastEthernet0/1

interface Vlan20
 mac-address 0001.c950.e402
 ip address 192.168.2.1 255.255.255.0
 ip helper-address 192.168.11.3
 standby 20 ip 192.168.2.254
 standby 20 priority 101
 standby 20 preempt
 standby 20 track FastEthernet0/1

interface Vlan30
 mac-address 0001.c950.e403
 ip address 192.168.3.1 255.255.255.0
 ip helper-address 192.168.11.3
 standby 30 ip 192.168.3.254
 standby 30 priority 101
 standby 30 preempt
 standby 30 track FastEthernet0/1

interface Vlan40
 mac-address 0001.c950.e404
 ip address 192.168.4.1 255.255.255.0
 ip helper-address 192.168.11.3
 standby 40 ip 192.168.4.254
 standby 40 preempt
 standby 40 track FastEthernet0/1

interface Vlan50
 mac-address 0001.c950.e405
 ip address 192.168.5.1 255.255.255.0
 ip helper-address 192.168.11.3
 standby 50 ip 192.168.5.254
 standby 50 preempt
 standby 50 track FastEthernet0/1

interface Vlan100
 mac-address 0001.c950.e406
 ip address 192.168.10.254 255.255.255.0
 ip helper-address 192.168.11.3

router ospf 60
 log-adjacency-changes
 passive-interface default
 no passive-interface FastEthernet0/1
 network 192.168.14.0 0.0.0.255 area 0
 network 192.168.1.0 0.0.0.255 area 0
 network 192.168.2.0 0.0.0.255 area 0
 network 192.168.3.0 0.0.0.255 area 0
 network 192.168.4.0 0.0.0.255 area 0
 network 192.168.5.0 0.0.0.255 area 0
 network 192.168.10.0 0.0.0.255 area 0
```

#### 右侧多层交换机
特点：
- 作为 `VLAN 40 / 50` 的主网关
- 同时承担这些 VLAN 的 `STP` 主根桥

```cisco
ip routing
spanning-tree mode pvst
spanning-tree vlan 40,50 priority 24576
spanning-tree vlan 10,20,30 priority 28672

interface FastEthernet0/1
 switchport trunk encapsulation dot1q
 switchport mode trunk

interface FastEthernet0/2
 switchport trunk encapsulation dot1q
 switchport mode trunk

interface FastEthernet0/3
 switchport trunk encapsulation dot1q
 switchport mode trunk

interface FastEthernet0/4
 switchport trunk encapsulation dot1q
 switchport mode trunk

interface FastEthernet0/5
 switchport trunk encapsulation dot1q
 switchport mode trunk

interface FastEthernet0/6
 switchport trunk encapsulation dot1q
 switchport mode trunk

interface FastEthernet0/7
 switchport mode access
 switchport access vlan 110

interface FastEthernet0/8
 switchport mode access
 switchport access vlan 101

interface Vlan10
 mac-address 0001.c74b.9801
 ip address 192.168.1.2 255.255.255.0
 ip helper-address 192.168.11.3
 standby 10 ip 192.168.1.254
 standby 10 preempt
 standby 10 track FastEthernet0/8

interface Vlan20
 mac-address 0001.c74b.9802
 ip address 192.168.2.2 255.255.255.0
 ip helper-address 192.168.11.3
 standby 20 ip 192.168.2.254
 standby 20 preempt
 standby 20 track FastEthernet0/8

interface Vlan30
 mac-address 0001.c74b.9803
 ip address 192.168.3.2 255.255.255.0
 ip helper-address 192.168.11.3
 standby 30 ip 192.168.3.254
 standby 30 preempt
 standby 30 track FastEthernet0/8

interface Vlan40
 mac-address 0001.c74b.9804
 ip address 192.168.4.2 255.255.255.0
 ip helper-address 192.168.11.3
 standby 40 ip 192.168.4.254
 standby 40 priority 101
 standby 40 preempt
 standby 40 track FastEthernet0/8

interface Vlan50
 mac-address 0001.c74b.9805
 ip address 192.168.5.2 255.255.255.0
 ip helper-address 192.168.11.3
 standby 50 ip 192.168.5.254
 standby 50 priority 101
 standby 50 preempt
 standby 50 track FastEthernet0/8

interface Vlan101
 mac-address 0001.c74b.9807
 ip address 192.168.15.2 255.255.255.0

interface Vlan110
 mac-address 0001.c74b.9806
 ip address 192.168.11.1 255.255.255.0
 ip helper-address 192.168.11.3

router ospf 70
 log-adjacency-changes
 passive-interface default
 no passive-interface Vlan101
 network 192.168.1.0 0.0.0.255 area 0
 network 192.168.2.0 0.0.0.255 area 0
 network 192.168.3.0 0.0.0.255 area 0
 network 192.168.4.0 0.0.0.255 area 0
 network 192.168.5.0 0.0.0.255 area 0
 network 192.168.11.0 0.0.0.255 area 0
 network 192.168.15.0 0.0.0.255 area 0
```

补充说明：
- 左右两台交换机都要 `ip routing`
- `standby x priority 101` 的一侧会优先成为 `Active`
- `track` 上联口断开时，会降低优先级，方便主备切换
- 右侧设备上 `Vlan101` 是三层互联 VLAN，所以取消 `passive` 是合理的
- 普通用户 VLAN 如果没有直接连接三层邻居，就不需要 `no passive-interface`

### 7. 分公司接入路由器
```cisco
interface FastEthernet0/1
 no switchport
 ip address 192.168.18.2 255.255.255.0
 duplex auto
 speed auto

interface FastEthernet0/2
 switchport mode access
 switchport access vlan 80

interface FastEthernet0/3
 switchport trunk encapsulation dot1q
 switchport mode trunk

interface FastEthernet0/4
 switchport trunk encapsulation dot1q
 switchport mode trunk

interface Vlan60
 mac-address 0009.7c59.3801
 ip address 192.168.6.254 255.255.255.0
 ip helper-address 192.168.11.3

interface Vlan70
 mac-address 0009.7c59.3802
 ip address 192.168.7.254 255.255.255.0
 ip helper-address 192.168.11.3

interface Vlan80
 mac-address 0009.7c59.3803
 ip address 192.168.8.254 255.255.255.0
 ip helper-address 192.168.11.3

router ospf 40
 log-adjacency-changes
 network 192.168.6.0 0.0.0.255 area 0
 network 192.168.7.0 0.0.0.255 area 0
 network 192.168.8.0 0.0.0.255 area 0
 network 192.168.18.0 0.0.0.255 area 0
```

### 8. 二层交换机
二层交换机只做接入和转发，不承担网关职责。

```cisco
interface FastEthernet0/1
 switchport mode trunk

interface FastEthernet0/2
 switchport mode trunk

interface FastEthernet0/3
 switchport mode access
 switchport access vlan 10

interface FastEthernet0/4
 switchport mode access
 switchport access vlan 10
```

## 路由协议
路由协议里最常见的是 `OSPF`，`RIP` 也仍然是实验、题目和小型拓扑里经常出现的内容。这个实验主体用的是 `OSPF`，但 `RIP` 也建议会配、会查、会和 `OSPF` 做比较。

### OSPF
OSPF 会维护三张关键表：
1. 邻居表：已经建立邻接关系的设备
2. 链路状态数据库（LSDB）：全网链路状态信息
3. 路由表：SPF 计算后的最优路径

工作过程可以粗记为：
1. 用 `Hello` 发现邻居
2. 交换 `LSA`
3. 建立 `LSDB`
4. 运行 `SPF`
5. 安装路由

与 `RIP` 等距离矢量协议不同，`OSPF` 路由器不直接交换整张路由表，而是交换链路状态信息。

最基本的 OSPF 配置：
```cisco
Router(config)# router ospf 10
Router(config-router)# network 192.168.11.0 0.0.0.255 area 0
Router(config-router)# network 192.168.12.0 0.0.0.255 area 0
Router(config-router)# passive-interface default
Router(config-router)# no passive-interface g0/0/1
```

几个关键点：
- `router ospf 10` 里的 `10` 只是本机进程号，只在设备本地有意义
- 不同设备写成 `1`、`10`、`20` 都可以，不影响建邻
- 真正影响邻接是否建立的，是三层可达、Area 一致、Hello / Dead 定时器一致、认证一致，以及没有被 `passive-interface` 禁掉
- `passive-interface default` 很适合企业网，默认把所有接口设为被动，只把真正需要建邻的口开放出来

**常用 OSPF 检查命令**：
```cisco
show ip ospf neighbor
show ip protocols
show ip ospf
show ip route ospf
```

### RIP
RIP 是典型的距离矢量协议，特点是简单，但能力也弱一些。

RIP 的几个考试 / 实验重点：
- 以“跳数”作为度量值
- 最大跳数是 `15`，`16` 代表不可达
- 周期性发送更新，默认大约每 `30` 秒一次
- 收敛速度比 OSPF 慢，不适合较大的企业网络
- 一般在小型拓扑、入门实验、简单分支网络里使用

如果要在实验里用 RIP，建议直接上 `RIPv2`：
```cisco
Router(config)# router rip
Router(config-router)# version 2
Router(config-router)# no auto-summary
Router(config-router)# network 192.168.0.0
Router(config-router)# passive-interface default
Router(config-router)# no passive-interface g0/0/0
Router(config-router)# no passive-interface s0/1/0
```

说明：
- `version 2`：开启 `RIPv2`，支持无类路由
- `no auto-summary`：关闭自动汇总，这句在实验里基本可以当成必敲
- `network 192.168.0.0`：让落在这个主类网络内的接口参与 RIP
- `passive-interface default`：让接用户的接口不发 RIP 更新，只保留真正互联链路发送更新

如果希望出口路由器把默认路由下发给全网，可以这样写：
```cisco
Router(config)# ip route 0.0.0.0 0.0.0.0 100.1.1.2
Router(config)# router rip
Router(config-router)# default-information originate
```

RIP 常用检查命令：
```cisco
show ip route
show ip protocols
show ip rip database
debug ip rip
```

`OSPF` 和 `RIP` 可以这样粗记：

| 协议 | 类型 | 度量值 | 收敛速度 | 适用场景 |
| --- | --- | --- | --- | --- |
| `OSPF` | 链路状态 | Cost | 快 | 企业园区、中大型网络 |
| `RIP` | 距离矢量 | 跳数 | 慢 | 小型网络、入门实验 |

## STP 与 HSRP
`STP` 和 `HSRP` 经常一起出现，因为企业网络里既要“二层不成环”，也要“三层网关不单点”。

| 技术 | 控制什么 | 核心目的 |
| --- | --- | --- |
| `STP` | 二层路径 | 防环路、防广播风暴 |
| `HSRP` | 三层网关 | 网关冗余、主备切换 |

### STP
STP（Spanning Tree Protocol，生成树协议）的作用是：
- 在二层冗余链路中阻塞一部分端口，避免交换网络形成环路
- 当主链路故障时，再把备用链路放通

STP 里最重要的几个概念：
- `Root Bridge`：根桥，整棵生成树的中心
- `Root Port`：每台非根桥设备上，去往根桥的最佳端口
- `Designated Port`：每个网段负责转发的端口
- `Blocking / Discarding`：被阻塞的端口，不参与正常转发

这里用的是 `PVST`，常见配置有两种写法。

写法 1：直接指定主根和备根
```cisco
Switch(config)# spanning-tree mode pvst
Switch(config)# spanning-tree vlan 40,50 root primary
Switch(config)# spanning-tree vlan 10,20,30 root secondary
```

写法 2：手工改优先级
```cisco
Switch(config)# spanning-tree mode pvst
Switch(config)# spanning-tree vlan 10,20,30 priority 24576
Switch(config)# spanning-tree vlan 40,50 priority 28672
```

说明：
- 优先级越小，越容易成为根桥
- `root primary` / `root secondary` 本质上也是自动帮你调优先级
- Access 口如果确定只接终端，可以开 `portfast`，但不要在 Trunk 或交换机互联口上乱开

接入口常见的增强配置：
```cisco
Switch(config)# interface range f0/3 - 24
Switch(config-if-range)# spanning-tree portfast
Switch(config-if-range)# spanning-tree bpduguard enable
```

常用 STP 检查命令：
```cisco
show spanning-tree
show spanning-tree vlan 10
show spanning-tree root
```

### HSRP
HSRP（Hot Standby Router Protocol，热备份路由协议）的作用是给终端提供一个“虚拟网关”，这样真实网关坏了，终端不用改默认网关，业务还能继续走。

HSRP 里最重要的概念：
- `Active`：当前真正转发流量的设备
- `Standby`：备用设备
- `Virtual IP`：客户端填写的默认网关
- `Virtual MAC`：跟着虚拟网关一起漂移的虚拟 MAC

最常见的 HSRP 配置：
```cisco
Switch(config)# interface vlan 10
Switch(config-if)# ip address 192.168.1.1 255.255.255.0
Switch(config-if)# standby 10 ip 192.168.1.254
Switch(config-if)# standby 10 priority 101
Switch(config-if)# standby 10 preempt
Switch(config-if)# standby 10 track fastEthernet 0/1
```

每条命令的作用：
- `standby 10 ip 192.168.1.254`：定义虚拟网关 IP
- `standby 10 priority 101`：优先级高的一侧更容易成为 `Active`
- `standby 10 preempt`：主设备恢复后允许重新抢回主用角色
- `standby 10 track fastEthernet 0/1`：上联口挂了就自动降权，方便切到备机

常用 HSRP 检查命令：
```cisco
show standby brief
show standby
show running-config interface vlan 10
```

### 为什么 STP 和 HSRP 要一起看
只配 `HSRP` 不看 `STP`，流量可能会绕路。

理想状态是：
- `VLAN 10 / 20 / 30` 的 `HSRP Active` 和 `STP Root` 都落在左侧核心
- `VLAN 40 / 50` 的 `HSRP Active` 和 `STP Root` 都落在右侧核心

这样二层路径和三层网关方向一致，终端发往网关的数据不会先绕到另一台核心再转发。

## ACL
ACL（Access Control List，访问控制列表）本质上就是一串“从上到下匹配”的规则，用来决定哪些流量放行，哪些流量拒绝。

记住 ACL 的四条铁律：
1. 自上而下逐条匹配
2. 一旦命中，立即停止继续往下匹配
3. 规则越具体，越应该写在前面
4. 最后一条永远隐含 `deny ip any any`

### 标准 ACL 和扩展 ACL

| 类型 | 能匹配什么 | 常放位置 | 编号范围 |
| --- | --- | --- | --- |
| 标准 ACL | 只看源 IP | 靠近目的端 | `1-99`、`1300-1999` |
| 扩展 ACL | 看源 / 目的 / 协议 / 端口 | 靠近源端 | `100-199`、`2000-2699` |

### 标准 ACL
标准 ACL 一般用来做“谁能来”，因为它只能看源地址。

示例 1：只允许网管网段远程登录设备
```cisco
Router(config)# access-list 10 permit 192.168.10.0 0.0.0.255
Router(config)# line vty 0 4
Router(config-line)# access-class 10 in
```

示例 2：只允许 `192.168.6.0/24` 访问某个接口后的资源
```cisco
Router(config)# access-list 20 permit 192.168.6.0 0.0.0.255
Router(config)# interface g0/0/1
Router(config-if)# ip access-group 20 out
```

### 扩展 ACL
扩展 ACL 可以精确到协议和端口，企业网里更常用。

示例：禁止分公司 VLAN60 访问服务器区 FTP，但允许其访问其他业务
```cisco
Router(config)# access-list 100 deny tcp 192.168.6.0 0.0.0.255 192.168.11.0 0.0.0.255 eq 21
Router(config)# access-list 100 deny tcp 192.168.6.0 0.0.0.255 192.168.11.0 0.0.0.255 eq 20
Router(config)# access-list 100 permit ip any any
Router(config)# interface FastEthernet0/1
Router(config-if)# ip access-group 100 in
```

如果想用命名 ACL，可读性会更高：
```cisco
Router(config)# ip access-list extended BLOCK_FTP
Router(config-ext-nacl)# deny tcp 192.168.6.0 0.0.0.255 192.168.11.0 0.0.0.255 eq 21
Router(config-ext-nacl)# deny tcp 192.168.6.0 0.0.0.255 192.168.11.0 0.0.0.255 eq 20
Router(config-ext-nacl)# permit ip any any
Router(config)# interface FastEthernet0/1
Router(config-if)# ip access-group BLOCK_FTP in
```

### ACL 的放置原则
- 标准 ACL：尽量靠近目的端
- 扩展 ACL：尽量靠近源端
- 控制谁能远程登录设备：优先用 `line vty` 下的 `access-class`
- NAT 里用到的 ACL 往往只是“匹配谁做转换”，不一定是“拦截流量”

ACL 常用检查命令：
```cisco
show access-lists
show ip interface
show running-config | section access-list
```

## NAT
企业出口里的 NAT，本质上是把私网地址改成公网地址。最常见的是“内网用户访问外网”时做源地址转换。

### PAT：多个内网地址复用一个公网地址
```cisco
Router(config)# interface gigabitEthernet 0/0/0
Router(config-if)# ip nat inside
Router(config)# interface serial 0/2/0
Router(config-if)# ip nat outside

Router(config)# access-list 1 permit 192.168.0.0 0.0.255.255
Router(config)# ip nat inside source list 1 interface serial 0/2/0 overload
```

说明：
- `overload` 的作用是端口复用，也就是常说的 `PAT`
- 多台内网主机可以共用一个公网 IP

### 动态 NAT：从公网地址池里分配地址
```cisco
Router(config)# interface gigabitEthernet 0/0/0
Router(config-if)# ip nat inside
Router(config)# interface serial 0/2/0
Router(config-if)# ip nat outside

Router(config)# access-list 1 permit 192.168.0.0 0.0.255.255
Router(config)# ip nat pool DZC 100.1.1.3 100.1.1.10 netmask 255.255.255.0
Router(config)# ip nat inside source list 1 pool DZC
```

如果希望“地址池 + 端口复用”一起用，可以写成：
```cisco
Router(config)# ip nat inside source list 1 pool DZC overload
```

常用查看命令：
```cisco
show ip nat translations
show ip nat statistics
clear ip nat translation *
```

## 故障排查
排错建议按“终端 -> 接入 -> 汇聚 -> 核心 -> 出口”的方向查，不要一上来就全网乱翻。

### 基础排错顺序
1. 先确认终端 IP、掩码、网关、DNS 是否正确
2. `ping` 本 VLAN 网关，看本地三层是否正常
3. `ping` 内网服务器，看园区路由是否正常
4. 用 `tracert` 看流量断在哪一跳
5. 在对应设备上看 `show ip route`、`show ip ospf neighbor`、`show standby brief`
6. 出外网异常时，再看 `show ip nat translations`

### 常见问题
- 三层交换机忘记开启 `ip routing`
- DHCP 地址池默认网关填成物理网关，而不是 HSRP 虚拟网关
- `default-information originate` 配了，但本机没有默认路由
- 串口 DCE 端忘记 `clock rate`
- 把所有接口都 `no passive-interface`，导致用户 VLAN 也去建 OSPF 邻居
- `NIM-ES` 交换模块口理解错，把二层口和三层口命令混着写
- NAT 的 `inside / outside` 打反
- ACL 写完忘了绑到接口，或者绑反了 `in / out`
- ACL 只写了 `deny`，忘了最后补需要的 `permit`
- HSRP 主设备和 STP 根桥不一致，导致流量绕路

## 一组常用命令
```cisco
show running-config | include helper
show running-config | section access-list
show ip interface brief
show ip route
show ip protocols
show vlan brief
show interfaces trunk
show standby brief
show spanning-tree vlan 10
show ip ospf neighbor
show ip rip database
show access-lists
show ip nat translations
clear ip nat translation *

Ctrl + Shift + 6
default interface FastEthernet 0/1
erase startup-config
reload
```

---

## 参考
1.[思科企业网搭建-企业网含无线-从零开始配置教程\_哔哩哔哩\_bilibili](https://www.bilibili.com/video/BV1Nk4y147Ks/?spm_id_from=333.337.search-card.all.click&vd_source=75ba9ed7e36ca38708e502a1d1eac076)


---

> 作者: Chifan  
> URL: https://eo.chifan.de/posts/cisco-packet-tracer/  

