Linux下静态IP地址的设置及TFTP服务的搭建

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。TFTP承载在UDP上,提供不可靠的数据流传输服务,不提供存取授权与认证机制,使用超时重传方式来保证数据的到达。

  

 一、在谈TFTP之前,先简单讲一下Linux网络配置,网络中最重要的当然是IP地址了,这里不讲IP协议,在后面的网络编程再讲解,这里主要学习一下Linux下配置IP,配置IP地址的方法有两种:

1、配置静态IP:在主机进入网络之前,事先未主机设置固定的IP地址;

2、配置动态IP:选择DHCP网络服务,在主机进行网络之后,动态的随机获取IP地址;

当然,大家都知道ifconfig这个命令:

[cpp]  view plain  copy
  1. fs@ubuntu:~/qiang/tftp$ ifconfig  
  2. eth0      Link encap:Ethernet  HWaddr 00:0c:29:6c:c2:ec    
  3.           inet addr:172.16.58.130  Bcast:172.16.58.255  Mask:255.255.255.0  
  4.           inet6 addr: fe80::20c:29ff:fe6c:c2ec/64 Scope:Link  
  5.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
  6.           RX packets:337 errors:0 dropped:0 overruns:0 frame:0  
  7.           TX packets:358 errors:0 dropped:0 overruns:0 carrier:0  
  8.           collisions:0 txqueuelen:1000   
  9.           RX bytes:123712 (123.7 KB)  TX bytes:42430 (42.4 KB)  
  10.           Interrupt:19 Base address:0x2024   
  11.   
  12. lo        Link encap:Local Loopback    
  13.           inet addr:127.0.0.1  Mask:255.0.0.0  
  14.           inet6 addr: ::1/128 Scope:Host  
  15.           UP LOOPBACK RUNNING  MTU:16436  Metric:1  
  16.           RX packets:149 errors:0 dropped:0 overruns:0 frame:0  
  17.           TX packets:149 errors:0 dropped:0 overruns:0 carrier:0  
  18.           collisions:0 txqueuelen:0   
  19.           RX bytes:10307 (10.3 KB)  TX bytes:10307 (10.3 KB)  
  20.   
  21. fs@ubuntu:~/qiang/tftp$   

如果ifconfig命令不带任何参数时,用于显示当前主机中状态为“活动”的网络接口信息;

当然,ifconfig命令可以修改IP地址:

[cpp]  view plain  copy
  1. fs@ubuntu:~/qiang/tftp$ sudo ifconfig  eth0 192.168.3.51  

但是这是动态的修改IP地址,重启以后,IP地址又变回原来的静态IP地址;

修改IP地址除了可以在图形界面中修改,也可以在配置文件中修改,这才是Linux的特性!无论是配置静态IP还是动态IP,计算机系统将IP信息保存在什么地方呢?
答案是配置文件 "/etc/network/interfaces".在UBuntu Linux 启动时就能获得IP地址的配置信息。若是配置静态IP。就从配置文件中读取IP地址参数,直接配置网络接口设备;若是配置动态IP,就通知主机通过DHCP协议获取网络配置。

以下分别为配置静态IP和动态IP时,配置文件"/etc/network/interfaces"的实例:

动态IP

[cpp]  view plain  copy
  1. fs@ubuntu:~/qiang/tftp$ cat /etc/network/interfaces   
  2. auto lo  
  3. iface lo inet loopback  
  4.   
  5. auto eth0  
  6. fs@ubuntu:~/qiang/tftp$   

静态IP

[cpp]  view plain  copy
  1. fs@ubuntu:~/qiang/tftp$ cat /etc/network/interfaces   
  2. auto lo  
  3. iface lo inet loopback  
  4.   
  5. auto eth0  
  6. iface eth0 inet static  
  7.     address 192.168.3.51  
  8.     netmask 255.255.0.0  
  9.     gateway 192.168.1.1  
  10. fs@ubuntu:~/qiang/tftp$   

重启下系统,用ifconfig命令查看IP地址

[cpp]  view plain  copy
  1. fs@ubuntu:~$ ifconfig   
  2. eth0      Link encap:Ethernet  HWaddr 00:0c:29:6c:c2:ec    
  3.           inet addr:192.168.3.51  Bcast:192.168.255.255  Mask:255.255.0.0  

明显看到IP地址依然是我们静态修改过的IP地址。

注意:

1、若不能访问外网: ping 不通114.114.114.114

解决方法: sudo route add default gw 192.168.1.1

2、若不能访问域名: ping 不通baidu.com

解决方法: 

1)--  sudo vi /etc/resolv.conf

2) -- 添加 nameserver 114.114.114.114



当然Linux网路配置还包括Route 、DNS等,这里先不详细介绍,下面进入我们的

二、TFTP环境的搭建:

我的Linux版本是Ubuntu,下面是配置过程:

1、配置服务器端

