Ubuntu14.04 tftp服务配置与测试

一、安装tftp所需的软件


wyj@wyj-virtual-machine:~$ dpkg -l | grep tftp
wyj@wyj-virtual-machine:~$ 
wyj@wyj-virtual-machine:~$ sudo  apt-get  install tftp-hpa  tftpd-hpa  xinetd    
wyj@wyj-virtual-machine:~$ dpkg -l | grep tftp
ii  tftp-hpa                                              5.2-7ubuntu3.1                                      amd64        HPA's tftp client
ii  tftpd-hpa                                             5.2-7ubuntu3.1                                      amd64        HPA's tftp server

# tftp-hpa是客户端,tftpd-hpa是服务程序。
 


二、配置TFTP服务器


wyj@wyj-virtual-machine:~$ sudo cp /etc/default/tftpd-hpa /etc/default/tftpd-hpa_backup   //备份配置文件
wyj@wyj-virtual-machine:~$ sudo vim /etc/default/tftpd-hpa     //修改配置文件

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/wyj/server/tftp/tftpboot"     //将/tftpboot改成你自己建立的tftpboot文件夹路径
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"          //,-c是可以上传文件的参数,如果不用-c,会发生无法使用put命令的情况,-s是指定tftpd-hpa服务目录

#cd到/etc/xinetd.d/看有没有tftp文件没有就新建一个

wyj@wyj-virtual-machine:~$ cd /etc/xinetd.d/
wyj@wyj-virtual-machine:/etc/xinetd.d$ ls
chargen  daytime  discard  echo  time
wyj@wyj-virtual-machine:/etc/xinetd.d$ sudo vim tftp

service tftp

{

   disable = no

   socket_type = dgram

   protocol = udp

   wait = yes

   user = wyj    //修改为你登录系统的用户名

   server = /usr/sbin/in.tftpd

   server_args = -s /home/wyj/server/tftp/tftpboot -c   // /tftpboot为你存放TFTP的文件目录,我使用的是/home/wyj/server/tftp/tftpboot这个路径

   per_source = 11

   cps = 100 2

}

# server_args  =  -s  /tftpboot  –c 

     -c参数是允许上传用的,参数/tftpboot则是你的tftp目录,修改成你的目录即可。
第一个是disabled选项,如果是yes,TFTP服务器是关闭的,修改为no启动TFTP服务器;

三、重启tftp服务(每次修改配置文件后都要重启)

wyj@wyj-virtual-machine:/etc/xinetd.d$ sudo  service  tftpd-hpa  restart     //重启服务器
tftpd-hpa stop/waiting
tftpd-hpa start/running, process 8150
wyj@wyj-virtual-machine:/etc/xinetd.d$ sudo /etc/init.d/xinetd  reload
wyj@wyj-virtual-machine:/etc/xinetd.d$ sudo  /etc/init.d/xinetd  restart    //重启xinetd,tftp的一个脚本
xinetd stop/waiting
xinetd start/running, process 8175

四、测试


看Linux系统与window系统能否相互Ping通
wyj@wyj-virtual-machine:/$ ping 192.168.1.102         ping
PING 192.168.1.102 (192.168.1.102) 56(84) bytes of data.
64 bytes from 192.168.1.102: icmp_seq=1 ttl=128 time=4.97 ms
64 bytes from 192.168.1.102: icmp_seq=2 ttl=128 time=5.03 ms
64 bytes from 192.168.1.102: icmp_seq=3 ttl=128 time=5.23 ms
64 bytes from 192.168.1.102: icmp_seq=4 ttl=128 time=5.17 ms
64 bytes from 192.168.1.102: icmp_seq=5 ttl=128 time=5.40 ms
64 bytes from 192.168.1.102: icmp_seq=6 ttl=128 time=4.97 ms
64 bytes from 192.168.1.102: icmp_seq=7 ttl=128 time=4.71 ms
^C
--- 192.168.1.102 ping statistics ---

Windows cmd ping Linux
ping 192.168.158.129

正在 Ping 192.168.158.129 具有 32 字节的数据:
来自 192.168.158.129 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.158.129 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.158.129 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.158.129 的回复: 字节=32 时间<1ms TTL=64

192.168.158.129 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 1ms,平均 = 0ms

# 能互相ping通,然后关闭防火墙
1、Ubuntu14.0.4开启

    ufw enable

2、Ubuntu14.0.4关闭

    ufw disable

wyj@wyj-virtual-machine:/$ sudo ufw disable 
[sudo] password for wyj: 
防火墙在系统启动时自动禁用

#测试服务tftp是否启动
执行命令:netstat  -a|grep  tftp;当结果显示 : udp  0 0 *:tftp *:* 则启动tftp服务了。

wyj@wyj-virtual-machine:/$ netstat  -a|grep  tftp
udp        0      0 *:tftp                  *:* 

#测试tftp
  1、文件的下载
在/tftpboot目录文件夹路径下新建一个文件:

wyj@wyj-virtual-machine:~/server/tftp/tftpboot$ sudo vim tftp_test.txt
This is tftp test!
wyj@wyj-virtual-machine:~/server/tftp/tftpboot$ sudo chmod 777 tftp_test.txt 
wyj@wyj-virtual-machine:~/server/tftp/tftpboot$ ll
总用量 12
drwxr-xr-x 2 root root 4096  7月 22 16:58 ./
drwxr-xr-x 3 root root 4096  7月 22 16:12 ../
-rwxrwxrwx 1 root root   19  7月 22 16:58 tftp_test.txt*

