Google Compute Engine上的烧瓶-无法从外部/浏览器到达

Rus*_*ler 3 port firewall flask google-compute-engine

我在Compute Engine上设置了一个简单的Flask服务器,该服务器内部运行于127.0.0.1:5000。

如果我在该实例上使用ssh并卷曲127.0.0.1:5000,我会看到hello world消息,并且Flask实例在其日志中显示get。

但是,如果我通过浏览器使用外部ip地址,则表示该站点不存在。

我尝试设置多个diff防火墙,指向0.0.0.0/0或127.0.0.1/0,并同时包括tcp:5000和udp,或者只是tcp或只说允许所有端口。

没用。

我确实尝试运行netstat -plant,它说端口5000已连接到python3(这是我的Flask实例),但是该端口已关闭。

更新:

它可以正常工作,但是只会增加一些日志记录/输出,以防其他人也遇到此问题。

me@instance-1:~$ nmap 1.2.3.4 Starting Nmap 7.40 ( https://nmap.org ) at 2018-08-19 15:30 UTC Nmap scan report for 4.3.2.1.bc.googleusercontent.com (1.2.3.4) Host is up (0.0016s latency). Not shown: 995 filtered ports PORT STATE SERVICE 22/tcp open ssh 80/tcp closed http 443/tcp closed https 3389/tcp closed ms-wbt-server 5000/tcp closed upnp

me@instance-1:~$ netstat -plant (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 29414/python3 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN - tcp 0 1 10.142.0.2:22 118.24.87.43:51760 LAST_ACK - tcp 0 0 10.142.0.2:41788 169.254.169.254:80 CLOSE_WAIT - tcp 0 0 10.142.0.2:41796 169.254.169.254:80 ESTABLISHED - tcp 0 0 127.0.0.1:55258 127.0.0.1:5000 TIME_WAIT - tcp 0 0 10.142.0.2:41794 169.254.169.254:80 ESTABLISHED - tcp 0 0 10.142.0.2:22 74.125.73.96:47952 ESTABLISHED - tcp 0 816 10.142.0.2:22 74.125.73.36:51834 ESTABLISHED - tcp 0 0 10.142.0.2:41792 169.254.169.254:80 ESTABLISHED - tcp6 0 0 :::22 :::* LISTEN -

然后我使用重新启动了烧瓶

flask run --host=0.0.0.0 --port=5000

现在...

me@instance-1:~$ netstat -plant (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 31365/python3 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN - tcp 0 0 10.142.0.2:45802 169.254.169.254:80 ESTABLISHED - tcp 0 0 127.0.0.1:55258 127.0.0.1:5000 TIME_WAIT - tcp 0 0 10.142.0.2:41794 169.254.169.254:80 CLOSE_WAIT - tcp 0 0 10.142.0.2:45804 169.254.169.254:80 ESTABLISHED - tcp 0 0 10.142.0.2:22 74.125.73.96:47952 ESTABLISHED - tcp 0 0 10.142.0.2:45800 169.254.169.254:80 ESTABLISHED - tcp 0 816 10.142.0.2:22 74.125.73.36:51834 ESTABLISHED - tcp6 0 0 :::22 :::* LISTEN - me@instance-1:~$ nmap 1.3.3.4 Starting Nmap 7.40 ( https://nmap.org ) at 2018-08-19 19:24 UTC Nmap scan report for 4.3.2.1.bc.googleusercontent.com (1.2.3.4) Host is up (0.0012s latency). Not shown: 995 filtered ports PORT STATE SERVICE 22/tcp open ssh 80/tcp closed http 443/tcp closed https 3389/tcp closed ms-wbt-server 5000/tcp open upnp Nmap done: 1 IP address (1 host up) scanned in 4.75 seconds

小智 6

我假设您正在使用默认的运行方法,在该方法中提供主机地址为0.0.0.0,它将解决问题

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hi'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)
Run Code Online (Sandbox Code Playgroud)

这将允许您使用IP地址在本地主机之外访问您的网站。

如果您使用烧瓶运行方法,则将其运行为

flask run --host=0.0.0.0 --port=5000
Run Code Online (Sandbox Code Playgroud)