如何在Fedora上建立一個TFTP服務器
TFTP 即簡單文本傳輸協(xié)議,允許用戶通過 UDP 協(xié)議在系統(tǒng)之間傳輸文件。默認情況下,協(xié)議使用的是 UDP 的 69 號端口。TFTP 協(xié)議廣泛用于無盤設備的遠程啟動。因此,在你的本地網(wǎng)絡建立一個 TFTP 服務器,這樣你就可以對 安裝好的 Fedora 和其他無盤設備做一些操作,這將非常有趣。
TFTP 僅僅能夠從遠端系統(tǒng)讀取數(shù)據(jù)或者向遠端系統(tǒng)寫入數(shù)據(jù),而沒有列出遠端服務器上文件的能力。它也沒提供用戶身份驗證。由于安全隱患和缺乏高級功能,TFTP 通常僅用于局域網(wǎng)內(nèi)部(LAN)。
安裝 TFTP 服務器
首先你要做的事就是安裝 TFTP 客戶端和 TFTP 服務器:
dnf install tftp-server tftp -y
上述的這條命令會在 /usr/lib/systemd/system
目錄下為 systemd 創(chuàng)建 tftp.service
和 tftp.socket
文件。
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
接下來,將這兩個文件復制到 /etc/systemd/system
目錄下,并重新命名。
cp /usr/lib/systemd/system/tftp.service /etc/systemd/system/tftp-server.service
cp /usr/lib/systemd/system/tftp.socket /etc/systemd/system/tftp-server.socket
修改文件
當你把這些文件復制和重命名后,你就可以去添加一些額外的參數(shù),下面是 tftp-server.service
剛開始的樣子:
[Unit]
Description=Tftp Server
Requires=tftp.socket
Documentation=man:in.tftpd
[Service]
ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot
StandardInput=socket
[Install]
Also=tftp.socket
在 [Unit]
部分添加如下內(nèi)容:
Requires=tftp-server.socket
修改 [ExecStart]
行:
ExecStart=/usr/sbin/in.tftpd -c -p -s /var/lib/tftpboot
下面是這些選項的意思:
-c
選項允許創(chuàng)建新的文件-p
選項用于指明在正常系統(tǒng)提供的權限檢查之上沒有其他額外的權限檢查-s
建議使用該選項以確保安全性以及與某些引導 ROM 的兼容性,這些引導 ROM 在其請求中不容易包含目錄名。
默認的上傳和下載位置位于 /var/lib/tftpboot
。
下一步,修改 [Install]
部分的內(nèi)容
[Install]
WantedBy=multi-user.target
Also=tftp-server.socket
不要忘記保存你的修改。
下面是 /etc/systemd/system/tftp-server.service
文件的完整內(nèi)容:
[Unit]
Description=Tftp Server
Requires=tftp-server.socket
Documentation=man:in.tftpd
[Service]
ExecStart=/usr/sbin/in.tftpd -c -p -s /var/lib/tftpboot
StandardInput=socket
[Install]
WantedBy=multi-user.target
Also=tftp-server.socket
啟動 TFTP 服務器
重新啟動 systemd 守護進程:
systemctl daemon-reload
啟動服務器:
systemctl enable --now tftp-server
要更改 TFTP 服務器允許上傳和下載的權限,請使用此命令。注意 TFTP 是一種固有的不安全協(xié)議,因此不建議你在與其他人共享的網(wǎng)絡上這樣做。
chmod 777 /var/lib/tftpboot
配置防火墻讓 TFTP 能夠使用:
firewall-cmd --add-service=tftp --perm
firewall-cmd --reload
客戶端配置
安裝 TFTP 客戶端
yum install tftp -y
運行 tftp
命令連接服務器。下面是一個啟用詳細信息選項的例子:
[client@thinclient:~ ]$ tftp 192.168.1.164
tftp> verbose
Verbose mode on.
tftp> get server.logs
getting from 192.168.1.164:server.logs to server.logs [netascii]
Received 7 bytes in 0.0 seconds [inf bits/sec]
tftp> quit
[client@thinclient:~ ]$
記住,因為 TFTP 沒有列出服務器上文件的能力,因此,在你使用 get
命令之前需要知道文件的具體名稱。