Debian VM 拒绝除 http 之外的所有流量

Debian VM 拒绝除 http 之外的所有流量

我有一台安装了 Debian (wheezy) 的虚拟机,并在其上安装了 node 和 mongo。虚拟机使用桥接网络连接,因此我希望能够将主机浏览器指向 Debian VM 的 IP 地址(对于我的节点示例,端口为 1337;对于我的 mongo 状态页面,端口为 28017),并查看两个服务之一(node 或 mongo)。但我的请求被拒绝了。

据我所知,Debian 默认允许所有流量,您必须手动配置 iptables 以丢弃流量。我检查了 iptables,它说它设置为允许任何流量通过。它看起来像这样:

root@devbox:/home/jlewis# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   

作为测试,我设置了 nginx,并且能够从我的主机毫无问题地访问 nginx 登录页面,因此显然允许 http 流量。然后,我将 nginx 设置为将所有流量转发到 mongo 上游 - 那里没有问题,我能够看到状态页面。然后,我对我的示例节点服务器执行了同样的操作,同样没有问题。因此,http 流量没有问题,但所有其他流量都被阻止了。

有人知道为什么 debian 可能会拒绝除设置为丢弃的 iptables 之外的所有其他流量吗?

编辑-netstat -nltp 的输出:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:28017         0.0.0.0:*               LISTEN      1762/mongod     
tcp        0      0 0.0.0.0:51028           0.0.0.0:*               LISTEN      1541/rpc.statd  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2462/sshd       
tcp        0      0 127.0.0.1:1337          0.0.0.0:*               LISTEN      2794/node       
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2274/exim4      
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      1762/mongod     
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1510/rpcbind    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2189/nginx      
tcp6       0      0 :::22                   :::*                    LISTEN      2462/sshd       
tcp6       0      0 :::45335                :::*                    LISTEN      1541/rpc.statd  
tcp6       0      0 ::1:25                  :::*                    LISTEN      2274/exim4      
tcp6       0      0 :::111                  :::*                    LISTEN      1510/rpcbind    

答案1

我(还)不能发表评论来寻求澄清...仍在努力维护我的声誉,但我要说的是:

我可以想象以下事情来帮助你找到答案:

  • 尝试验证进程不仅仅监听本地主机(netstat -nltp 和/或 nmap)
  • 仔细查看尝试访问服务时遇到的错误:TCP SYN 包是否丢失?(tcpdump)或者您是否收到了 ICMP 响应?

这应该有助于您获取更多信息,甚至可能完善问题。

[编辑]

正如 netstat 输出所示和评论中所讨论的:监听 127.0.0.1 意味着它们只能从本地主机访问(从 VM 上看到),并且它们应该绑定到 0.0.0.0 或可从物理主机访问的 VM 上的特定 IP。

答案2

您提到的端口 1337 和 28017(以及 25)并未监听所有接口,而只监听 127.0.0.1 或 localhost。因此,本地计算机之外无法访问它们。出于安全原因,这通常是您想要的。

相比之下,端口 22、80、111、45335 和 51028 上的服务绑定到 0.0.0.0 或 ::,因此可供全世界访问。

如果您确实希望这些服务可供全世界访问,那么您必须按照它们各自的配置指令对它们进行配置。

相关内容