是否可以将本地端口重定向到 LAN 端口?

是否可以将本地端口重定向到 LAN 端口?

我正在使用具有虚拟环境的 Flask 应用程序。当我启动服务器时,我可以通过 IP 在本地访问它127.0.0.1:5000,但我想让它在我的WLAN (pointing at 10.0.0.1:5000).我不知道是否可能,虚拟环境使我的服务器沙箱化。

我天真地尝试更改我的/etc/hosts文件

127.0.0.1    10.0.0.2

但是当我启动浏览器时http://10.0.0.2:5000,那是行不通的。 (我仍然可以访问其他服务http://10.0.0.2,但端口 5000 的重定向不起作用)。

我不确定是否正确。非常感谢您的帮助。

编辑 对于虚拟环境,我只是使用虚拟环境,一个处理 python 依赖性的实用程序。然后我安装了Flask-SocketIO。我不确定它是否真的是沙盒的,但事实是我无法连接到端口 5000。

如果我做

sudo nestat -anp | grep 5000

我得到:

tcp     0      0 127.0.0.1:5000      0.0.0.0:*       LISTEN     18541/python

答案1

为什么不让 Flask 监听所有公共 IP。

http://flask.pocoo.org/docs/0.10/quickstart/#a-minimal-application

外部可见的服务器

如果您运行该服务器,您会注意到该服务器只能从您自己的计算机访问,而不能从网络中的任何其他计算机访问。这是默认设置,因为在调试模式下,应用程序的用户可以在您的计算机上执行任意 Python 代码。

如果您已禁用调试或信任网络上的用户,则可以通过简单地将 run() 方法的调用更改为如下所示的方式使服务器公开可用:

app.run(主机='0.0.0.0')

这告诉您的操作系统侦听所有公共 IP。

答案2

/etc/hosts 文件用于名称查找,而不用于 IP 地址到 IP 地址的重定向。此外,如果沙箱有效,您应该无法从 LAN/WLAN 端访问虚拟服务器。我可以建议两种可能的方法来解决您的问题,但可能还有其他方法。

1) 如果虚拟服务器可以配置为软化沙箱 - 即具有非环回 IP 地址,那将是最简单的解决方案。

2)第二种方式需要更多的工作。这需要编写一个在后台运行的简单侦听器/转发器程序,侦听端口 5000 上的实际计算机地址(但不是任意地址),并将数据包转发到 127.0.0.1。如果可行,您可以使用路由器将发送到任意私有 IP 地址:端口(例如 10.0.0.2:5000)的数据包转发到侦听器计算机的地址。

相关内容