Ubuntu/Debian Linux:安装和设置TFTPD服务器
如何在Debian或Ubuntu Linux服务器下安装和配置TFTP服务器,以配置网络设备,例如通过PXE引导远程引导无盘设备或远程加载Unix之类的操作系统?
tftpd是用于琐碎文件传输协议的服务器。
TFTP协议被广泛用于支持无盘设备的远程启动或加载操作系统。
Debian或Ubuntu可以使用以下任一tftpd服务器:
- atftpd高级TFTP服务器。
- tftpd简单的文件传输协议服务器。
- tftpd-hpa HPA tftp服务器。
- dnsmasq轻量级DNS,TFTP和DHCP服务器。
在本教程中,我将安装和配置tftpd-hpa。
警告:TFTP服务器/协议提供的安全性很少。
确保将TFTP服务器放置在防火墙系统后面。
tftpd-hpa TFTP服务器安装
以超级用户身份执行以下apt-get命令:
$ sudo apt-get install tftpd-hpa
或者
# apt-get install tftpd-hpa
将被提升为以下级别(确保将目录名称设置为/srv/tftp
):
在Ubuntu/Debian系统中安装和设置TFTPD服务器
输出示例:
Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: tftpd-hpa 0 upgraded, 1 newly installed, 0 to remove and 15 not upgraded. Need to get 0 B/49.1 kB of archives. After this operation, 201 kB of additional disk space will be used. Preconfiguring packages ... Selecting previously deselected package tftpd-hpa. (Reading database ... 281779 files and directories currently installed.) Unpacking tftpd-hpa (from .../tftpd-hpa_5.0-18_amd64.deb) ... Processing triggers for man-db ... Setting up tftpd-hpa (5.0-18) ... Starting HPA's tftpd: in.tftpd.
配置
编辑/etc/default/tftpd-hpa,运行:
# vi /etc/default/tftpd-hpa
示例配置:
TFTP_USERNAME="tftp" TFTP_DIRECTORY="/srv/tftp" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--secure"
如何启动/停止/重新启动tftpd-hpa服务器?
执行以下命令:
service tftpd-hpa status service tftpd-hpa stop service tftpd-hpa start service tftpd-hpa restart service tftpd-hpa force-reload
输出示例:
启动/停止/重新启动tftpd服务器命令
接下来,您需要将所有引导文件放在/srv/tftp目录中。
您可以为各种操作系统和第三方固件创建以下目录结构:
# cd /srv/tftp # mkdir {openbsd,freebsd,netbsd} # mkdir -p linux/{debian,ubuntu,rhel,centos,fedora,suse} # mkdir -p firmwares/{linksys,cisco,soekris,pata,sata,ipmi,nic} # ls -l # ls -l linux/ # ls -l firmwares/
如何测试我的tftpd服务器?
您需要安装名为tftp的tftp客户端。
它是Internet TFTP(临时文件传输协议)的用户界面,允许用户与远程计算机进行文件传输。
可以在命令行上指定远程主机,在这种情况下,tftp使用主机作为默认主机。
安装琐碎的文件传输协议客户端(tftp)
执行以下命令:
$ sudo apt-get install tftp
或者
# apt-get install tftp
输出示例:
Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: tftp 0 upgraded, 1 newly installed, 0 to remove and 15 not upgraded. Need to get 18.9 kB of archives. After this operation, 53.2 kB of additional disk space will be used. Get:1 http://debian.osuosl.org/debian/ squeeze/main tftp amd64 0.17-18 [18.9 kB] Fetched 18.9 kB in 1s (10.5 kB/s) Selecting previously deselected package tftp. (Reading database ... 281794 files and directories currently installed.) Unpacking tftp (from .../tftp_0.17-18_amd64.deb) ... Processing triggers for man-db ... Setting up tftp (0.17-18) ...
测试tftpd服务器
在此示例中,我将来自OpenBSD.org的pxeboot文件(用于网络安装的第二阶段PXE引导程序)放在/srv/tftp/openbsd /目录中,以与客户端进行检索,以进行测试:
# cd /srv/tftp/openbsd/ # wget http://ftp.openbsd.org/pub/OpenBSD/5.2/i386/pxeboot
输出示例:
--2012-12-01 17:17:09-- http://ftp.openbsd.org/pub/OpenBSD/5.2/i386/pxeboot Resolving ftp.openbsd.org... 129.128.5.191 Connecting to ftp.openbsd.org|129.128.5.191|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 53920 (53K) [text/plain] Saving to: `pxeboot' 100%[=====================================- ] 53,920 53.0K/s in 1.0s 2012-12-01 17:17:10 (53.0 KB/s) - `pxeboot' saved [53920/53920]
我也在下载bsd.rd文件。
它是压缩的RAMDISK内核;嵌入式文件系统包含安装工具:
# wget http://ftp.openbsd.org/pub/OpenBSD/5.2/i386/bsd.rd
输出示例:
--2012-12-01 17:17:25-- http://ftp.openbsd.org/pub/OpenBSD/5.2/i386/bsd.rd Resolving ftp.openbsd.org... 129.128.5.191 Connecting to ftp.openbsd.org|129.128.5.191|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 6422208 (6.1M) [text/plain] Saving to: `bsd.rd' 17% [====- ] 11,42,782 20.3K/s eta 3m 47s
最后,验证两个文件均已在/srv/tftp/openbsd /位置正确下载并安装:
# ls -l /srv/tftp/openbsd/
输出示例:
total 6344 -rw-r--r-- 1 root root 6422208 Dec 1 17:20 bsd.rd -rw-r--r-- 1 root root 53920 Aug 1 22:02 pxeboot
从远程客户端执行以下命令:
$ tftp tftp-server-ip-here $ tftp 192.168.1.5
示例输出(在" tftp>"提示符下执行以绿色突出显示的命令):
tftp> status Connected to 192.168.1.5. Mode: netascii Verbose: off Tracing: off Rexmt-interval: 5 seconds, Max-timeout: 25 seconds tftp> get openbsd/pxeboot Received 54234 bytes in 0.0 seconds tftp> get openbsd/bsd.rd Received 6465608 bytes in 0.5 seconds tftp> quit
防火墙配置
将防火墙规则添加到防火墙脚本中以打开所需的端口:
## make sure you load the following modules first ## modprobe ip_conntrack_tftp modprobe ip_conntrack_ftp ## firewall rules to open tcp/udp tftpd port 69 for 192.168.1.0/24 ## /sbin/input -A INPUT -s 192.168.1.0/24 -m tcp -p tcp --dport 69 -j ACCEPT /sbin/input -A INPUT -s 192.168.1.0/24 -m tcp -p udp --dport 69 -j ACCEPT