问题:我的 Ubuntu chroot 中的服务器似乎坏了。无论我尝试运行哪种服务器,它们似乎都没有响应(VLC 服务器不会响应客户端,远程控制不移动光标,Apache 给出有关绑定到端口 80 的错误并且无法启动等)。
如果我没记错的话,chroot 内部通常会发生的情况是,所有端口都在 chroot 和主机之间共享,因此如果另一台机器试图访问主机的 80 端口,它仍会看到 chrooted Web 服务器。然而,这里的情况并非如此。
当我从 chroot 运行 netstat 时,每个进程都列出了外部地址 0.0.0.0:*,这意味着唯一可以充当客户端的机器是本地主机。这显然是错误且不正常的行为,因为我的主要机器上任何应该公开可见的进程都列出了外部地址 :::*(我假设这意味着任何客户端都可以从任何端口看到它)。
编辑:忽略这一点;显然外部地址只区分它是监听 IPv4 还是 IPv6 连接,所以在这里似乎并不相关。
到目前为止,谷歌搜索没有返回任何有价值的信息,我基本上被难住了。有什么想法吗?这可能是 chroot 补丁开发人员默认启用的某些设置,还是看起来是一个更复杂的问题?
谢谢。
更多背景信息:http://rootzwiki.com/topic/14682-webos-servers-inside-chrooted-ubuntu/
答案1
我在 chrooted debian 中运行 boinc 服务。我使用此脚本进行 chroot(参数 1 是位置,如/media/debian
)
#!/bin/sh
mount --bind /dev $1/dev
mount --bind /proc $1/proc
mount --bind /sys $1/sys
[email protected] LANG=C HOME=/root chroot $1
umount $1/dev
umount $1/proc
umount $1/sys
为了重用网络设备,必须重新路由 proc 和 sys。它还适用于使用 apt-get dist-upgradeing 升级双启动的 debian 或使用 yum 升级双启动的 fedora。
答案2
尝试在 chroot 之外发出以下命令。我必须先发出这些命令,然后才能访问 chroot 内提供的任何服务,而且每次都必须发出这些命令。
iptables -F
iptables -P INPUT ACCEPT
iptables -X ALLOWED_PACKETS
iptables -X ICMPFLOOD
iptables -X INVALID_PACKETS
答案3
未来的人们,不要害怕。如果你发现了这个问题,那说明你遇到了一个令人沮丧的问题,正在寻找一个万无一失的解决方案。幸运的是,我在另一个 SE 网站上回答了这个问题。它对 OP 和我都有效。它可以找到这里。