Ubuntu配置tftp服务端

2023-05-16

        这两天安装ONIE和sonic系统,基于ONIE安装sonic系统时。需要使用到tftp服务,正好电脑里面有ubuntu的虚拟机,就直接在虚拟机上安装了tftp服务器。顺便记录下。

一、安装 tftp


1、安装tftp-hpa客户端、tftpd-hpa服务程序、创建tftp目录

sudo apt-get install tftp-hpa tftpd-hpa
sudo mkdir -p /home/USER/work/tftp
chmod 777 /home/USER/work/tftp -R                #根据实际需求修改权限

2、安装xinetd

sudo apt-get install xinetd

        Xinetd(eXtended InterNET services daemon,扩展互联网服务守护进程=超级互联网守护进程=超级服务),xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器。

        管理保护多种轻量级Internet服务。管理的服务都是一些不是很常用,但是系统中偶尔也会用到的小服务或者该服务没什么好的安全机制,比如:tftp、rsync、cvs、telnet等。它并不是一真正意义上的服务,xinetd相当于rync、cvs等服务的代理人,就像老大照着小弟!它的作用大致可以分为以下几个:访问控制、防止DOS攻击、扩展的日子选项、服务转发、用户交互式体验。

        根据Xinetd的工作流程,修改配置文件。

        第一步:初始化各服务信息

        配置文件默认为/etc/xinetd.conf(如果没有该文件,需要自行创建),也可以通过参数指定。/etc/xinetd.conf默认内容如下:

# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
# Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info
}
includedir /etc/xinetd.d

        第二步:循环监听client请求,xinetd使用select来完成监听的。

        针对tftp的client参数配置如下文件/etc/xinetd.d/tftp。

service tftp  
{  
    socket_type     = dgram                        #socket的链接类型是dgram(UDP)
    protocol        = udp                          #UDP协议
    wait            = yes                          #等待到启动完成
    user            = root                         #指定root用户启动服务进程
    server          = /usr/sbin/in.tftpd           #指定服务进程是/usr/sbin/in.tftpd
    server_args     = -s /home/USER/work/tftp -c   #指定传给该进程的参数
    disable         = no                           #no表示启动TFTP服务器
    per_source      = 11                           #表示每一个ip地址上最多可以建立的实例数目
    cps             = 100 2                        #每秒100个入站链接,超过限制,等待2秒
    flags           = IPv4                         #允许IPV4连接
}  

        第三步:启动服务进程

        服务进程是配置与tftp的服务端的连接,tftp服务端的配置文件默认为/etc/default/tftpd-hpa,建议配置如下:

ERNAME="tftp"
TFTP_DIRECTORY="/home/USER/work/tftp"    #Ubuntu虚拟机中TFTP服务器的目录
TFTP_ADDRESS="0.0.0.0:69"                  #ip地址和端口号
TFTP_OPTIONS="-l -c -s"                    #-c是可以上传文件的参数。
                                           #-s是指定的TFTP服务端目录,即TFTP_DIRECTORY;
                                           #-l是在独立运行服务器(听)模式

        这里会fork()一个进程来执行服务。因为外部服务进程需要调用execve()来执行,而execve()函数成功返回后并不会自行创建一个进程,而是用全新的程序替换了当前进程的正文、数据、堆和栈。在exec_server()函数中,会通过dup2系统调用将子进程的fd(0/1/2)克隆服务进程的socket fd,那么以后需要接收和发送报文时,就只用对fd 0/1来操作了。

        第四步:重启tftp和xinetd服务

sudo service tftpd-hpa restart
sudo /etc/init.d/xinetd reload
sudo /etc/init.d/xinetd restart

二、本地测试

        建立tftp服务器之后可本地测试。

        终端中输入 sudo tftp localhost 或者 tftp A.B.C.D(本地IP),进入 tftp 命令符下(可以在其中输入 help查看命令和命令的作用),输入 get file,如果没有任何提示,就说明传输成功了,然后输入 q退出 tftp 命令符,在当前目录下就可以看到一个 file 文件,内容是与开始新建的那个 file 的内容是一致的。同样也可以在 tftp 命令符中输入 put xx,把 xx 文件上传到服务器文件夹中。如果一切 ok,那就么一个可用的 tftp 服务器就顺利搭建成功了。

root@xxxx:/home/xxxx/work# ls -l tftp
total 1101792
-rwxr--r-- 1 xxxx xxxx 1128224658  24 22:02 sonic-xxxxxx.bin
-rwxrwxrwx 1 xxxx xxxx        285   4  2021 test.c
root@xxxx:/home/xxxx/work# mkdir test
root@xxxx:/home/xxxx/work# cd test
root@xxxx:/home/xxxx/work/test# ls -l
total 0
root@xxxx:/home/xxxx/work/test# tftp 172.17.x.xx
tftp> get test.c
tftp> q
root@xxxx:/home/xxxx/work/test# ls -l
total 4
-rw-r--r-- 1 root root 285 30 14:51 test.c

        其实搭建服务器并不难,网上有很多教程。主要是参照网上的这些教程实现之后,需要对流程有个简单的梳理。加强记忆,也为了开阔视野。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu配置tftp服务端 的相关文章

