模拟 SSH 服务器上的文件配置错误,现在 ping、traceroute 和 Docker 无法在我的主机 VM 上运行。(SSH、apt 和浏览器仍然有效。)

模拟 SSH 服务器上的文件配置错误,现在 ping、traceroute 和 Docker 无法在我的主机 VM 上运行。(SSH、apt 和浏览器仍然有效。)

总结:在班级分配的虚拟机上,退出与模拟 VM 的 SSH 会话后,ping traceroute 和用于访问 Docker 容器/模拟 VM 的原始脚本停止工作。此程序从我班级分配的主机 VM 中的 Docker 容器运行。主机 VM 在 Ubuntu 上运行。

我需要修复 ping、traceroute 以及访问原始脚本和模拟 VM 的能力,以便修复学校分配的远程桌面并继续完成课堂作业。完全重置桌面环境并不能解决问题。SSH 连接,浏览器工作正常,traceroute 运行正常,但结果是 30 个跳转,每个跳转有三个星号。

退出模拟虚拟机的 SSH 会话后,所有这些问题都立即出现。有几件事我还没有缩小范围(ARP 表和套接字接口——我明天会回来更新。)希望这至少能让问题更简洁。


语境

我正在使用班级分配的虚拟机进行工作,在退出用于模拟该班级分配的桌面环境中的另一个虚拟机的程序时遇到了问题。以下详细信息是我正在做的家庭作业的一部分,并且都是在原始班级分配的 VM 中的模拟 VM 中完成的。

我无法返回评估我在目标机器上更改的确切文件和设置,因为在我的主机上设置模拟 SSH 服务器/VM/Docker 容器的脚本没有启动。

这是我在返回主机 VM 之前在模拟 VM 上所做的事情。

  • 我创建了一个没有主文件夹、root 权限且 UID 和 GID 低于 1000 的用户。

  • 我配置了 sudoers 文件以允许无需密码的 root 访问。

  • 我更改了sshd_config文件以允许 ssh 访问端口 22 以外的端口。

    sshd_config在目标机器上格式化文件时,我犯了一个错误,用端口 2222 覆盖了端口 22。

这是通过在当前端口列表下添加额外的行来完成的,如下所示sshd_config

#Port 22
#Port 2222

当我编辑文件时,端口 22 被注释掉了,并且我能够通过端口 22 访问目标机器而没有任何问题,所以我当时并没有多想。

我不知道为什么注释端口仍然可以运行,而且我也不明白这会导致我的主机虚拟机当前遇到的问题。

我的主机虚拟机上的端口已打开并正在运行。

这可能是微不足道的额外信息,但我在进行这些更改并退出目标机器后立即注意到了主机上的问题。在我开始与目标机器交互之前,这些问题并不存在。如果仅仅因为不正确地进入或退出带有 Docker 容器的 SSH 会话而出现问题,那么这比将会话本身与当前问题联系起来更有可能成为解决方案。

Docker/启动模拟虚拟机的问题

在这种情况下,需要 Docker 来访问目标机器,因为它是从脚本运行的 SSH 服务器的模拟。如果没有此功能,我将无法访问目标机器,也无法排除我在目标机器上所做的更改与主机上的问题之间的关联。

模拟虚拟机启动消息表明 Docker 正在运行,但未启动访问目标机器所需的脚本。以下是错误消息:

应用程序无法启动。出现问题。

尝试重新启动 VM,然后重新启动 Docker。

然后再次运行该脚本。

重新启动 Docker 不会改变此消息的状态,重新启动也不会改变或者重置机器。目标机器上运行的脚本可能存在问题,但我自己检查时没有发现任何问题,更不用说会弄乱我的主机虚拟机,以至于完全重置无法解决问题的问题了。

Ping 和 Traceroute 的问题

当我尝试 ping 大多数 IP 时,它在第一行就停滞了,而且我必须手动退出该过程,因为我没有收到失败消息。

使用ping -c 3 -w 12 1.1.1.1限制ping请求的次数和截止时间显示:

PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
--- 1.1.1.1 ping statistics ---
12 packets transmitted, 0 received, 100% >packet loss, time 11249ms

可以 ping localhost 和 127.0.0.1,ping 0.0.0.0 也正常。内部防火墙已禁用,ICMP 已启用。

当我使用示例接口 ping 命令时,ping -I interface google.com我得到了以下输出

ping: SO_BINDTODEVICE interface: No such device

如果您有套接字编程经验,那么这里的建议将非常宝贵,因为我认为这可能是出现问题的地方。

Traceroute 运行,但唯一的输出是 30 个跳数,每个跳数显示三个星号。

尝试的解决方案

我本地机器上的配置文件并不反映我在目标机器上记录的配置文件更改,因此对目标机器设置的任何篡改都不应该影响本地机器,而且我也没有意外地更改本地机器上的配置而以为它是目标机器。

能够 ping 通 localhost 和 127.0.0.1,并且 ping 0.0.0.0 也可以。

内部防火墙已禁用,并且 ICMP 已启用。

我对本地虚拟机进行了完全系统重置,但 ping、traceroute 和 Docker/模拟虚拟机仍然出现故障。即使在完全系统重置后配置问题仍然存在,这让我非常困惑,但可能会缩小原因范围。是否存在系统设置或网络故障,在完全系统重置后仍保持一致?

我有虚拟机的替代方案,但我仍然认为这是一个时间敏感的问题,因为我无法将备份虚拟机用于某些项目。我将编辑问题,并在研究潜在选项时提供更多我已经尝试过的解决方案。

尚未尝试的潜在解决方案

套接字配置。

ARP 表配置。

进一步调查模拟虚拟机启动过程以及其具体失败之处。

进一步调查为什么尽管系统已完全重置,但问题仍然存在。

我不需要全面的答案,只需要正确的方向!明天会继续更新。还有很多事情需要排除。

答案1

这个问题已经解决,将留给后人参考。主机虚拟机从未配置为正确运行 ping,我没有考虑到这一点,因为我忙于尝试不同的 ping 故障排除角度,同时假设我破坏了配置文件中的某些基本功能。

我联系了该课程的老师,他重置了主机虚拟机,修复了用于启动模拟虚拟机的 Docker 容器,并澄清了 ping 和 traceroute 的问题是系统本身的一部分。

我稍后可能会特别询问有关套接字编程的更多问题,但最终它与当前的情况无关。

相关内容