我们先简单了解一下TFTP协议和xinetd
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
TFTP是一个传输文件的简单协议,它基于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。
xinetd已经取代了inetd,并且提供了访问控制、加强的日志和资源管理功能,已经成了Red Hat 7 和 Mandrake 7.2的Internet标准超级守护进程。
1.首先查看是否安装TFTP相关软件
dpkg -l |grep tftp
2.安装TFTP所需的的软件
sudo apt-get install tftp-hpa tftpd-hpa xinetd
3.再次查看是否安装成功
dpkg -l |grep tftp
如果安装成功则为以下内容
4.创建tftpboot文件夹
mkdir /server/tftpboot
给权限(遍历文件夹下所有子文件,都给所有权限)
sudo chmod -R 777 /server/tftpboot
切换至tftpboot内获取路径,并复制路径,后面会用到。
5.备份配置文件
sudo cp /etc/default/tftpd-hpa /etc/default/tftpd-hpa_backup
6.使用ROOT权限修改配置文件并保存
sudo vim /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/momo/server/tftpboot" #此路径为之前创建tftpboot/的路径,依自己的实际情况更改
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"
这里的TFTP_OPTIONS(TFTP启动参数)要说一下
-l:以standalone/listen模式启动TFTP服务,而不是从inetd启动。
-c:可创建新文件。默认情况下,TFTP只允许覆盖原有文件,不能创建新文件。
-s:改变TFTP启动的根目录。加了-s后,客户端使用TFTP时,不再需要输入指定目录,填写文件的完整路径,而是使用配置文件中写好的目录,这样也可以增加安全性。
7.切换至/etc/xinetd.d/,看是否存在tftp文件,没有新建一个,编辑tftp
cd /etc/xinetd.d/
ls
sudo vim tftp
service tftp
{
disable = no #失能选择否
socket_type = dgram #设置传输方式为数据报
protocol = udp #udp协议
wait = yes #允许多进程响应请求
user = momo #运行服务的用户
server = /usr/sbin/in.tftpd #服务的二进制文件路径
server_args = -s /home/momo/server/tftpboot -c # -s path -c path是tftp文件储存的地址,依个人情况更改,我的 是/home/momo/server/tftpboot -s指定的chroot -c 可以创建文件
per_source = 11 #同一客户端运行登录最大人数
cps = 100 2 #每秒链接请求数超过100个,等待2秒
}
其他参数意义参考:https://www.cnblogs.com/kankanhua/p/4678441.html
8.重启tftp服务(修改配置后都要重启更新)
sudo service tftpd-hpa restart 重启tftp服务器
sudo /etc/init.d/xinetd restart 重启xinetd服务
9.测试
在测试前,将WIN和Ubuntu 的防火墙关闭
sudo ufw disable (防火墙失能)
sudo ufw enable(防护墙使能)
sudo ufw state(查看防火墙状态)
9.1在 /server/tftpboot/下建立文件,注意给权限
vim test.txt
chmod 777 test.txt
9.2使用ifconfig 获得本机IP
9.3打开另一个客户端连接本机
tftp 192.168.**.***
或者 tftp 127.0.0.1
==> get test.txt (获取test.txt)
==> q(离开)
查看:cat test.txt
9.4Ubuntu和Windows互传
下载一个tftp服务的小工具
链接:https://pan.baidu.com/s/1lkk4LWfjfaagypcQBf4csQ
提取码:wf6p
CUrrent Directory: WIN存tftp传输文件的路径
Server interface: WIN的IP地址
WIN中执行ipconfig获取IP地址
在Ubuntu中使用tftp命令
tftp 127.0.0.1 (或者 tftp Ubuntu IP地址)
==> put 192.168.**.*:test.txt (put WIN端IP地址:要传输的文件 )
==>q(离开)
打开WIN端指定文件夹,发现已经传输过去
9.5WIN 传 Ubuntu
在 WIN下建立文件123.txt并编辑
在Ubuntu内执行tftp命令
tftp 127.0.0.1(或者tftp Ubuntu IP地址)
==> get 192.168.**.*:123.txt (get WIN IP地址:需要传输的文件)
==>q (离开)
查看Ubuntu内,已经将123.txt传输过去
以上为个人总结,如有错误,欢迎指正!