我有一块硬件,我正在尝试 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
操作系统上的客户端)。
任何人可以提供的理解将不胜感激。
TFTP 在RFC 1350中定义。与 FTP 类似,只是第一次联系和命令交换使用服务器端的 UDP 端口 69。所有进一步的传输都使用临时端口(可能会有很大差异,具体取决于平台)。这些可能会针对已知的 PXE 客户端进行预测,但通常没有规则...
因此,除非您能够在防火墙上允许相关的 UDP“连接”,否则您可能需要允许所有进出 PXE 服务器的 UDP 传输。真的,如果你允许你需要的东西,然后拒绝其他所有东西,防火墙会更好地工作。
RFC 1350 4. 初始连接协议
清楚地解释了客户端和服务器如何选择临时端口。