Networking

Centos 6/7 tftp 伺服器不發送回复

  • August 3, 2021

我正在嘗試啟動並執行一個非常簡單的 TFTP 伺服器,以用作 IPXE 引導伺服器。但是,我似乎所做的一切似乎都無法使伺服器能夠與遠端客戶端進行通信。我可以讓客戶端通過 localhost 進行通信,這似乎工作得很好。

tftp $TFTP_SERVER -c get README

雖然這在本地主機上效果很好,但它破壞了擁有可以遠端交談的伺服器的目的。tftp 配置文件內容如下:

[root@ipxe tmp]# cat /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
       socket_type             = dgram
       protocol                = udp
       wait                    = yes
       user                    = root
       server                  = /usr/sbin/in.tftpd
       server_args             = -vvvvv -c -s /ipxe/
       disable                 = no
       per_source              = 11
       cps                     = 100 2
       flags                   = IPv4
}

注意:出於調試目的,我已完成以下操作:我已禁用防火牆:

[root@ipxe ~]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@ipxe ~]# chkconfig iptables off

我禁用了 SELinux,因為它很糟糕。

$$ root@ipxe tmp $$# 貓 /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

我也重啟了很多次。

無論我似乎嘗試什麼,即使將 CentOS 版本更改為 7 並重複該過程,我可以從 tftp 獲得的最多是:

Jan 30 22:52:01 ipxe xinetd[2013]: START: tftp pid=2265 from=192.168.10.186
Jan 30 22:52:01 ipxe in.tftpd[2266]: RRQ from 192.168.10.186 filename README
Jan 30 22:52:06 ipxe in.tftpd[2267]: RRQ from 192.168.10.186 filename README
Jan 30 22:52:11 ipxe in.tftpd[2268]: RRQ from 192.168.10.186 filename README
Jan 30 22:52:20 ipxe in.tftpd[2269]: RRQ from 192.168.10.186 filename README
Jan 30 22:52:25 ipxe in.tftpd[2270]: RRQ from 192.168.10.186 filename README
Jan 30 22:52:30 ipxe in.tftpd[2271]: RRQ from 192.168.10.186 filename README
Jan 30 22:52:35 ipxe in.tftpd[2272]: RRQ from 192.168.10.186 filename README
Jan 30 22:52:40 ipxe in.tftpd[2275]: RRQ from 192.168.10.186 filename README

我顯然可以 ping 系統並通過 ssh 進入它,而且似乎沒有任何我能看到的網路問題。

天哪,我在這裡想念什麼?診斷問題的下一個邏輯路線是什麼?我幾乎準備好就這個問題送出一個錯誤。

事實證明,在測試 TFTP 時,您必須在伺服器和客戶端的防火牆上打一個洞。這沒有多大意義,因為大多數線上文章都會討論 selinux 以及禁用 tftp 伺服器上的防火牆。

伺服器工作正常,即使我從多種不同的作業系統類型(從 Windows 到 Linux 到 Mac)嘗試了它,所有 3 個不同的 tftp 客戶端都需要在防火牆中設置規則以允許訪問 tftp。

通常,這會在 tftp 伺服器中伴隨著一條消息,該消息會說“沒有到主機的路由”,但由於某種原因省略了該步驟。

如果你和我一樣,即使你已經遵循了所有的方向,也不確定該怎麼做。確保你也在客戶端的防火牆上打了一個洞。

引用自:https://serverfault.com/questions/894903