如何在防火墙中打开传入端口50070(谷歌计算引擎)

我在Google Compute Engine实例上安装了我的单节点Hadoop,我想在该计算机上打开端口50070以访问hadoop仪表板 . 我在防火墙规则中将其配置为计算引擎网络中的 tcp:50070 . 但我仍然无法访问网络外的端口(即通过互联网) . 我为我的GCE实例的公共ip尝试了nmap,我得到的结果只有ssh端口被打开所有其他端口被过滤 .

注意:我正在使用debian 7.5图像

回答(3)

2 years ago

确保您的守护程序正在侦听端口50070.如果您的项目中有多个网络,请确保在正确的网络上打开该端口 . 您可以运行以下命令来检查有关实例和网络的信息 . lsof -i gcutil --project = getinstance gcutil --project = listnetworks gcutil --project = listfirewalls gcutil --project = getfirewall

2 years ago

检查iptables中是否允许IP /端口 .

iptables -L

会告诉你所有的记录 .

要在iptables中允许端口,您可以执行以下操作:

sudo iptables -A INPUT -p tcp -m tcp --dport 50070 -j ACCEPT
sudo iptables-save -c

2 years ago

简答

除了在GCE Web控制台上配置防火墙规则外,还要确保您的服务器正在 0.0.0.0 而不是 127.0.0.1 进行监听

答案很长

在服务器环境中,0.0.0.0表示本地计算机上的所有IPv4地址 . 如果主机有两个IP地址,192.168.1.1和10.1.2.1,并且主机上运行的服务器侦听0.0.0.0,则可以在这两个IP上访问它 - 源

相反, 127.0.0.1 是用于 Build 与用户使用的同一台机器的连接的IP地址,该地址通常称为localhost .

当您希望具有网络功能的应用程序仅为同一主机上的客户端提供服务时,通常会使用它 . 正在侦听127.0.0.1连接的进程只接收该套接字上的本地连接 . - 资源

因此,如果您尝试通过Internet Build 与服务器的连接,并且您的服务器正在您的GCE计算机上侦听127.0.0.1,那么从服务器的角度来看,从未收到过请求,因此Goocle Cloud Firewall将拒绝连接,因为没有服务器监听打开的端口(在您的情况下 50070 ) .

我希望这个答案有助于解决您的问题 . 最好的祝福 .