Linux下静态IP地址的设置及TFTP服务的搭建
2016-06-19 10:45
393 查看
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
fs@ubuntu:~/qiang/tftp$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:6c:c2:ec
inet addr:172.16.58.130 Bcast:172.16.58.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe6c:c2ec/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:337 errors:0 dropped:0 overruns:0 frame:0
TX packets:358 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:123712 (123.7 KB) TX bytes:42430 (42.4 KB)
Interrupt:19 Base address:0x2024
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:149 errors:0 dropped:0 overruns:0 frame:0
TX packets:149 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:10307 (10.3 KB) TX bytes:10307 (10.3 KB)
fs@ubuntu:~/qiang/tftp$
如果ifconfig命令不带任何参数时,用于显示当前主机中状态为“活动”的网络接口信息;
当然,ifconfig命令可以修改IP地址:
[cpp] view
plain copy
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
fs@ubuntu:~/qiang/tftp$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
fs@ubuntu:~/qiang/tftp$
静态IP
[cpp] view
plain copy
fs@ubuntu:~/qiang/tftp$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.3.51
netmask 255.255.0.0
gateway 192.168.1.1
fs@ubuntu:~/qiang/tftp$
重启下系统,用ifconfig命令查看IP地址
[cpp] view
plain copy
fs@ubuntu:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:6c:c2:ec
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
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
fs@ubuntu:~$ sudo vi /etc/default/tftpd-hpa
fs@ubuntu:~$ cat /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/fs/qiang/tftpd"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l-c-s"
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
fs@ubuntu:~$ sudo service tftpd-hpa stop
tftpd-hpa stop/waiting
fs@ubuntu:~$ sudo service tftpd-hpa start
tftpd-hpa start/running, process 3041
fs@ubuntu:~$ sudo service tftpd-hpa status
tftpd-hpa start/running, process 3041
fs@ubuntu:~$ sudo service tftpd-hpa restart
tftpd-hpa stop/waiting
tftpd-hpa start/running, process 3055
fs@ubuntu:~$
4、tftp服务器测试
a、登陆服务器
[cpp] view
plain copy
fs@ubuntu:~/qiang/1$ tftp localhost
或
[cpp] view
plain copy
fs@ubuntu:~/qiang/1$ tftp <主机IP>
b、从tftp服务器下载文件
[cpp] view
plain copy
fs@ubuntu:~/qiang/1$ tftp localhost
tftp> get qiang
tftp>
c、上传文件到tftp服务器
[cpp] view
plain copy
fs@ubuntu:~/qiang/1$ tftp localhost
tftp> get qiang
tftp> put qiang
tftp>
d、查看帮助
[cpp] view
plain copy
fs@ubuntu:~/qiang/1$ tftp localhost
tftp> get qiang
tftp> put qiang
tftp> ?
tftp-hpa 5.2
Commands may be abbreviated. Commands are:
connect connect to remote tftp
mode set file transfer mode
put send file
get receive file
quit exit tftp
verbose toggle verbose mode
trace toggle packet tracing
literal toggle literal mode, ignore ':' in file name
status show current status
binary set mode to octet
ascii set mode to netascii
rexmt set per-packet transmission timeout
timeout set total retransmission timeout
? print help information
help print help information
tftp>
e、退出登陆
[cpp] view
plain copy
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(文件名)
一、在谈TFTP之前,先简单讲一下Linux网络配置,网络中最重要的当然是IP地址了,这里不讲IP协议,在后面的网络编程再讲解,这里主要学习一下Linux下配置IP,配置IP地址的方法有两种:
1、配置静态IP:在主机进入网络之前,事先未主机设置固定的IP地址;
2、配置动态IP:选择DHCP网络服务,在主机进行网络之后,动态的随机获取IP地址;
当然,大家都知道ifconfig这个命令:
[cpp] view
plain copy
fs@ubuntu:~/qiang/tftp$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:6c:c2:ec
inet addr:172.16.58.130 Bcast:172.16.58.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe6c:c2ec/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:337 errors:0 dropped:0 overruns:0 frame:0
TX packets:358 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:123712 (123.7 KB) TX bytes:42430 (42.4 KB)
Interrupt:19 Base address:0x2024
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:149 errors:0 dropped:0 overruns:0 frame:0
TX packets:149 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:10307 (10.3 KB) TX bytes:10307 (10.3 KB)
fs@ubuntu:~/qiang/tftp$
如果ifconfig命令不带任何参数时,用于显示当前主机中状态为“活动”的网络接口信息;
当然,ifconfig命令可以修改IP地址:
[cpp] view
plain copy
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
fs@ubuntu:~/qiang/tftp$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
fs@ubuntu:~/qiang/tftp$
静态IP
[cpp] view
plain copy
fs@ubuntu:~/qiang/tftp$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.3.51
netmask 255.255.0.0
gateway 192.168.1.1
fs@ubuntu:~/qiang/tftp$
重启下系统,用ifconfig命令查看IP地址
[cpp] view
plain copy
fs@ubuntu:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:6c:c2:ec
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
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
fs@ubuntu:~$ sudo vi /etc/default/tftpd-hpa
fs@ubuntu:~$ cat /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/fs/qiang/tftpd"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l-c-s"
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
fs@ubuntu:~$ sudo service tftpd-hpa stop
tftpd-hpa stop/waiting
fs@ubuntu:~$ sudo service tftpd-hpa start
tftpd-hpa start/running, process 3041
fs@ubuntu:~$ sudo service tftpd-hpa status
tftpd-hpa start/running, process 3041
fs@ubuntu:~$ sudo service tftpd-hpa restart
tftpd-hpa stop/waiting
tftpd-hpa start/running, process 3055
fs@ubuntu:~$
4、tftp服务器测试
a、登陆服务器
[cpp] view
plain copy
fs@ubuntu:~/qiang/1$ tftp localhost
或
[cpp] view
plain copy
fs@ubuntu:~/qiang/1$ tftp <主机IP>
b、从tftp服务器下载文件
[cpp] view
plain copy
fs@ubuntu:~/qiang/1$ tftp localhost
tftp> get qiang
tftp>
c、上传文件到tftp服务器
[cpp] view
plain copy
fs@ubuntu:~/qiang/1$ tftp localhost
tftp> get qiang
tftp> put qiang
tftp>
d、查看帮助
[cpp] view
plain copy
fs@ubuntu:~/qiang/1$ tftp localhost
tftp> get qiang
tftp> put qiang
tftp> ?
tftp-hpa 5.2
Commands may be abbreviated. Commands are:
connect connect to remote tftp
mode set file transfer mode
put send file
get receive file
quit exit tftp
verbose toggle verbose mode
trace toggle packet tracing
literal toggle literal mode, ignore ':' in file name
status show current status
binary set mode to octet
ascii set mode to netascii
rexmt set per-packet transmission timeout
timeout set total retransmission timeout
? print help information
help print help information
tftp>
e、退出登陆
[cpp] view
plain copy
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(文件名)
相关文章推荐
- linux信号
- Linux学习----grep及正则表达式
- Linux 硬件信息
- 命令行模式的Linux小结
- Linux 系统应用编程——进程间通信(下)
- Linux 系统应用编程——多线程经典问题(生产者-消费者)
- Linux---进程调度相关命令解析
- Linux time()函数解析
- linux dup函数源码剖析
- linux下开启日志查询
- Linux 系统应用编程——进程间通信(上)
- Linux 系统应用编程——线程基础
- Linux 系统应用编程——进程基础
- Linux 系统应用编程——标准I/O
- Linux 系统应用编程——文件I/O
- LINUX高性能服务器编程
- Linux 系统应用编程——出错处理(errno)
- linux多线程编程——同步与互斥
- Install mysql on centos 7
- linux命令