我有一块硬件,我正尝试进行 PXE 启动。目前,它进行 PXE 启动,DHCP 将 TCP/IP 数据租借给端点,然后通过某些 iPXE 固件转到其“下一个服务器”进行 TFTP。
它通过端口 69 建立 TFTP 连接并开始尝试传输固件。这就是我遇到的问题,因为它尝试的“返回”端口被我们公司的防火墙阻止了。
以下是netstat
TFTP 服务器上此时拍摄的照片:
# netstat -tunap | grep tftp
udp 0 0 10.254.52.26:45140 10.55.32.175:2073 ESTABLISHED 25115/in.tftpd
udp 0 0 10.254.52.26:53684 10.55.32.175:2072 ESTABLISHED 25108/in.tftpd
它似乎总是在端点上尝试端口 2073 或 2072。非常一致。
但是,如果我从同一端点上的磁盘加载操作系统并使用 TFTP 客户端进行连接(atftp
在本例中),它会建立连接并下载,没有任何问题。以下是netstat
:
# netstat -tunap | grep tftp
udp 0 0 10.254.52.26:50986 10.55.32.175:44669 ESTABLISHED 26500/in.tftpd
udp 0 0 10.254.52.26:54390 10.55.32.175:44669 ESTABLISHED 26484/in.tftpd
在这种情况下,它使用的端口号一般在 40000 以上,这是我们的防火墙允许的。这也是非常一致的。
我可以请求打开一些额外的端口,但是我真的很想了解为什么会出现这种情况。这与客户端有关吗?这是此场景中唯一似乎发生变化的事情(PXE 客户端固件与atftp
操作系统上的客户端)。
如果有人能提供任何理解,我将非常感激。
答案1
TFTP 定义在RFC 1350。与 FTP 类似,只有第一次联系和命令交换在服务器端使用 UDP 端口 69。所有进一步的传输都使用临时端口(根据平台的不同,可能会有很大差异)。对于已知的 PXE 客户端,这些可能是可以预测的,但一般来说没有规则……
因此,除非您能够在防火墙上允许相关的 UDP“连接”,否则您可能需要允许所有往返于 PXE 服务器的 UDP 传输。实际上,如果您允许所需的传输,然后拒绝其他所有传输,防火墙的效果会好得多。
答案2
RFC 1350 4. 初始连接协议
清楚地解释了客户端和服务器如何选择临时端口。