Skip to content

2.3 文件传输:FTP 与 TFTP

在网络维护中,我们经常需要备份配置文件、升级设备操作系统(系统镜像),或者将日志文件导出。这时就需要用到文件传输协议。

最常用的两种协议是:

  • FTP (File Transfer Protocol):基于 TCP,可靠,支持认证(账号密码)。
  • TFTP (Trivial File Transfer Protocol):基于 UDP,简单快速,通常无认证。

本节重点介绍 FTP 的配置与使用。

1. 实验场景

为了防止设备故障导致配置丢失,我们需要定期将配置文件备份到服务器。

场景角色:

  • FTP Server (服务端):提供文件存储服务的设备(可以是路由器,也可以是 PC)。
  • FTP Client (客户端):登录服务端进行上传/下载操作的设备。

模拟拓扑:

  • R1 (Client): 172.16.12.1
  • R2 (Server): 172.16.12.2
  • 前提:R1 和 R2 之间网络可达(能 Ping 通)。

2. 配置路由器为 FTP Server

在 R2 上开启 FTP 服务,并创建一个允许 FTP 登录的用户。

bash
[R2] ftp server enable                 # 1. 开启 FTP 服务功能

[R2] aaa
[R2-aaa] local-user ftpuser password cipher Huawei@123  # 2. 创建用户名为 ftpuser
[R2-aaa] local-user ftpuser privilege level 3           # 3. 赋予管理权限(3级)
[R2-aaa] local-user ftpuser service-type ftp            # 4. 指定服务类型为 ftp
[R2-aaa] local-user ftpuser ftp-directory flash:        # 5. 指定 FTP 根目录(家目录)

注意ftp-directory 非常重要,如果不指定,用户登录后可能看不到任何文件或无法操作。通常指定为 flash:

3. 路由器作为 FTP Client 登录

现在我们在 R1 上模拟客户端,远程登录 R2 并下载文件。

3.1 登录 FTP

用户视图下执行:

bash
<R1> ftp 172.16.12.2
Trying 172.16.12.2 ...
Press CTRL+K to abort
Connected to 172.16.12.2.
220 FTP service ready.
User(172.16.12.2:(none)): ftpuser      <-- 输入用户名
331 Password required for ftpuser.
Enter password:                         <-- 输入密码 Huawei@123 (不回显)
230 User logged in.

[R1-ftp]                                <-- 进入 FTP 视图

提示:如果是 PC 作为客户端,可以使用 Windows 的 CMD (ftp 172.16.12.2) 或图形化软件 (FileZilla)。

3.2 查看文件 (Dir/Ls)

bash
[R1-ftp] dir
200 Port command okay.
150 Opening ASCII mode data connection for *.
-rwxrwxrwx   1 noone    nogroup      1722 Jun 06 13:15 vrpcfg.zip
-rwxrwxrwx   1 noone    nogroup       432 Jun 06 12:57 private-data.txt
226 Transfer complete.

3.3 下载文件 (Get)

将 Server 上的 vrpcfg.zip 下载到本地:

bash
[R1-ftp] get vrpcfg.zip
200 Port command okay.
150 Opening ASCII mode data connection for vrpcfg.zip.
226 Transfer complete.
FTP: 1722 byte(s) received in 0.220 second(s) 7.82Kbyte(s)/sec.
  • 下载后,文件保存在 R1 的 Flash 中,名字默认不变。
  • 如果要改名:get source-file target-file

3.4 上传文件 (Put)

将 R1 本地的配置文件上传到 Server:

bash
[R1-ftp] put my-config.zip
200 Port command okay.
150 Opening ASCII mode data connection for my-config.zip.
226 Transfer complete.

3.5 退出

bash
[R1-ftp] quit
221 Server closing.

4. 常见问题排查

  1. 无法登录
    • 检查网络是否通畅 (ping)。
    • 检查 Server 是否开启 (ftp server enable)。
    • 检查 AAA 用户是否正确配置了 service-type ftpftp-directory
  2. 传输慢或中断
    • FTP 默认使用主动模式,如果在防火墙或 NAT 后面,可能需要切换模式(但在路由器直连场景较少见)。
  3. 权限不足
    • 检查 AAA 用户的 privilege level,读写操作通常需要 3 级权限。