随机推荐

  • FreeRTOS任务调度器开启

    本文是 ALIENTEK STM32F429 FreeRTOS 开发教程 第八章学习笔记 2 第一章笔记 FreeRTOS简介与源码下载 第二章笔记 FreeRTOS在STM32F4上移植 第三章笔记 FreeRTOS系统配置 第四章笔记
  • css样式缓存

    1 问题 css样式变更之后 xff0c 必须手动清缓存才能生效 2 百度 在实际项目开发过过程中 xff0c 页面是上传到服务器上的 而为了减少服务器的压力 xff0c 让用户少加载 xff0c 浏览器会将图片 css js缓存到本地中
  • 使用Verilog HDL语言实现4位超前进位加法器

    一 1位半加器的实现 1 1 原理 半加器由两个一位输入相加 xff0c 输出一个结果位和进位 xff0c 没有进位输入的加法器电路 1 2 真值表 1 3 逻辑表达式 S 61 A B C 61 A amp B 1 4 Verilog 实
  • FreeRTOS任务切换

    本文是 ALIENTEK STM32F429 FreeRTOS 开发教程 第九章学习笔记 第一章笔记 FreeRTOS简介与源码下载 第二章笔记 FreeRTOS在STM32F4上移植 第三章笔记 FreeRTOS系统配置 第四章笔记 Fr
  • 蓝桥杯嵌入式备赛手册

    本文是我参加蓝桥杯嵌入式比赛后的一些心得体会和一些自己总结的驱动代码 xff0c 希望能给以后参加蓝桥杯嵌入式的同学带来一些帮助 本文没有经过校对 xff0c 如有错误还请包涵 xff0c 欢迎大家交流和指正 xff0c 转载请注明出处 一
  • U-Boot详细分析(2)——Exynos4412启动过程

    一 iROM 首先arm的pc指针从0x0地址开始执行 xff0c 打开4412手册可以看到0x0000 0000地址存放着iROM xff1a 所以4412上电后会到iROM中去执行 xff0c iROM是4412出厂时就固化的一段程序
  • U-Boot详细分析(3)——系统时钟操作

    一 引子 在上一篇文章 U Boot详细分析 2 Exynos4412启动过程中可以看到 xff0c BL2程序流程图中有SET CLOCK s这一步骤 xff0c 并且在U Boot源码的 board samsung smdkc210 l
  • 字符串中的第一个唯一字符

    leetcode 的easy题 xff1a 给定一个字符串 xff0c 找到它的第一个不重复的字符 xff0c 并返回它的索引 如果不存在 xff0c 则返回 1 案例 s 61 34 leetcode 34 返回 0 s 61 34 lo
  • WOC广域网加速

    WOC广域网加速 1 广域网存在的问题 xff1a 大量的路由 网关 跨区域和跨运营商的情况比较常见 丢包和延长使用传输效率降低 交互过多导致传输效率差 2 解读方案 xff1a 应用流量可视化 链路优化 数据优化 流量管理 智能报表 3
  • ros发布gps定位信息

    1 可行的主题 Robot Pose EKF节点订阅下面的主题 xff1a odom 2D消息 lt nav msgs Odometry gt imu data 3D消息 lt sensor msgs Imu gt vo 3D消息 lt n
  • tx2备份与恢复

    NVIDIA Jetson是通过Micro USB USB TYPE C接口升级系统 xff08 具体参考不同载板说明 xff09 xff0c 更新前需让Jetson进入Recovery 模式 Recovery 模式下可以进行文件系统更新包
  • debian 163各版本源

    debian8 stable deb http mirrors 163 com debian jessie main non free contrib deb http mirrors 163 com debian jessie updat
  • svn st 状态标识

    svn status 简写 xff1a stat st 显示工作副本中目录与文件的状态 用法 status PATH 未指定参数时 xff0c 只显示本地修改的条目 没有网络访问 常用可选项 xff1a q 只显示本地修改条目的摘要信息 u
  • 单片机蜂鸣器控制程序和驱动电路

    蜂鸣器从结构区分分为压电式蜂鸣器和电磁式蜂鸣器 压电式为压电陶瓷片发音 xff0c 电流比较小一些 xff0c 电磁式蜂鸣器为线圈通电震动发音 xff0c 体积比较小 按照驱动方式分为有源蜂鸣器和无源蜂鸣器 这里的有源和无源不是指电源 xf
  • Linux 下的信号量

    linux下的posix有名信号量的几个要点 博客园 最全面的linux信号量解析 csdn blog Semaphore信号量总结 博客园 sem timedwait csdn blog 一 信号量的概念 信号量的使用主要是用来保护共享资
  • x86-从实模式到保护模式

    十进制到二进制的转换 十进制转换为十六进制 十六进制表示法 在很多高级语言中 xff0c 通常不采用在后面加h的做法来表示十六进制 xff0c 而是为他添加一个0x前缀 如 xff1a 0x3f
  • MG-SOFT 导入MIB文件

    之前SNMP测试一直用的是IReasoning MIB browser xff0c 最近测试snmp V3 xff0c 需要使用MG SOFT MIB Browser 在导入之前使用的MIB文件时 xff0c 发现跟IReasoning M
  • Ubuntu更新源 Failed to fetch http://xxxxxxx Temporary failure resolving ‘mirrors.aliyun.com‘

    之前公司产品一直使用32位环境 xff0c 最近需要使用64位环境 需要更新软件库 xff0c 就换了个64位ubuntu虚拟机 xff0c 重新编译所需的库 xff08 包括pcap grpc等 xff09 更新库的时候 xff0c 想着
  • 交换机学习----网桥

    最近接触到交换机产品 xff0c 正好借机会学习下二层相关网络技术 之前一直想写点东西 xff0c 又懒得写 这次乘机会多写点 xff0c 记录下 xff0c 也算是对学习的一个交代 另自己是初学者 xff0c 也希望能和前辈多交流 有写的
  • Ubuntu配置tftp服务端

    这两天安装ONIE和sonic系统 xff0c 基于ONIE安装sonic系统时 需要使用到tftp服务 xff0c 正好电脑里面有ubuntu的虚拟机 xff0c 就直接在虚拟机上安装了tftp服务器 顺便记录下 一 安装 tftp 1