问题:我的 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
我遇到了同样的问题,我在互联网上搜索答案时发现了这个问题,我刚刚发现了一个解决方案!我试图在我的 TouchPad 上的 chrooted Ubuntu 上运行 Ruby on Rails WEBrick 服务器。令人惊讶的是,我所有的 gem 都正确安装了,我启动了 rails 服务器。我localhost:3000
在 TouchPad 上的浏览器中访问,它很好地加载了我的项目。但是,当我尝试通过访问 导航到桌面上的 TouchPad 服务器时192.168.x.x:3000
,请求超时了。我知道这一定是防火墙问题,但在检查我的 chrooted Ubuntu 时,我意识到防火墙已被禁用,甚至没有安装 iptables。我开始思考,并提出了一个理论,即 WebOS 阻止了所有端口上的通信。我用电脑上的网络扫描仪扫描了端口,没有打开任何端口。它会乒乓作响,但没有端口访问。经过进一步的搜索,我发现 TouchPad 在 WebOS 中使用 iptables。访问 WebOS 背后的底层 Linux 的一个简单方法是使用 XTerm(您可能与 Preware 的 Xecutah 和 XServer 一起安装了它)。只需启动 Xecutah,然后单击“启动 XTerm”。我输入了这些命令以允许 WebOs 的所有端口上的所有访问,这反过来又允许所有端口访问 chrooted Ubuntu:
sudo iptables-save > /firewall.rules
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
如果出现链接错误,请不要担心iptables -X
。如果在完成服务器测试后,您想恢复 WebOS 中的防火墙,只需运行以下命令:
iptables-restore < /firewall.rules
这就是让我的服务器在 chrooted Ubuntu 上运行的全部内容。对你来说应该也一样。