我问过这个问题Unix Stack Exchange,但很快意识到问题不在于 docker,而在于 VirtualBox 或 Windows,所以我在这里询问。
我正在尝试通过 Windows 8.1 上的 Boot2Docker 在运行 Ubuntu 的 Docker 容器中安装 TFTP 服务器(无论是12.04
还是latest
,都会失败)。我的目标是安装多雾路段所以我可以轻松地将它部署在我组织内的几台服务器或笔记本电脑上。
当我在两台 Ubuntu 笔记本电脑上运行我的 docker 镜像时,TFTP 运行良好。我可以通过 PXE 启动,tftp [IP address here] GET boot.txt
在 Windows 或 Linux 上运行等等。
当我在 Windows 8.1 上运行 docker 映像时(我尝试了三台 PC),尽管 VirtualBox 和 Windows 防火墙(反正已被禁用)中的端口 69 处于打开状态,但 TFTP 还是超时了。如果我在tcpdump
容器中运行,并在 Windows 8.1 主机和远程 Windows 8.1 机器上运行 Wireshark,我可以看到 TFTP 数据包离开远程机器、到达主机、到达客户机并离开客户机,但看不到离开主机或到达远程机器。奇怪的是,我可以访问端口 80(FOG 的基于 Web 的控制面板)
iptables
,或者UFW
我的容器中没有安装任何类型的防火墙,所以这让我相信问题出在 VirtualBox 或 Windows 上,但我不知道是哪一个。
我工作用的电脑安装了 McAfee,但家里的电脑根本没有安装 AV,所以不是这个原因。我在这里很困惑。
有什么线索吗?
答案1
我曾见过 Windows 8 阻止某些网络流量,即使本机防火墙关闭!请记住,TFTP 是一种在端口 69 上协商传输的协议,但后来实际的数据传输是在随机选择的端口上进行的。两个端口都必须对流量开放。与其关闭 Windows 防火墙,为什么不尝试创建相应的开放防火墙规则呢?