[cpp]  view plain  copy
  1. fs@ubuntu:~$ sudo apt-get install tftp-hpa thtpd-hpa  

这里是因为我们再同一台机器上操作的,在实际使用中,一般是

Client  :PC   安装tftp-hpa

Server :ARM 安装tftpd-hpa

后面的 tftp <IP> 此处的IP地址应该是ARM的IP地址。

 
2、修改配置文件

在/etc/default下修改tftp服务的配置文件tftpd-hpa:

[cpp]  view plain  copy
  1. fs@ubuntu:~$ sudo vi /etc/default/tftpd-hpa   
  2. fs@ubuntu:~$ cat /etc/default/tftpd-hpa   
  3. # /etc/default/tftpd-hpa  
  4.   
  5. TFTP_USERNAME="tftp"  
  6. TFTP_DIRECTORY="/home/fs/qiang/tftpd"  
  7. TFTP_ADDRESS="0.0.0.0:69"  
  8. TFTP_OPTIONS="-l-c-s"  
  9. fs@ubuntu:~$   

说明:修改项,其中TFTP_DIRECTORY处可以改为你的tftp-server的根目录,博主这里是/home/fs/qiang/tftpd,当然可以改成其他地址,参数 -c 指定了可以创建文件,参数 -s是指定tftpd-hpa服务目录,上面已经指定;

创建文件夹/home/fs/qiang/tftpd,修改权限,这里我直接 chmod 777.

3、手动启动、停止服务

[cpp]  view plain  copy
  1. fs@ubuntu:~$ sudo service tftpd-hpa stop  
  2. tftpd-hpa stop/waiting  
  3. fs@ubuntu:~$ sudo service tftpd-hpa start  
  4. tftpd-hpa start/running, process 3041  
  5. fs@ubuntu:~$ sudo service tftpd-hpa status  
  6. tftpd-hpa start/running, process 3041  
  7. fs@ubuntu:~$ sudo service tftpd-hpa restart  
  8. tftpd-hpa stop/waiting  
  9. tftpd-hpa start/running, process 3055  
  10. fs@ubuntu:~$   


4、tftp服务器测试

a、登陆服务器

[cpp]  view plain  copy
  1. fs@ubuntu:~/qiang/1$ tftp localhost  

[cpp]  view plain  copy
  1. fs@ubuntu:~/qiang/1$ tftp <主机IP>  

b、从tftp服务器下载文件

[cpp]  view plain  copy
  1. fs@ubuntu:~/qiang/1$ tftp localhost  
  2. tftp> get qiang  
  3. tftp>   

c、上传文件到tftp服务器

[cpp]  view plain  copy
  1. fs@ubuntu:~/qiang/1$ tftp localhost  
  2. tftp> get qiang  
  3. tftp> put qiang  
  4. tftp>   

d、查看帮助

[cpp]  view plain  copy
  1. fs@ubuntu:~/qiang/1$ tftp localhost  
  2. tftp> get qiang  
  3. tftp> put qiang  
  4. tftp> ?  
  5. tftp-hpa 5.2  
  6. Commands may be abbreviated.  Commands are:  
  7.   
  8. connect     connect to remote tftp  
  9. mode        set file transfer mode  
  10. put         send file  
  11. get         receive file  
  12. quit        exit tftp  
  13. verbose     toggle verbose mode  
  14. trace       toggle packet tracing  
  15. literal     toggle literal mode, ignore ':' in file name  
  16. status      show current status  
  17. binary      set mode to octet  
  18. ascii       set mode to netascii  
  19. rexmt       set per-packet transmission timeout  
  20. timeout     set total retransmission timeout  
  21. ?           print help information  
  22. help        print help information  
  23. tftp>   

e、退出登陆

[cpp]  view plain  copy
  1. tftp> q  


这里将大家容易出现的错误以及解决方法介绍给大家:

出现的一些问题及原因(解决方法):

1、Transfer time out.     

  tftpd服务没有启动

2、Error code 0:Permission denied

    可能是由SELinux造成的,在FC3和FC3以后的FC版本中SELinux默认的都是开启的,现在要关掉它。

    修改文件/etc/sysconfig/selinux,设定SELINUX=disabled,然后重启电脑即可

  或者  执行命令system-config-securitylevel打开“安全级别配置”对话框,将SELinux(S)选项中“强制”改为“允许”

3、Error code 1:File not found

    指定的文件夹不存在;或tftpd启动参数中没有指定-c选项,允许上传文件

4、Error code 2:Only absolute filenames allowed

    TFTP_OPTIONS="-l -c -s",中的选项注意一下,是否没 -c

5、Error code 2:Access violation

  上传的文件要有相应的可读写(覆盖)的权限才能上传,要对文件的权限进行修改  chmod 777 a(文件名)

猜你喜欢

转载自blog.csdn.net/zjy900507/article/details/79578521