您好,我在 Virtualbox 中安装了 Debian 8 和运行在端口 8000 上的 Web 应用程序。Virtualbox 网络在网络设置中有一个桥接适配器,我可以通过 ssh 从我的电脑连接到那里。Virtualbox 有 ip 地址:192.168.88.65 我的电脑有 ip 地址:192.168.88.51 它在一个站点中。
我希望通过计算机的 8000 端口访问我的 Web 应用程序。但是当我在计算机上运行 nmap 时,我只看到以下端口:
Nmap scan report for test (192.168.88.65)
Host is up (0.0023s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
111/tcp open rpcbind
3306/tcp open mysql
但在 VirtualBox 电脑中却是:
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000030s latency).
Other addresses for localhost (not scanned): 127.0.0.1
Not shown: 996 closed ports
PORT STATE SERVICE
25/tcp open smtp
111/tcp open rpcbind
3306/tcp open mysql
8000/tcp open http-alt
我如何才能从我的计算机上看到端口 8000?
我尝试在 VirtualBox 中运行以下命令,但是不起作用:
root @ debian /root ### iptables -I INPUT -p tcp --dport 8000 -j ACCEPT
root @ debian /root ### iptables-save
# Generated by iptables-save v1.4.21 on Mon Mar 6 10:11:58 2017
*filter
:INPUT ACCEPT [57:123601]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [44:124193]
-A INPUT -p tcp -m tcp --dport 8000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8000 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
COMMIT
# Completed on Mon Mar 6 10:11:58 2017
答案1
您插入的规则iptables
是多余的,因为正如命令的输出iptables-save
所示,INPUT
策略是ACCEPT
,因此允许任何连接。
我可能错了,但我怀疑由于您使用的是桥接适配器,它受制于主机上的防火墙规则,不允许您到达目标端口。
除非您确实需要 VM 内部的桥接适配器,否则我建议切换到 NAT 并简单地使用 VirtualBox 的端口转发功能。
在下面Settings > Network > Adapter 1
将字段“附加到”更改为NAT
。
在“高级”下,点击“端口转发”按钮并添加一个条目:
Name: http (or any name you want)
Protocol: TCP
Host IP: (blank)
Host Port: 8888 (or any port you want)
Guest IP: (blank)
Guest Port: 8000 (match your web app port)
然后,您可以启动您的 VM(客户端),然后从您的主机打开浏览器并通过转到下面的端点访问您的 Web 应用程序(附加您可能需要的任何路径)。
localhost:8888
为了方便起见,如果您的主机是基于 UNIX 的,您可以添加一行如下/etc/hosts
:
127.0.0.1 myapp.com
然后您可以使用:
myapp.com:8888