TFTP 连接 Docker 服务器超时

TFTP 连接 Docker 服务器超时

我正在尝试安装多雾路段在我的工作场所使用 Docker(通过 boot2docker for Windows)作为一个学习练习。 FOG 有一个方便的小脚本,可以为您安装所有内容,并且在 Ubuntu 服务器上运行得很好,但我在 Docker 中运行它时遇到了麻烦

我已经使用了 Ubuntu 12.04,因为这是 FOG 的推荐版本。一切似乎都运行良好,我可以tftp localhost在容器中使用get文件,并且我可以在 Windows 8.1 主机中使用 tftpget从容器中获取文件(例如tftp 127.0.0.1 GET boot.txt),但是当我尝试在另一台计算机上执行相同操作时,它只是时间出去。

我尝试过以下操作:

  • 在 boot2docker 中打开 UDP 端口 69(通过 VirtualBox > boot2docker-vm> 设置 > 网络 > 端口转发 > 添加 UDP 端口 69(甚至尝试使用各种本地和访客 IP 地址,例如 0.0.0.0、127.0.0.1 和 10.13.0.14,这是机器的IP地址)
    • 我还添加了一堆UDP端口,包括58162、43595和59037,这是我在Wireshark中查看时在TFTP数据中看到的。最重要的是,我在 Windows 8.1 中使用提升和未提升的权限进行了尝试
  • 完全禁用两端 Windows 8.1 中的防火墙。
  • 将 VirtualBox 中的网络类型设置为桥接模式(它又回到了 NAt,就像以前一样)
  • 在 Docker 内部使用 tcpdump 来确认数据包是从远程计算机传入的(它们是,并且服务器正在发送回复,但数据包没有逃逸容器)
  • 在 Windows 8.1 上使用 Wireshark 查找流量。我可以看到来自远程计算机的 TFTP 数据,但没有回复返回到我的远程计算机
  • 检查 Ubuntu 中是否有防火墙(没有,这是 Docker 的一个相当精简的版本)
  • 尝试从另一台机器访问 FOG 的网络界面(效果很好,我可以向 FOG 添加新图像等)
  • 尝试在 Docker 中的空白 Ubuntu 安装上安装 TFTP 服务器(例如,不运行 FOG 安装脚本)。还是不行
  • 运行我的图像以-p 69:69/udp明确允许端口通过
  • 安装 iptables 以显式放出 UDP 端口 69
  • 检查我的工作网络的防火墙和交换机,看看端口 69 是否被阻止——事实并非如此(因为 TFTP 流量正在到达 docker 主机)
  • 从我的主人那里,我跑了tftp <ip address of another machine on the network running Wireshark> GET boot.txt。我看到 TFTP 流量传入(但因为它没有运行 TFTP 服务器,所以返回了错误)
  • 过去,我们曾在服务器上运行 FOG,但后来它被停用,以便为电子邮件服务器等提供更多资源。
  • 我在我的 Ubuntu 14.04 笔记本电脑上尝试了 docker 映像(因此,使用 14.04 作为主机,使用 docker 容器作为来宾)并且它有效,所以问题似乎出在 Windows 上,尽管我不确定从这里该去哪里

所以问题似乎是 TFTP 数据包没有逃逸 Windows(但 HTTP 流量正在逃逸)。

有什么建议么?

答案1

最后,我最终将 Docker 镜像移动到了我身边的 Ubuntu 笔记本电脑上。现在我的 TFTP 服务器可以在零修改的情况下完美运行,因此问题几乎肯定与 Virtualbox、Windows 或 boot2docker 有关(尽管我不确定最后一个)。

我将在更相关的 stackexchange 上发布我的问题(现在我知道这不是 docker 问题),如果我得到答案,我将更新此问题,以便其他人受益

相关内容