wyj@wyj-virtual-machine:~/server_test/tftp$ tftp 192.168.158.129
tftp> get tftp_test.txt
tftp: tftp_test.txt: Permission denied
tftp>q

#我以为是防火墙的问题下次启动后才会关闭

wyj@wyj-virtual-machine:~/server_test/tftp$ sudo reboot
wyj@wyj-virtual-machine:~/server_test/tftp$ 
来自wyj@wyj-virtual-machine的广播信息
        (/dev/pts/0) 于 17:27 ...

现在,系统将关闭并且重新启动!

wyj@wyj-virtual-machine:~/server_test/tftp$ tftp 192.168.158.129
tftp> get tftp_test.txt
tftp: tftp_test.txt: Permission denied
tftp> q

#改了tftp目录权限
wyj@wyj-virtual-machine:~$ sudo chmod 777 -R /home/wyj/server/tftp//tftpboot/      
wyj@wyj-virtual-machine:~/server_test/tftp$ tftp 192.168.158.129
tftp> get tftp_test.txt
tftp: tftp_test.txt: Permission denied         //还是权限问题
tftp> q

#改了另一个路径目录的权限
wyj@wyj-virtual-machine:~$ sudo chmod 777 -R /home/wyj/server_test/tftp/
wyj@wyj-virtual-machine:~$ cd /home/wyj/server_test/tftp/
wyj@wyj-virtual-machine:~/server_test/tftp$ tftp 192.168.158.129
tftp> get tftp_test.txt
tftp> q
wyj@wyj-virtual-machine:~/server_test/tftp$ ls
tftp_test.txt
wyj@wyj-virtual-machine:~/server_test/tftp$ cat tftp_test.txt
This is tftp test!

#tftp服务两个目录的权限要注意!

2、文件的上传

#上传文件到服务器:上传文件时需要注意,在/tftpboot下面要存在一个跟您上传文件名相同的文件,这个文件可以是空文件,但是该文件需要具备可读可写权限,否者会出现 “Errorcode 2: Access violation” 错误。

wyj@wyj-virtual-machine:~/server_test/tftp$ cd /home/wyj/server/tftp/tftpboot/
wyj@wyj-virtual-machine:~/server/tftp/tftpboot$ touch hello.txt
wyj@wyj-virtual-machine:~/server/tftp/tftpboot$ sudo chmod 777 hello.txt
wyj@wyj-virtual-machine:~/server/tftp/tftpboot$ ls
hello.txt  test.txt
wyj@wyj-virtual-machine:~/server/tftp/tftpboot$ cd /home/wyj/server_test/tftp/
wyj@wyj-virtual-machine:~/server_test/tftp$ sudo vim hello.txt
[sudo] password for wyj: 
hello!
wyj@wyj-virtual-machine:~/server_test/tftp$ sudo chmod 777 hello.txt 
wyj@wyj-virtual-machine:~/server_test/tftp$ tftp 192.168.158.129
tftp> put hello.txt
tftp> q
wyj@wyj-virtual-machine:~/server_test/tftp$ cd /home/wyj/server/tftp/tftpboot/
wyj@wyj-virtual-machine:~/server/tftp/tftpboot$ cat hello.txt 
hello!
#上传文件后,可以看到hello.txt文件里面确实已经有新内容了,也就是说文件进行了覆盖

3、linux与windows利用tftp文件传输

#先在windows下载Tftpd32               Current Directory为当前要上传到ubuntu的文件目录   Server interfaces为winsdows的IP地址

#从windows上下载文件到linux

wyj@wyj-virtual-machine:~/server_test/tftp$ ls

hello.txt  test.txt
wyj@wyj-virtual-machine:~/server_test/tftp$ tftp 192.168.158.129         //tftp后面跟Ubuntu地址
tftp> get 192.168.1.102:hi.txt                                                                  //get后跟windows地址:跟要操作的文件
tftp> q
wyj@wyj-virtual-machine:~/server_test/tftp$ ls
hello.txt  hi.txt  test.txt
wyj@wyj-virtual-machine:~/server_test/tftp$ cat hi.txt
hi 

#从linux发送文件到windows
wyj@wyj-virtual-machine:~/server_test/tftp$ sudo vim hey.txt
[sudo] password for wyj: 
hey!
wyj@wyj-virtual-machine:~/server_test/tftp$ tftp 192.168.158.129   
tftp> put 192.168.1.102:hey.txt
tftp> q


TFTP作用:
1、TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
2、TFTP是简单文件传输协议,是用于在远端服务器和本地主机之间传输文件的,相对于FTP,TFTP 没有复杂的交互存取接口和认证控制,适用于客户端和服务器之 间不需要复杂交互的环境。TFTP 协议的运行基于UDP 协议。 TFTP 传输请求是由客户端发起的,当 TFTP 客户端需要从服务器下载文件时,由客户端向TFTP 服务器发送请求包,然后从服 务器接收数据;当 TFTP 客户端需要向服务器上传文件时,由客户端向TFTP 服务器发送写请求包,然后向服务器发送数据。

参考博客:https://www.cnblogs.com/AP0904225/p/6589085.html

猜你喜欢

转载自blog.csdn.net/caijiwyj/article/details/81164732